src/HOL/Auth/Guard/Guard_NS_Public.thy
changeset 23746 a455e69c31cc
parent 21404 eb85850d3eb7
child 41775 6214816d79d3
equal deleted inserted replaced
23745:28df61d931e2 23746:a455e69c31cc
    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