equal
deleted
inserted
replaced
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 |
213 val distinct_simproc = |
213 val distinct_simproc = |
214 Simplifier.simproc_global @{theory HOL} "StateSpace.distinct_simproc" ["x = y"] |
214 Simplifier.make_simproc @{context} "StateSpace.distinct_simproc" |
215 (fn ctxt => (fn (Const (@{const_name HOL.eq},_)$(x as Free _)$(y as Free _)) => |
215 {lhss = [@{term "x = y"}], |
216 Option.map (fn neq => DistinctTreeProver.neq_to_eq_False OF [neq]) (neq_x_y ctxt x y) |
216 proc = fn _ => fn ctxt => fn ct => |
217 | _ => NONE)); |
217 (case Thm.term_of ct of |
|
218 Const (@{const_name HOL.eq},_) $ (x as Free _) $ (y as Free _) => |
|
219 Option.map (fn neq => DistinctTreeProver.neq_to_eq_False OF [neq]) |
|
220 (neq_x_y ctxt x y) |
|
221 | _ => NONE), |
|
222 identifier = []}; |
218 |
223 |
219 fun interprete_parent name dist_thm_name parent_expr thy = |
224 fun interprete_parent name dist_thm_name parent_expr thy = |
220 let |
225 let |
221 fun solve_tac ctxt = CSUBGOAL (fn (goal, i) => |
226 fun solve_tac ctxt = CSUBGOAL (fn (goal, i) => |
222 let |
227 let |