equal
deleted
inserted
replaced
851 val Fake_insert_tac = |
851 val Fake_insert_tac = |
852 dresolve_tac [impOfSubs @{thm Fake_analz_insert}, |
852 dresolve_tac [impOfSubs @{thm Fake_analz_insert}, |
853 impOfSubs @{thm Fake_parts_insert}] THEN' |
853 impOfSubs @{thm Fake_parts_insert}] THEN' |
854 eresolve_tac [asm_rl, @{thm synth.Inj}]; |
854 eresolve_tac [asm_rl, @{thm synth.Inj}]; |
855 |
855 |
856 fun Fake_insert_simp_tac ss i = |
856 fun Fake_insert_simp_tac ctxt i = |
857 REPEAT (Fake_insert_tac i) THEN asm_full_simp_tac ss i; |
857 REPEAT (Fake_insert_tac i) THEN asm_full_simp_tac ctxt i; |
858 |
858 |
859 fun atomic_spy_analz_tac ctxt = |
859 fun atomic_spy_analz_tac ctxt = |
860 SELECT_GOAL |
860 SELECT_GOAL |
861 (Fake_insert_simp_tac (simpset_of ctxt) 1 THEN |
861 (Fake_insert_simp_tac ctxt 1 THEN |
862 IF_UNSOLVED |
862 IF_UNSOLVED |
863 (Blast.depth_tac (ctxt addIs [@{thm analz_insertI}, |
863 (Blast.depth_tac (ctxt addIs [@{thm analz_insertI}, |
864 impOfSubs @{thm analz_subset_parts}]) 4 1)); |
864 impOfSubs @{thm analz_subset_parts}]) 4 1)); |
865 |
865 |
866 fun spy_analz_tac ctxt i = |
866 fun spy_analz_tac ctxt i = |
869 (EVERY |
869 (EVERY |
870 [ (*push in occurrences of X...*) |
870 [ (*push in occurrences of X...*) |
871 (REPEAT o CHANGED) |
871 (REPEAT o CHANGED) |
872 (res_inst_tac ctxt [(("x", 1), "X")] (insert_commute RS ssubst) 1), |
872 (res_inst_tac ctxt [(("x", 1), "X")] (insert_commute RS ssubst) 1), |
873 (*...allowing further simplifications*) |
873 (*...allowing further simplifications*) |
874 simp_tac (simpset_of ctxt) 1, |
874 simp_tac ctxt 1, |
875 REPEAT (FIRSTGOAL (resolve_tac [allI,impI,notI,conjI,iffI])), |
875 REPEAT (FIRSTGOAL (resolve_tac [allI,impI,notI,conjI,iffI])), |
876 DEPTH_SOLVE (atomic_spy_analz_tac ctxt 1)]) i); |
876 DEPTH_SOLVE (atomic_spy_analz_tac ctxt 1)]) i); |
877 *} |
877 *} |
878 (*>*) |
878 (*>*) |
879 |
879 |
930 method_setup atomic_spy_analz = {* |
930 method_setup atomic_spy_analz = {* |
931 Scan.succeed (SIMPLE_METHOD' o atomic_spy_analz_tac) *} |
931 Scan.succeed (SIMPLE_METHOD' o atomic_spy_analz_tac) *} |
932 "for debugging spy_analz" |
932 "for debugging spy_analz" |
933 |
933 |
934 method_setup Fake_insert_simp = {* |
934 method_setup Fake_insert_simp = {* |
935 Scan.succeed (SIMPLE_METHOD' o Fake_insert_simp_tac o simpset_of) *} |
935 Scan.succeed (SIMPLE_METHOD' o Fake_insert_simp_tac) *} |
936 "for debugging spy_analz" |
936 "for debugging spy_analz" |
937 |
937 |
938 end |
938 end |