equal
deleted
inserted
replaced
343 fun distinctTree_tac names ctxt = SUBGOAL (fn (goal, i) => |
343 fun distinctTree_tac names ctxt = SUBGOAL (fn (goal, i) => |
344 (case goal of |
344 (case goal of |
345 Const (@{const_name Trueprop}, _) $ |
345 Const (@{const_name Trueprop}, _) $ |
346 (Const (@{const_name Not}, _) $ (Const (@{const_name HOL.eq}, _) $ x $ y)) => |
346 (Const (@{const_name Not}, _) $ (Const (@{const_name HOL.eq}, _) $ x $ y)) => |
347 (case get_fst_success (neq_x_y ctxt x y) names of |
347 (case get_fst_success (neq_x_y ctxt x y) names of |
348 SOME neq => rtac neq i |
348 SOME neq => resolve_tac ctxt [neq] i |
349 | NONE => no_tac) |
349 | NONE => no_tac) |
350 | _ => no_tac)) |
350 | _ => no_tac)) |
351 |
351 |
352 fun distinctFieldSolver names = |
352 fun distinctFieldSolver names = |
353 mk_solver "distinctFieldSolver" (distinctTree_tac names); |
353 mk_solver "distinctFieldSolver" (distinctTree_tac names); |