src/Pure/Proof/proof_checker.ML
changeset 74228 c22e5bdb207d
parent 71777 3875815f5967
child 74232 1091880266e5
equal deleted inserted replaced
74227:fdcc7e8f95ea 74228:c22e5bdb207d
    74       let
    74       let
    75         val prf_names = Proofterm.fold_proof_terms Term.declare_term_frees prf Name.context;
    75         val prf_names = Proofterm.fold_proof_terms Term.declare_term_frees prf Name.context;
    76 
    76 
    77         fun thm_of_atom thm Ts =
    77         fun thm_of_atom thm Ts =
    78           let
    78           let
    79             val tvars = Term.add_tvars (Thm.full_prop_of thm) [] |> rev;
    79             val tvars = rev (Term.add_tvars (Thm.full_prop_of thm) []);
    80             val (fmap, thm') = Thm.varifyT_global' [] thm;
    80             val (fmap, thm') = Thm.varifyT_global' [] thm;
    81             val ctye =
    81             val ctye =
    82               (tvars @ map (fn ((_, S), ixn) => (ixn, S)) fmap ~~ map (Thm.global_ctyp_of thy) Ts);
    82               (tvars @ map (fn ((_, S), ixn) => (ixn, S)) fmap ~~ map (Thm.global_ctyp_of thy) Ts);
    83           in
    83           in
    84             Thm.instantiate (ctye, []) (forall_intr_vars (Thm.forall_intr_frees thm'))
    84             Thm.instantiate (ctye, []) (forall_intr_vars (Thm.forall_intr_frees thm'))