equal
deleted
inserted
replaced
79 val tvars = build_rev (Term.add_tvars (Thm.full_prop_of thm)); |
79 val tvars = build_rev (Term.add_tvars (Thm.full_prop_of thm)); |
80 val (fmap, thm') = Thm.varifyT_global' TFrees.empty thm; |
80 val (fmap, thm') = Thm.varifyT_global' TFrees.empty 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, []) (Thm.forall_intr_vars (Thm.forall_intr_frees thm')) |
84 Thm.instantiate (TVars.make ctye, Vars.empty) |
|
85 (Thm.forall_intr_vars (Thm.forall_intr_frees thm')) |
85 end; |
86 end; |
86 |
87 |
87 fun thm_of _ _ (PThm ({name, prop = prop', types = SOME Ts, ...}, _)) = |
88 fun thm_of _ _ (PThm ({name, prop = prop', types = SOME Ts, ...}, _)) = |
88 let |
89 let |
89 val thm = Thm.unconstrainT (Drule.implies_intr_hyps (lookup name)); |
90 val thm = Thm.unconstrainT (Drule.implies_intr_hyps (lookup name)); |