equal
deleted
inserted
replaced
93 |
93 |
94 fun tac ctxt = SUBGOAL (fn (g, i) => |
94 fun tac ctxt = SUBGOAL (fn (g, i) => |
95 let |
95 let |
96 val cring_ctxt = ctxt addsimps cring_simps; (*FIXME really the full simpset!?*) |
96 val cring_ctxt = ctxt addsimps cring_simps; (*FIXME really the full simpset!?*) |
97 val (ca, cvs, clhs, crhs) = reif_eq ctxt (HOLogic.dest_Trueprop g); |
97 val (ca, cvs, clhs, crhs) = reif_eq ctxt (HOLogic.dest_Trueprop g); |
98 val norm_eq_th = |
98 val norm_eq_th = (* may collapse to True *) |
99 simplify cring_ctxt (instantiate' [SOME ca] [SOME clhs, SOME crhs, SOME cvs] @{thm norm_eq}); |
99 simplify cring_ctxt (instantiate' [SOME ca] [SOME clhs, SOME crhs, SOME cvs] @{thm norm_eq}); |
100 in |
100 in |
101 cut_tac norm_eq_th i |
101 cut_tac norm_eq_th i |
102 THEN (simp_tac cring_ctxt i) |
102 THEN (simp_tac cring_ctxt i) |
103 THEN (simp_tac cring_ctxt i) |
103 THEN TRY(simp_tac cring_ctxt i) |
104 end); |
104 end); |
105 |
105 |
106 end; |
106 end; |