src/HOL/Tools/recdef_package.ML
changeset 27809 a1e409db516b
parent 27727 2397e310b2cc
child 28083 103d9282a946
equal deleted inserted replaced
27808:4dd3d5efcc7f 27809:a1e409db516b
   293 local structure P = OuterParse and K = OuterKeyword in
   293 local structure P = OuterParse and K = OuterKeyword in
   294 
   294 
   295 val _ = List.app OuterKeyword.keyword ["permissive", "congs", "hints"];
   295 val _ = List.app OuterKeyword.keyword ["permissive", "congs", "hints"];
   296 
   296 
   297 val hints =
   297 val hints =
   298   P.$$$ "(" |-- P.!!! (P.position (P.$$$ "hints" -- P.arguments) --| P.$$$ ")") >> Args.src;
   298   P.$$$ "(" |-- P.!!! (P.position (P.$$$ "hints" -- Args.parse) --| P.$$$ ")") >> Args.src;
   299 
   299 
   300 val recdef_decl =
   300 val recdef_decl =
   301   Scan.optional (P.$$$ "(" -- P.!!! (P.$$$ "permissive" -- P.$$$ ")") >> K false) true --
   301   Scan.optional (P.$$$ "(" -- P.!!! (P.$$$ "permissive" -- P.$$$ ")") >> K false) true --
   302   P.name -- P.term -- Scan.repeat1 (SpecParse.opt_thm_name ":" -- P.prop) -- Scan.option hints
   302   P.name -- P.term -- Scan.repeat1 (SpecParse.opt_thm_name ":" -- P.prop) -- Scan.option hints
   303   >> (fn ((((p, f), R), eqs), src) => #1 o add_recdef p f R (map P.triple_swap eqs) src);
   303   >> (fn ((((p, f), R), eqs), src) => #1 o add_recdef p f R (map P.triple_swap eqs) src);