src/HOL/Auth/Shared.thy
changeset 11270 a315a3862bb4
parent 11230 756c5034f08b
child 12415 74977582a585
equal deleted inserted replaced
11269:4095353bd0d7 11270:a315a3862bb4
    13 
    13 
    14 consts
    14 consts
    15   shrK    :: "agent => key"  (*symmetric keys*)
    15   shrK    :: "agent => key"  (*symmetric keys*)
    16 
    16 
    17 axioms
    17 axioms
    18   isSym_keys: "K \\<in> symKeys"	(*All keys are symmetric*)
    18   isSym_keys: "K \<in> symKeys"	(*All keys are symmetric*)
    19   inj_shrK:   "inj shrK"	(*No two agents have the same long-term key*)
    19   inj_shrK:   "inj shrK"	(*No two agents have the same long-term key*)
    20 
    20 
    21 primrec
    21 primrec
    22         (*Server knows all long-term keys; other agents know only their own*)
    22         (*Server knows all long-term keys; other agents know only their own*)
    23   initState_Server:  "initState Server     = Key ` range shrK"
    23   initState_Server:  "initState Server     = Key ` range shrK"
    36 
    36 
    37 use "Shared_lemmas.ML"
    37 use "Shared_lemmas.ML"
    38 
    38 
    39 (*Lets blast_tac perform this step without needing the simplifier*)
    39 (*Lets blast_tac perform this step without needing the simplifier*)
    40 lemma invKey_shrK_iff [iff]:
    40 lemma invKey_shrK_iff [iff]:
    41      "(Key (invKey K) \\<in> X) = (Key K \\<in> X)"
    41      "(Key (invKey K) \<in> X) = (Key K \<in> X)"
    42 by auto;
    42 by auto;
    43 
    43 
    44 (*Specialized methods*)
    44 (*Specialized methods*)
    45 
    45 
    46 method_setup analz_freshK = {*
    46 method_setup analz_freshK = {*
    50                           REPEAT_FIRST (rtac analz_image_freshK_lemma),
    50                           REPEAT_FIRST (rtac analz_image_freshK_lemma),
    51                           ALLGOALS (asm_simp_tac analz_image_freshK_ss)])) *}
    51                           ALLGOALS (asm_simp_tac analz_image_freshK_ss)])) *}
    52     "for proving the Session Key Compromise theorem"
    52     "for proving the Session Key Compromise theorem"
    53 
    53 
    54 method_setup possibility = {*
    54 method_setup possibility = {*
    55     Method.no_args (Method.METHOD (fn facts => possibility_tac)) *}
    55     Method.ctxt_args (fn ctxt =>
       
    56         Method.METHOD (fn facts =>
       
    57             gen_possibility_tac (Simplifier.get_local_simpset ctxt))) *}
    56     "for proving possibility theorems"
    58     "for proving possibility theorems"
    57 
    59 
    58 end
    60 end