src/HOL/Auth/Guard/Proto.thy
changeset 41774 13b97824aec6
parent 35416 d8d7d1b785af
child 41775 6214816d79d3
equal deleted inserted replaced
41770:a710e96583d5 41774:13b97824aec6
    13 
    13 
    14 theory Proto imports Guard_Public begin
    14 theory Proto imports Guard_Public begin
    15 
    15 
    16 subsection{*protocols*}
    16 subsection{*protocols*}
    17 
    17 
    18 types rule = "event set * event"
    18 type_synonym rule = "event set * event"
    19 
    19 
    20 abbreviation
    20 abbreviation
    21   msg' :: "rule => msg" where
    21   msg' :: "rule => msg" where
    22   "msg' R == msg (snd R)"
    22   "msg' R == msg (snd R)"
    23 
    23 
    24 types proto = "rule set"
    24 type_synonym proto = "rule set"
    25 
    25 
    26 definition wdef :: "proto => bool" where
    26 definition wdef :: "proto => bool" where
    27 "wdef p == ALL R k. R:p --> Number k:parts {msg' R}
    27 "wdef p == ALL R k. R:p --> Number k:parts {msg' R}
    28 --> Number k:parts (msg`(fst R))"
    28 --> Number k:parts (msg`(fst R))"
    29 
    29 
   153 apply (drule has_only_SaysD, simp+)
   153 apply (drule has_only_SaysD, simp+)
   154 by (clarify, case_tac x, auto)
   154 by (clarify, case_tac x, auto)
   155 
   155 
   156 subsection{*types*}
   156 subsection{*types*}
   157 
   157 
   158 types keyfun = "rule => subs => nat => event list => key set"
   158 type_synonym keyfun = "rule => subs => nat => event list => key set"
   159 
   159 
   160 types secfun = "rule => nat => subs => key set => msg"
   160 type_synonym secfun = "rule => nat => subs => key set => msg"
   161 
   161 
   162 subsection{*introduction of a fresh guarded nonce*}
   162 subsection{*introduction of a fresh guarded nonce*}
   163 
   163 
   164 definition fresh :: "proto => rule => subs => nat => key set => event list
   164 definition fresh :: "proto => rule => subs => nat => key set => event list
   165 => bool" where
   165 => bool" where