--- a/src/HOL/Tools/datatype_package.ML Wed Jun 18 18:55:08 2008 +0200
+++ b/src/HOL/Tools/datatype_package.ML Wed Jun 18 18:55:10 2008 +0200
@@ -544,7 +544,7 @@
end;
val rep_datatype = gen_rep_datatype Sign.cert_term;
-val rep_datatype_cmd = gen_rep_datatype Sign.read_term (K I);
+val rep_datatype_cmd = gen_rep_datatype Syntax.read_term_global (K I);
--- a/src/ZF/Tools/datatype_package.ML Wed Jun 18 18:55:08 2008 +0200
+++ b/src/ZF/Tools/datatype_package.ML Wed Jun 18 18:55:10 2008 +0200
@@ -405,12 +405,15 @@
fun add_datatype (sdom, srec_tms) scon_ty_lists (raw_monos, raw_type_intrs, raw_type_elims) thy =
let
val ctxt = ProofContext.init thy;
- val read_i = Sign.simple_read_term thy @{typ i};
- val rec_tms = map read_i srec_tms;
- val con_ty_lists = Ind_Syntax.read_constructs thy scon_ty_lists;
+ fun read_is strs =
+ map (Syntax.parse_term ctxt #> TypeInfer.constrain @{typ i}) strs
+ |> Syntax.check_terms ctxt;
+
+ val rec_tms = read_is srec_tms;
+ val con_ty_lists = Ind_Syntax.read_constructs ctxt scon_ty_lists;
val dom_sum =
if sdom = "" then data_domain coind (rec_tms, con_ty_lists)
- else read_i sdom;
+ else singleton read_is sdom;
val monos = Attrib.eval_thms ctxt raw_monos;
val type_intrs = Attrib.eval_thms ctxt raw_type_intrs;
val type_elims = Attrib.eval_thms ctxt raw_type_elims;
--- a/src/ZF/Tools/inductive_package.ML Wed Jun 18 18:55:08 2008 +0200
+++ b/src/ZF/Tools/inductive_package.ML Wed Jun 18 18:55:10 2008 +0200
@@ -277,7 +277,8 @@
(Thm.assume A RS elim)
|> Drule.standard';
fun mk_cases a = make_cases (*delayed evaluation of body!*)
- (simpset ()) (Thm.read_cterm (Thm.theory_of_thm elim) (a, propT));
+ (simpset ())
+ let val thy = Thm.theory_of_thm elim in cterm_of thy (Syntax.read_prop_global thy a) end;
fun induction_rules raw_induct thy =
let
--- a/src/ZF/ind_syntax.ML Wed Jun 18 18:55:08 2008 +0200
+++ b/src/ZF/ind_syntax.ML Wed Jun 18 18:55:10 2008 +0200
@@ -66,8 +66,9 @@
| dest_mem _ = error "Constructor specifications must have the form x:A";
(*read a constructor specification*)
-fun read_construct sign (id, sprems, syn) =
- let val prems = map (Sign.simple_read_term sign FOLogic.oT) sprems
+fun read_construct ctxt (id, sprems, syn) =
+ let val prems = map (Syntax.parse_term ctxt #> TypeInfer.constrain FOLogic.oT) sprems
+ |> Syntax.check_terms ctxt
val args = map (#1 o dest_mem) prems
val T = (map (#2 o dest_Free) args) ---> iT
handle TERM _ => error