equal
deleted
inserted
replaced
1 (* Title: HOL/Auth/SET/EventSET |
1 (* Title: HOL/SET-Protocol/EventSET.thy |
2 ID: $Id$ |
2 Author: Giampaolo Bella |
3 Authors: Giampaolo Bella, Fabio Massacci, Lawrence C Paulson |
3 Author: Fabio Massacci |
|
4 Author: Lawrence C Paulson |
4 *) |
5 *) |
5 |
6 |
6 header{*Theory of Events for SET*} |
7 header{*Theory of Events for SET*} |
7 |
8 |
8 theory EventSET imports MessageSET begin |
9 theory EventSET imports MessageSET begin |
13 |
14 |
14 |
15 |
15 text{*Message events*} |
16 text{*Message events*} |
16 datatype |
17 datatype |
17 event = Says agent agent msg |
18 event = Says agent agent msg |
18 | Gets agent msg |
19 | Gets agent msg |
19 | Notes agent msg |
20 | Notes agent msg |
20 |
21 |
21 |
22 |
22 text{*compromised agents: keys known, Notes visible*} |
23 text{*compromised agents: keys known, Notes visible*} |
23 consts bad :: "agent set" |
24 consts bad :: "agent set" |
42 knows_Nil: |
43 knows_Nil: |
43 "knows A [] = initState A" |
44 "knows A [] = initState A" |
44 knows_Cons: |
45 knows_Cons: |
45 "knows A (ev # evs) = |
46 "knows A (ev # evs) = |
46 (if A = Spy then |
47 (if A = Spy then |
47 (case ev of |
48 (case ev of |
48 Says A' B X => insert X (knows Spy evs) |
49 Says A' B X => insert X (knows Spy evs) |
49 | Gets A' X => knows Spy evs |
50 | Gets A' X => knows Spy evs |
50 | Notes A' X => |
51 | Notes A' X => |
51 if A' \<in> bad then insert X (knows Spy evs) else knows Spy evs) |
52 if A' \<in> bad then insert X (knows Spy evs) else knows Spy evs) |
52 else |
53 else |
53 (case ev of |
54 (case ev of |
54 Says A' B X => |
55 Says A' B X => |
55 if A'=A then insert X (knows A evs) else knows A evs |
56 if A'=A then insert X (knows A evs) else knows A evs |
56 | Gets A' X => |
57 | Gets A' X => |
57 if A'=A then insert X (knows A evs) else knows A evs |
58 if A'=A then insert X (knows A evs) else knows A evs |
58 | Notes A' X => |
59 | Notes A' X => |
59 if A'=A then insert X (knows A evs) else knows A evs))" |
60 if A'=A then insert X (knows A evs) else knows A evs))" |
60 |
61 |
61 |
62 |
62 subsection{*Used Messages*} |
63 subsection{*Used Messages*} |
63 |
64 |
64 consts |
65 consts |
68 |
69 |
69 (* As above, message reception does extend used items *) |
70 (* As above, message reception does extend used items *) |
70 primrec |
71 primrec |
71 used_Nil: "used [] = (UN B. parts (initState B))" |
72 used_Nil: "used [] = (UN B. parts (initState B))" |
72 used_Cons: "used (ev # evs) = |
73 used_Cons: "used (ev # evs) = |
73 (case ev of |
74 (case ev of |
74 Says A B X => parts {X} Un (used evs) |
75 Says A B X => parts {X} Un (used evs) |
75 | Gets A X => used evs |
76 | Gets A X => used evs |
76 | Notes A X => parts {X} Un (used evs))" |
77 | Notes A X => parts {X} Un (used evs))" |
77 |
78 |
78 |
79 |
79 |
80 |
80 (* Inserted by default but later removed. This declaration lets the file |
81 (* Inserted by default but later removed. This declaration lets the file |
81 be re-loaded. Addsimps [knows_Cons, used_Nil, *) |
82 be re-loaded. Addsimps [knows_Cons, used_Nil, *) |