src/HOL/Auth/Guard/Analz.thy
changeset 23746 a455e69c31cc
parent 17689 a04b5b43625e
child 26808 d334a6d69598
equal deleted inserted replaced
23745:28df61d931e2 23746:a455e69c31cc
    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)