src/HOL/SET_Protocol/Message_SET.thy
changeset 51717 9e7d1c139569
parent 51702 dcfab8e87621
child 55416 dd7992d4a61a
equal deleted inserted replaced
51709:19b47bfac6ef 51717:9e7d1c139569
   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