src/HOL/Tools/typedef.ML
changeset 59936 b8ffc3dc9e24
parent 59880 30687c3f2b10
child 61103 8ed21464e260
equal deleted inserted replaced
59935:343905de27b1 59936:b8ffc3dc9e24
   279 
   279 
   280 
   280 
   281 (** outer syntax **)
   281 (** outer syntax **)
   282 
   282 
   283 val _ =
   283 val _ =
   284   Outer_Syntax.local_theory_to_proof @{command_spec "typedef"}
   284   Outer_Syntax.local_theory_to_proof @{command_keyword typedef}
   285     "HOL type definition (requires non-emptiness proof)"
   285     "HOL type definition (requires non-emptiness proof)"
   286     (Parse.type_args_constrained -- Parse.binding -- Parse.opt_mixfix --
   286     (Parse.type_args_constrained -- Parse.binding -- Parse.opt_mixfix --
   287       (@{keyword "="} |-- Parse.term) --
   287       (@{keyword "="} |-- Parse.term) --
   288       Scan.option (@{keyword "morphisms"} |-- Parse.!!! (Parse.binding -- Parse.binding))
   288       Scan.option (@{keyword "morphisms"} |-- Parse.!!! (Parse.binding -- Parse.binding))
   289     >> (fn ((((vs, t), mx), A), morphs) => fn lthy => typedef_cmd ((t, vs, mx), A, morphs) lthy));
   289     >> (fn ((((vs, t), mx), A), morphs) => fn lthy => typedef_cmd ((t, vs, mx), A, morphs) lthy));