equal
deleted
inserted
replaced
202 (case goal of |
202 (case goal of |
203 Const (@{const_name Trueprop}, _) $ |
203 Const (@{const_name Trueprop}, _) $ |
204 (Const (@{const_name Not}, _) $ |
204 (Const (@{const_name Not}, _) $ |
205 (Const (@{const_name HOL.eq}, _) $ (x as Free _) $ (y as Free _))) => |
205 (Const (@{const_name HOL.eq}, _) $ (x as Free _) $ (y as Free _))) => |
206 (case neq_x_y ctxt x y of |
206 (case neq_x_y ctxt x y of |
207 SOME neq => rtac neq i |
207 SOME neq => resolve_tac ctxt [neq] i |
208 | NONE => no_tac) |
208 | NONE => no_tac) |
209 | _ => no_tac)); |
209 | _ => no_tac)); |
210 |
210 |
211 val distinctNameSolver = mk_solver "distinctNameSolver" distinctTree_tac; |
211 val distinctNameSolver = mk_solver "distinctNameSolver" distinctTree_tac; |
212 |
212 |
220 let |
220 let |
221 fun solve_tac ctxt = CSUBGOAL (fn (goal, i) => |
221 fun solve_tac ctxt = CSUBGOAL (fn (goal, i) => |
222 let |
222 let |
223 val distinct_thm = Proof_Context.get_thm ctxt dist_thm_name; |
223 val distinct_thm = Proof_Context.get_thm ctxt dist_thm_name; |
224 val rule = DistinctTreeProver.distinct_implProver ctxt distinct_thm goal; |
224 val rule = DistinctTreeProver.distinct_implProver ctxt distinct_thm goal; |
225 in rtac rule i end); |
225 in resolve_tac ctxt [rule] i end); |
226 |
226 |
227 fun tac ctxt = |
227 fun tac ctxt = |
228 Locale.intro_locales_tac true ctxt [] THEN ALLGOALS (solve_tac ctxt); |
228 Locale.intro_locales_tac true ctxt [] THEN ALLGOALS (solve_tac ctxt); |
229 |
229 |
230 in |
230 in |