src/Doc/Tutorial/Protocol/Event.thy
changeset 59498 50b60f501b05
parent 58963 26bf09b95dda
child 60754 02924903a6fd
equal deleted inserted replaced
59497:0c5cd369a643 59498:50b60f501b05
   260 
   260 
   261 ML
   261 ML
   262 {*
   262 {*
   263 fun analz_mono_contra_tac ctxt =
   263 fun analz_mono_contra_tac ctxt =
   264   rtac @{thm analz_impI} THEN' 
   264   rtac @{thm analz_impI} THEN' 
   265   REPEAT1 o (dresolve_tac @{thms analz_mono_contra})
   265   REPEAT1 o (dresolve_tac ctxt @{thms analz_mono_contra})
   266   THEN' mp_tac ctxt
   266   THEN' mp_tac ctxt
   267 *}
   267 *}
   268 
   268 
   269 lemma knows_subset_knows_Cons: "knows A evs \<subseteq> knows A (e # evs)"
   269 lemma knows_subset_knows_Cons: "knows A evs \<subseteq> knows A (e # evs)"
   270 by (induct e, auto simp: knows_Cons)
   270 by (induct e, auto simp: knows_Cons)
   331 
   331 
   332 
   332 
   333 fun synth_analz_mono_contra_tac ctxt = 
   333 fun synth_analz_mono_contra_tac ctxt = 
   334   rtac @{thm syan_impI} THEN'
   334   rtac @{thm syan_impI} THEN'
   335   REPEAT1 o 
   335   REPEAT1 o 
   336     (dresolve_tac 
   336     (dresolve_tac ctxt
   337      [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD},
   337      [@{thm knows_Spy_subset_knows_Spy_Says} RS @{thm synth_analz_mono} RS @{thm contra_subsetD},
   338       @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD},
   338       @{thm knows_Spy_subset_knows_Spy_Notes} RS @{thm synth_analz_mono} RS @{thm contra_subsetD},
   339       @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}])
   339       @{thm knows_Spy_subset_knows_Spy_Gets} RS @{thm synth_analz_mono} RS @{thm contra_subsetD}])
   340   THEN'
   340   THEN'
   341   mp_tac ctxt
   341   mp_tac ctxt