| author | wenzelm | 
| Tue, 23 Oct 2001 22:52:31 +0200 | |
| changeset 11908 | 82f68fd05094 | 
| parent 11189 | 1ea763a5d186 | 
| child 12415 | 74977582a585 | 
| permissions | -rw-r--r-- | 
| 11189 | 1 | (* Title: HOL/Auth/Event_lemmas | 
| 11106 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 2 | ID: $Id$ | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 3 | Author: Lawrence C Paulson, Cambridge University Computer Laboratory | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 4 | Copyright 1996 University of Cambridge | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 5 | *) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 6 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 7 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 8 | val knows_Cons = thm "knows_Cons"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 9 | val used_Nil = thm "used_Nil"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 10 | val used_Cons = thm "used_Cons"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 11 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 12 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 13 | (*Inserted by default but later removed. This declaration lets the file | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 14 | be re-loaded.*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 15 | Addsimps [knows_Cons, used_Nil, used_Cons]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 16 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 17 | (**** Function "knows" ****) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 18 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 19 | (** Simplifying parts (insert X (knows Spy evs)) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 20 |       = parts {X} Un parts (knows Spy evs) -- since general case loops*)
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 21 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 22 | bind_thm ("parts_insert_knows_Spy",
 | 
| 11189 | 23 | inst "H" "knows Spy evs" parts_insert); | 
| 11106 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 24 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 25 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 26 | val expand_event_case = thm "event.split"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 27 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 28 | Goal "knows Spy (Says A B X # evs) = insert X (knows Spy evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 29 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 30 | qed "knows_Spy_Says"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 31 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 32 | (*The point of letting the Spy see "bad" agents' notes is to prevent | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 33 | redundant case-splits on whether A=Spy and whether A:bad*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 34 | Goal "knows Spy (Notes A X # evs) = \ | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 35 | \ (if A:bad then insert X (knows Spy evs) else knows Spy evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 36 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 37 | qed "knows_Spy_Notes"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 38 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 39 | Goal "knows Spy (Gets A X # evs) = knows Spy evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 40 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 41 | qed "knows_Spy_Gets"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 42 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 43 | Goal "knows Spy evs <= knows Spy (Says A B X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 44 | by (simp_tac (simpset() addsimps [subset_insertI]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 45 | qed "knows_Spy_subset_knows_Spy_Says"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 46 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 47 | Goal "knows Spy evs <= knows Spy (Notes A X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 48 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 49 | by (Fast_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 50 | qed "knows_Spy_subset_knows_Spy_Notes"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 51 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 52 | Goal "knows Spy evs <= knows Spy (Gets A X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 53 | by (simp_tac (simpset() addsimps [subset_insertI]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 54 | qed "knows_Spy_subset_knows_Spy_Gets"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 55 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 56 | (*Spy sees what is sent on the traffic*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 57 | Goal "Says A B X : set evs --> X : knows Spy evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 58 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 59 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 60 | qed_spec_mp "Says_imp_knows_Spy"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 61 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 62 | Goal "Notes A X : set evs --> A: bad --> X : knows Spy evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 63 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 64 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 65 | qed_spec_mp "Notes_imp_knows_Spy"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 66 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 67 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 68 | (*Use with addSEs to derive contradictions from old Says events containing | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 69 | items known to be fresh*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 70 | bind_thms ("knows_Spy_partsEs", 
 | 
| 11150 | 71 | map make_elim [Says_imp_knows_Spy RS parts.Inj, parts.Body]); | 
| 11106 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 72 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 73 | Addsimps [knows_Spy_Says, knows_Spy_Notes, knows_Spy_Gets]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 74 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 75 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 76 | (*Begin lemmas about agents' knowledge*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 77 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 78 | Goal "knows A (Says A B X # evs) = insert X (knows A evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 79 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 80 | qed "knows_Says"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 81 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 82 | Goal "knows A (Notes A X # evs) = insert X (knows A evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 83 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 84 | qed "knows_Notes"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 85 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 86 | Goal "A ~= Spy --> knows A (Gets A X # evs) = insert X (knows A evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 87 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 88 | qed "knows_Gets"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 89 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 90 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 91 | Goal "knows A evs <= knows A (Says A B X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 92 | by (simp_tac (simpset() addsimps [subset_insertI]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 93 | qed "knows_subset_knows_Says"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 94 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 95 | Goal "knows A evs <= knows A (Notes A X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 96 | by (simp_tac (simpset() addsimps [subset_insertI]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 97 | qed "knows_subset_knows_Notes"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 98 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 99 | Goal "knows A evs <= knows A (Gets A X # evs)"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 100 | by (simp_tac (simpset() addsimps [subset_insertI]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 101 | qed "knows_subset_knows_Gets"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 102 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 103 | (*Agents know what they say*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 104 | Goal "Says A B X : set evs --> X : knows A evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 105 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 106 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 107 | by (Blast_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 108 | qed_spec_mp "Says_imp_knows"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 109 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 110 | (*Agents know what they note*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 111 | Goal "Notes A X : set evs --> X : knows A evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 112 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 113 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 114 | by (Blast_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 115 | qed_spec_mp "Notes_imp_knows"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 116 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 117 | (*Agents know what they receive*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 118 | Goal "A ~= Spy --> Gets A X : set evs --> X : knows A evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 119 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 120 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 121 | qed_spec_mp "Gets_imp_knows_agents"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 122 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 123 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 124 | (*What agents DIFFERENT FROM Spy know | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 125 | was either said, or noted, or got, or known initially*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 126 | Goal "[| X : knows A evs; A ~= Spy |] ==> EX B. \ | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 127 | \ Says A B X : set evs | Gets A X : set evs | Notes A X : set evs | X : initState A"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 128 | by (etac rev_mp 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 129 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 130 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 131 | by (Blast_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 132 | qed_spec_mp "knows_imp_Says_Gets_Notes_initState"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 133 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 134 | (*What the Spy knows -- for the time being -- | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 135 | was either said or noted, or known initially*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 136 | Goal "[| X : knows Spy evs |] ==> EX A B. \ | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 137 | \ Says A B X : set evs | Notes A X : set evs | X : initState Spy"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 138 | by (etac rev_mp 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 139 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 140 | by (ALLGOALS (asm_simp_tac (simpset() addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 141 | by (Blast_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 142 | qed_spec_mp "knows_Spy_imp_Says_Notes_initState"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 143 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 144 | (*END lemmas about agents' knowledge*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 145 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 146 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 147 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 148 | (**** NOTE REMOVAL--laws above are cleaner, as they don't involve "case" ****) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 149 | Delsimps [knows_Cons]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 150 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 151 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 152 | (*** Fresh nonces ***) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 153 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 154 | Goal "parts (knows Spy evs) <= used evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 155 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 156 | by (ALLGOALS (asm_simp_tac | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 157 | (simpset() addsimps [parts_insert_knows_Spy] | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 158 | addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 159 | by (ALLGOALS Blast_tac); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 160 | qed "parts_knows_Spy_subset_used"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 161 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 162 | bind_thm ("usedI", impOfSubs parts_knows_Spy_subset_used);
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 163 | AddIs [usedI]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 164 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 165 | Goal "parts (initState B) <= used evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 166 | by (induct_tac "evs" 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 167 | by (ALLGOALS (asm_simp_tac | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 168 | (simpset() addsimps [parts_insert_knows_Spy] | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 169 | addsplits [expand_event_case]))); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 170 | by (ALLGOALS Blast_tac); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 171 | bind_thm ("initState_into_used", impOfSubs (result()));
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 172 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 173 | Goal "used (Says A B X # evs) = parts{X} Un used evs";
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 174 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 175 | qed "used_Says"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 176 | Addsimps [used_Says]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 177 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 178 | Goal "used (Notes A X # evs) = parts{X} Un used evs";
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 179 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 180 | qed "used_Notes"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 181 | Addsimps [used_Notes]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 182 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 183 | Goal "used (Gets A X # evs) = used evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 184 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 185 | qed "used_Gets"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 186 | Addsimps [used_Gets]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 187 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 188 | Goal "used [] <= used evs"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 189 | by (Simp_tac 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 190 | by (blast_tac (claset() addIs [initState_into_used]) 1); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 191 | qed "used_nil_subset"; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 192 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 193 | (**** NOTE REMOVAL--laws above are cleaner, as they don't involve "case" ****) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 194 | Delsimps [used_Nil, used_Cons]; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 195 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 196 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 197 | (*For proving theorems of the form X ~: analz (knows Spy evs) --> P | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 198 | New events added by induction to "evs" are discarded. Provided | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 199 | this information isn't needed, the proof will be much shorter, since | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 200 | it will omit complicated reasoning about analz.*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 201 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 202 | bind_thms ("analz_mono_contra",
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 203 | [knows_Spy_subset_knows_Spy_Says RS analz_mono RS contra_subsetD, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 204 | knows_Spy_subset_knows_Spy_Notes RS analz_mono RS contra_subsetD, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 205 | knows_Spy_subset_knows_Spy_Gets RS analz_mono RS contra_subsetD]); | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 206 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 207 | val analz_mono_contra_tac = | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 208 | let val analz_impI = inst "P" "?Y ~: analz (knows Spy ?evs)" impI | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 209 | in | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 210 | rtac analz_impI THEN' | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 211 | REPEAT1 o | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 212 | (dresolve_tac | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 213 | [knows_Spy_subset_knows_Spy_Says RS analz_mono RS contra_subsetD, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 214 | knows_Spy_subset_knows_Spy_Notes RS analz_mono RS contra_subsetD, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 215 | knows_Spy_subset_knows_Spy_Gets RS analz_mono RS contra_subsetD]) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 216 | THEN' | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 217 | mp_tac | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 218 | end; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 219 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 220 | fun Reception_tac i = | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 221 | blast_tac (claset() addDs [Says_imp_knows_Spy RS parts.Inj, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 222 | impOfSubs (parts_insert RS equalityD1), | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 223 | parts_trans, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 224 | Says_imp_knows_Spy RS analz.Inj, | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 225 | impOfSubs analz_mono, analz_cut] | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 226 | addIs [less_SucI]) i; | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 227 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 228 | |
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 229 | (*Compatibility for the old "spies" function*) | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 230 | bind_thms ("spies_partsEs", knows_Spy_partsEs);
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 231 | bind_thm ("Says_imp_spies", Says_imp_knows_Spy);
 | 
| 
83d03e966c68
partial conversion to Isar script style in HOL/Auth removes some .ML files
 paulson parents: diff
changeset | 232 | bind_thm ("parts_insert_spies", parts_insert_knows_Spy);
 |