equal
deleted
inserted
replaced
647 let |
647 let |
648 (* When the theorem is atomized, eta redexes are contracted, |
648 (* When the theorem is atomized, eta redexes are contracted, |
649 so we do it both in the original theorem *) |
649 so we do it both in the original theorem *) |
650 val thm' = Drule.eta_contraction_rule thm |
650 val thm' = Drule.eta_contraction_rule thm |
651 val ((_, [thm'']), ctxt') = Variable.import false [thm'] ctxt |
651 val ((_, [thm'']), ctxt') = Variable.import false [thm'] ctxt |
652 val goal = derive_qtrm qtys (prop_of thm'') ctxt' |
652 val goal = derive_qtrm qtys (prop_of thm'') false ctxt' |
653 in |
653 in |
654 Goal.prove ctxt' [] [] goal (K (lift_tac ctxt' [thm'] 1)) |
654 Goal.prove ctxt' [] [] goal (K (lift_tac ctxt' [thm'] 1)) |
655 |> singleton (ProofContext.export ctxt' ctxt) |
655 |> singleton (ProofContext.export ctxt' ctxt) |
656 end; |
656 end; |
657 |
657 |