diff -r ea27275eba9a -r 44045c743bfe IntEx.thy --- a/IntEx.thy Tue Nov 24 12:25:04 2009 +0100 +++ b/IntEx.thy Tue Nov 24 13:46:36 2009 +0100 @@ -195,11 +195,13 @@ val thy = ProofContext.theory_of ctxt val rtrm' = HOLogic.dest_Trueprop rtrm val qtrm' = HOLogic.dest_Trueprop qtrm + val reg_goal = Syntax.check_term ctxt (REGULARIZE_trm ctxt rtrm' qtrm') + val inj_goal = Syntax.check_term ctxt (inj_REPABS ctxt (reg_goal, qtrm')) in Drule.instantiate' [] [SOME (cterm_of thy rtrm'), - SOME (cterm_of thy (Syntax.check_term ctxt (REGULARIZE_trm ctxt rtrm' qtrm'))), - SOME (cterm_of thy (Syntax.check_term ctxt (inj_REPABS ctxt (rtrm', qtrm'))))] + SOME (cterm_of thy reg_goal), + SOME (cterm_of thy inj_goal)] @{thm procedure} end @@ -215,7 +217,40 @@ lemma "\i j k. PLUS (PLUS i j) k = PLUS i (PLUS j k)" apply(tactic {* procedure_tac @{thm plus_assoc_pre} @{context} 1 *}) -sorry +thm FORALL_PRS +prefer 3 +(* phase 1 *) +apply(subst FORALL_PRS[symmetric]) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(subst FORALL_PRS[symmetric]) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(subst FORALL_PRS[symmetric]) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(subst LAMBDA_PRS) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(fold id_def) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(subst LAMBDA_PRS) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(fold id_def) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(subst LAMBDA_PRS) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +apply(fold id_def) +apply(tactic {* quotient_tac @{thm QUOTIENT_my_int} 1 *}) +(* phase 2 *) +ML_prf {* + val lower = add_lower_defs @{context} @{thm PLUS_def} +*} +apply(tactic {* EqSubst.eqsubst_tac @{context} [0] lower 1*}) +apply(tactic {* EqSubst.eqsubst_tac @{context} [0] lower 1*}) +apply(tactic {* EqSubst.eqsubst_tac @{context} [0] lower 1*}) +apply(tactic {* EqSubst.eqsubst_tac @{context} [0] lower 1*}) +(* phase 3 *) +apply(subst QUOT_TYPE_I_my_int.REPS_same) +apply(rule refl) + + (*