src/Pure/thm.ML
changeset 623 ca9f5dbab880
parent 622 bf9821f58781
child 659 95ed2ccb4438
equal deleted inserted replaced
622:bf9821f58781 623:ca9f5dbab880
   190 (*read term, infer types, certify term*)
   190 (*read term, infer types, certify term*)
   191 fun read_def_cterm (sign, types, sorts) (a, T) =
   191 fun read_def_cterm (sign, types, sorts) (a, T) =
   192   let
   192   let
   193     val T' = Sign.certify_typ sign T
   193     val T' = Sign.certify_typ sign T
   194       handle TYPE (msg, _, _) => error msg;
   194       handle TYPE (msg, _, _) => error msg;
   195     val t = Syntax.read (#syn (Sign.rep_sg sign)) T' a;
   195     val ts = Syntax.read (#syn (Sign.rep_sg sign)) T' a;
   196     val (t', tye) = Sign.infer_types sign types sorts (t, T');
   196     val (_, t', tye) = Sign.infer_types sign types sorts true (ts, T');
   197     val ct = cterm_of sign t'
   197     val ct = cterm_of sign t'
   198       handle TERM (msg, _) => error msg;
   198       handle TERM (msg, _) => error msg;
   199   in (ct, tye) end;
   199   in (ct, tye) end;
   200 
   200 
   201 fun read_cterm sign = #1 o read_def_cterm (sign, K None, K None);
   201 fun read_cterm sign = #1 o read_def_cterm (sign, K None, K None);
   356 fun read_axm sg (name, str) =
   356 fun read_axm sg (name, str) =
   357   (name, no_vars (term_of (read_cterm sg (str, propT))))
   357   (name, no_vars (term_of (read_cterm sg (str, propT))))
   358     handle ERROR => err_in_axm name;
   358     handle ERROR => err_in_axm name;
   359 
   359 
   360 fun inferT_axm sg (name, pre_tm) =
   360 fun inferT_axm sg (name, pre_tm) =
   361   (name, no_vars (#1 (Sign.infer_types sg (K None) (K None) (pre_tm, propT))))
   361  (name, no_vars (#2 (Sign.infer_types sg (K None) (K None) true ([pre_tm], propT))))
   362     handle ERROR => err_in_axm name;
   362     handle ERROR => err_in_axm name;
   363 
   363 
   364 
   364 
   365 (* extend axioms of a theory *)
   365 (* extend axioms of a theory *)
   366 
   366