src/HOL/Statespace/state_space.ML
changeset 60754 02924903a6fd
parent 60327 a3f565b8ba76
child 61144 5e94dfead1c2
equal deleted inserted replaced
60753:80ca4a065a48 60754:02924903a6fd
   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