src/HOL/Tools/datatype_package.ML
changeset 24867 e5b55d7be9bb
parent 24830 a7b3ab44d993
child 24959 119793c84647
     1.1 --- a/src/HOL/Tools/datatype_package.ML	Sat Oct 06 16:41:22 2007 +0200
     1.2 +++ b/src/HOL/Tools/datatype_package.ML	Sat Oct 06 16:50:04 2007 +0200
     1.3 @@ -908,6 +908,8 @@
     1.4  
     1.5  local structure P = OuterParse and K = OuterKeyword in
     1.6  
     1.7 +val _ = OuterSyntax.keywords ["distinct", "inject", "induction"];
     1.8 +
     1.9  val datatype_decl =
    1.10    Scan.option (P.$$$ "(" |-- P.name --| P.$$$ ")") -- P.type_args -- P.name -- P.opt_infix --
    1.11      (P.$$$ "=" |-- P.enum1 "|" (P.name -- Scan.repeat P.typ -- P.opt_mixfix));
    1.12 @@ -919,7 +921,7 @@
    1.13        (vs, t, mx, map (fn ((x, y), z) => (x, y, z)) cons)) args;
    1.14    in snd o add_datatype false names specs end;
    1.15  
    1.16 -val datatypeP =
    1.17 +val _ =
    1.18    OuterSyntax.command "datatype" "define inductive datatypes" K.thy_decl
    1.19      (P.and_list1 datatype_decl >> (Toplevel.theory o mk_datatype));
    1.20  
    1.21 @@ -932,14 +934,10 @@
    1.22  
    1.23  fun mk_rep_datatype (((opt_ts, dss), iss), ind) = #2 o rep_datatype opt_ts dss iss ind;
    1.24  
    1.25 -val rep_datatypeP =
    1.26 +val _ =
    1.27    OuterSyntax.command "rep_datatype" "represent existing types inductively" K.thy_decl
    1.28      (rep_datatype_decl >> (Toplevel.theory o mk_rep_datatype));
    1.29  
    1.30 -
    1.31 -val _ = OuterSyntax.add_keywords ["distinct", "inject", "induction"];
    1.32 -val _ = OuterSyntax.add_parsers [datatypeP, rep_datatypeP];
    1.33 -
    1.34  end;
    1.35  
    1.36