lemma kparts_insert: "X ∈ kparts (insert X H) ==> X ∈ kparts {X} ∪ kparts H" by (erule kparts.induct, (blast dest: pparts_insert)+)
lemma kparts_insert_fst [rule_format,dest]: "X ∈ kparts (insert Z H) ==> X ∉ kparts H ⟶ X ∈ kparts {Z}" by (erule kparts.induct, (blast dest: pparts_insert)+)
lemma kparts_sub: "[X ∈ kparts G; G ⊆ H]==> X ∈ kparts H" by (erule kparts.induct, auto dest: pparts_sub)
lemma kparts_Un [iff]: "kparts (G ∪ H) = kparts G ∪ kparts H" by (rule eq, erule kparts.induct, auto dest: kparts_sub)
lemma in_kparts: "Y ∈ kparts H ==>∃X. X ∈ H ∧ Y ∈ kparts {X}" by (erule kparts.induct, auto dest: in_pparts)
lemma kparts_has_no_pair [iff]: "has_no_pair (kparts H)" by auto
subsection‹facts about 🍋‹kparts›and 🍋‹parts›\›
lemma kparts_no_Nonce [dest]: "[X ∈ kparts {Y}; Nonce n ∉ parts {Y}] \ Nonce n ∉ parts {X}" by (erule kparts.induct, auto)
lemma kparts_parts: "X ∈ kparts H ==> X ∈ parts H" by (erule kparts.induct, auto dest: pparts_analz)
lemma parts_kparts: "X ∈ parts (kparts H) ==> X ∈ parts H" by (erule parts.induct, auto dest: kparts_parts
intro: parts.Fst parts.Snd parts.Body)
lemma Crypt_kparts_Nonce_parts [dest]: "[Crypt K Y ∈ kparts {Z}; Nonce n ∈ parts {Y}]==> Nonce n ∈ parts {Z}" by auto
subsection‹facts about 🍋‹kparts›and 🍋‹analz›\›
lemma kparts_analz: "X ∈ kparts H ==> X ∈ analz H" by (erule kparts.induct, auto dest: pparts_analz)
lemma kparts_analz_sub: "[X ∈ kparts G; G ⊆ H]==> X ∈ analz H" by (erule kparts.induct, auto dest: pparts_analz_sub)
lemma analz_kparts [rule_format,dest]: "X ∈ analz H ==> Y ∈ kparts {X} ⟶ Y ∈ analz H" by (erule analz.induct, auto dest: kparts_analz_sub)
lemma analz_kparts_analz: "X ∈ analz (kparts H) ==> X ∈ analz H" by (erule analz.induct, auto dest: kparts_analz)
lemma analz_kparts_insert: "X ∈ analz (kparts (insert Z H)) ==> X ∈ analz (kparts {Z} ∪ kparts H)" by (rule analz_sub, auto)
lemma Nonce_kparts_synth [rule_format]: "Y ∈ synth (analz G) \ Nonce n ∈ kparts {Y} ⟶ Nonce n ∈ analz G" by (erule synth.induct, auto)
lemma kparts_insert_synth: "[Y ∈ parts (insert X G); X ∈ synth (analz G); Nonce n ∈ kparts {Y}; Nonce n ∉ analz G]==> Y ∈ parts G" apply (drule parts_insert_substD, clarify) apply (drule in_sub, drule_tac X=Y in parts_sub, simp) apply (auto dest: Nonce_kparts_synth) done
lemma Crypt_insert_synth: "[Crypt K Y ∈ parts (insert X G); X ∈ synth (analz G); Nonce n ∈ kparts {Y}; Nonce n ∉ analz G] ==> Crypt K Y ∈ parts G" by (metis Fake_parts_insert_in_Un Nonce_kparts_synth UnE analz_conj_parts synth_simps(5))
subsection‹analz is pparts + analz of kparts›
lemma analz_pparts_kparts: "X ∈ analz H ==> X ∈ pparts H ∨ X ∈ analz (kparts H)" by (erule analz.induct, auto)
lemma analz_pparts_kparts_eq: "analz H = pparts H Un analz (kparts H)" by (rule eq, auto dest: analz_pparts_kparts pparts_analz analz_kparts_analz)
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.