equal
deleted
inserted
replaced
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')) |