equal
deleted
inserted
replaced
38 "ns3 A B NB == Says A B (Crypt (pubK B) (Nonce NB))" |
38 "ns3 A B NB == Says A B (Crypt (pubK B) (Nonce NB))" |
39 |
39 |
40 |
40 |
41 subsection{*definition of the protocol*} |
41 subsection{*definition of the protocol*} |
42 |
42 |
43 consts nsp :: "event list set" |
43 inductive_set nsp :: "event list set" |
44 |
44 where |
45 inductive nsp |
45 |
46 intros |
46 Nil: "[]:nsp" |
47 |
47 |
48 Nil: "[]:nsp" |
48 | Fake: "[| evs:nsp; X:synth (analz (spies evs)) |] ==> Says Spy B X # evs : nsp" |
49 |
49 |
50 Fake: "[| evs:nsp; X:synth (analz (spies evs)) |] ==> Says Spy B X # evs : nsp" |
50 | NS1: "[| evs1:nsp; Nonce NA ~:used evs1 |] ==> ns1 A B NA # evs1 : nsp" |
51 |
51 |
52 NS1: "[| evs1:nsp; Nonce NA ~:used evs1 |] ==> ns1 A B NA # evs1 : nsp" |
52 | NS2: "[| evs2:nsp; Nonce NB ~:used evs2; ns1' A' A B NA:set evs2 |] ==> |
53 |
53 ns2 B A NA NB # evs2:nsp" |
54 NS2: "[| evs2:nsp; Nonce NB ~:used evs2; ns1' A' A B NA:set evs2 |] ==> |
54 |
55 ns2 B A NA NB # evs2:nsp" |
55 | NS3: "!!A B B' NA NB evs3. [| evs3:nsp; ns1 A B NA:set evs3; ns2' B' B A NA NB:set evs3 |] ==> |
56 |
56 ns3 A B NB # evs3:nsp" |
57 NS3: "[| evs3:nsp; ns1 A B NA:set evs3; ns2' B' B A NA NB:set evs3 |] ==> |
|
58 ns3 A B NB # evs3:nsp" |
|
59 |
57 |
60 subsection{*declarations for tactics*} |
58 subsection{*declarations for tactics*} |
61 |
59 |
62 declare knows_Spy_partsEs [elim] |
60 declare knows_Spy_partsEs [elim] |
63 declare Fake_parts_insert [THEN subsetD, dest] |
61 declare Fake_parts_insert [THEN subsetD, dest] |
70 |
68 |
71 lemma nsp_is_Gets_correct [iff]: "Gets_correct nsp" |
69 lemma nsp_is_Gets_correct [iff]: "Gets_correct nsp" |
72 by (auto simp: Gets_correct_def dest: nsp_has_no_Gets) |
70 by (auto simp: Gets_correct_def dest: nsp_has_no_Gets) |
73 |
71 |
74 lemma nsp_is_one_step [iff]: "one_step nsp" |
72 lemma nsp_is_one_step [iff]: "one_step nsp" |
75 by (unfold one_step_def, clarify, ind_cases "ev#evs:nsp", auto) |
73 by (unfold one_step_def, clarify, ind_cases "ev#evs:nsp" for ev evs, auto) |
76 |
74 |
77 lemma nsp_has_only_Says' [rule_format]: "evs:nsp ==> |
75 lemma nsp_has_only_Says' [rule_format]: "evs:nsp ==> |
78 ev:set evs --> (EX A B X. ev=Says A B X)" |
76 ev:set evs --> (EX A B X. ev=Says A B X)" |
79 by (erule nsp.induct, auto) |
77 by (erule nsp.induct, auto) |
80 |
78 |