equal
deleted
inserted
replaced
16 text{*decomposition of @{term analz} into two parts: |
16 text{*decomposition of @{term analz} into two parts: |
17 @{term pparts} (for pairs) and analz of @{term kparts}*} |
17 @{term pparts} (for pairs) and analz of @{term kparts}*} |
18 |
18 |
19 subsection{*messages that do not contribute to analz*} |
19 subsection{*messages that do not contribute to analz*} |
20 |
20 |
21 consts pparts :: "msg set => msg set" |
21 inductive_set |
22 |
22 pparts :: "msg set => msg set" |
23 inductive "pparts H" |
23 for H :: "msg set" |
24 intros |
24 where |
25 Inj [intro]: "[| X:H; is_MPair X |] ==> X:pparts H" |
25 Inj [intro]: "[| X:H; is_MPair X |] ==> X:pparts H" |
26 Fst [dest]: "[| {|X,Y|}:pparts H; is_MPair X |] ==> X:pparts H" |
26 | Fst [dest]: "[| {|X,Y|}:pparts H; is_MPair X |] ==> X:pparts H" |
27 Snd [dest]: "[| {|X,Y|}:pparts H; is_MPair Y |] ==> Y:pparts H" |
27 | Snd [dest]: "[| {|X,Y|}:pparts H; is_MPair Y |] ==> Y:pparts H" |
28 |
28 |
29 subsection{*basic facts about @{term pparts}*} |
29 subsection{*basic facts about @{term pparts}*} |
30 |
30 |
31 lemma pparts_is_MPair [dest]: "X:pparts H ==> is_MPair X" |
31 lemma pparts_is_MPair [dest]: "X:pparts H ==> is_MPair X" |
32 by (erule pparts.induct, auto) |
32 by (erule pparts.induct, auto) |
118 lemma pparts_analz_sub: "[| X:pparts G; G<=H |] ==> X:analz H" |
118 lemma pparts_analz_sub: "[| X:pparts G; G<=H |] ==> X:analz H" |
119 by (auto dest: pparts_sub pparts_analz) |
119 by (auto dest: pparts_sub pparts_analz) |
120 |
120 |
121 subsection{*messages that contribute to analz*} |
121 subsection{*messages that contribute to analz*} |
122 |
122 |
123 consts kparts :: "msg set => msg set" |
123 inductive_set |
124 |
124 kparts :: "msg set => msg set" |
125 inductive "kparts H" |
125 for H :: "msg set" |
126 intros |
126 where |
127 Inj [intro]: "[| X:H; not_MPair X |] ==> X:kparts H" |
127 Inj [intro]: "[| X:H; not_MPair X |] ==> X:kparts H" |
128 Fst [intro]: "[| {|X,Y|}:pparts H; not_MPair X |] ==> X:kparts H" |
128 | Fst [intro]: "[| {|X,Y|}:pparts H; not_MPair X |] ==> X:kparts H" |
129 Snd [intro]: "[| {|X,Y|}:pparts H; not_MPair Y |] ==> Y:kparts H" |
129 | Snd [intro]: "[| {|X,Y|}:pparts H; not_MPair Y |] ==> Y:kparts H" |
130 |
130 |
131 subsection{*basic facts about @{term kparts}*} |
131 subsection{*basic facts about @{term kparts}*} |
132 |
132 |
133 lemma kparts_not_MPair [dest]: "X:kparts H ==> not_MPair X" |
133 lemma kparts_not_MPair [dest]: "X:kparts H ==> not_MPair X" |
134 by (erule kparts.induct, auto) |
134 by (erule kparts.induct, auto) |