{ 
s:SES. 
es:EO+(Info).
    
[P:E 
 E 
 Atom1 
 
]
      ((
e1,e2:E. 
a:Atom1.
          (((e1 has a) 
 (e2 has a) 
 e1 
loc e2 ) 
 P[e1;e2;a]))
      
 (
e1,e2:E. 
snd:E(Send). 
rcv:E(Rcv). 
a:Atom1.
            ((e1 c
 snd
            
 rcv c
 e2
            
 (snd < rcv)
            
 (Send(snd) = Rcv(rcv))
            
 P[e1;snd;a]
            
 P[rcv;e2;a])
            
 P[e1;e2;a]))
      
 (
e1,e2:E. 
encr:E(Encrypt). 
decr:E(Decrypt). 
a:Atom1.
            (((e1 <loc encr)
            
 decr c
 e2
            
 (encr < decr)
            
 ((plainText(decr) = plainText(encr))
              
 (cipherText(decr) = cipherText(encr))
              
 MatchingKeys(key(decr);key(encr)))
            
 (
(key(decr) = symmetric-key(a)))
            
 P[e1;encr;a]
            
 P[encr;decr;cipherText(encr)]
            
 P[decr;e2;a])
            
 P[e1;e2;a]))
      
 {
e1,e2:E. 
a:Atom1.  (ses-flow(s;es;a;e1;e2) 
 P[e1;e2;a])}) }
{ Proof }
Definitions occuring in Statement : 
ses-flow: ses-flow(s;es;a;e1;e2), 
event-has: (e has a), 
ses-key-rel: MatchingKeys(k1;k2), 
ses-cipher: cipherText(e), 
ses-decryption-key: key(e), 
ses-decrypted: plainText(e), 
ses-decrypt: Decrypt, 
ses-crypt: cipherText(e), 
ses-encryption-key: key(e), 
ses-encrypted: plainText(e), 
ses-encrypt: Encrypt, 
ses-rcv: Rcv, 
ses-send: Send, 
ses-info: Info, 
security-event-structure: SES, 
symmetric-key: symmetric-key(a), 
encryption-key: Key, 
sdata: SecurityData, 
es-E-interface: E(X), 
eclass-val: X(e), 
event-ordering+: EO+(Info), 
es-causle: e c
 e', 
es-le: e 
loc e' , 
es-locl: (e <loc e'), 
es-causl: (e < e'), 
es-E: E, 
uall:
[x:A]. B[x], 
prop:
, 
guard: {T}, 
so_apply: x[s1;s2;s3], 
all:
x:A. B[x], 
not:
A, 
implies: P 
 Q, 
and: P 
 Q, 
function: x:A 
 B[x], 
equal: s = t, 
atom: Atom$n
Definitions : 
all:
x:A. B[x], 
uall:
[x:A]. B[x], 
prop:
, 
implies: P 
 Q, 
and: P 
 Q, 
so_apply: x[s1;s2;s3], 
member: t 
 T, 
cand: A c
 B, 
assert:
b, 
so_lambda: 
x y.t[x; y], 
btrue: tt, 
ifthenelse: if b then t else f fi , 
true: True, 
top: Top, 
es-E-interface: E(X), 
guard: {T}, 
so_apply: x[s1;s2], 
uimplies: b supposing a, 
sq_type: SQType(T), 
subtype: S 
 T
Lemmas : 
ses-flow-implies', 
es-causle_wf, 
es-causl_wf, 
sdata_wf, 
eclass-val_wf, 
es-E_wf, 
event-ordering+_inc, 
event-ordering+_wf, 
ses-send_wf, 
subtype_base_sq, 
bool_wf, 
bool_subtype_base, 
ses-rcv_wf, 
ses-flow_wf, 
es-E-interface_wf, 
es-interface-subtype_rel2, 
ses-info_wf, 
top_wf, 
es-locl_wf, 
ses-decrypted_wf, 
ses-encrypted_wf, 
ses-cipher_wf, 
ses-crypt_wf, 
ses-key-rel_wf, 
ses-decryption-key_wf, 
ses-encryption-key_wf, 
not_wf, 
encryption-key_wf, 
symmetric-key_wf, 
ses-decrypt_wf, 
ses-encrypt_wf, 
event-has_wf, 
es-le_wf, 
security-event-structure_wf, 
assert_elim, 
in-eclass_wf
\mforall{}s:SES.  \mforall{}es:EO+(Info).
    \mforall{}[P:E  {}\mrightarrow{}  E  {}\mrightarrow{}  Atom1  {}\mrightarrow{}  \mBbbP{}]
        ((\mforall{}e1,e2:E.  \mforall{}a:Atom1.    (((e1  has  a)  \mwedge{}  (e2  has  a)  \mwedge{}  e1  \mleq{}loc  e2  )  {}\mRightarrow{}  P[e1;e2;a]))
        {}\mRightarrow{}  (\mforall{}e1,e2:E.  \mforall{}snd:E(Send).  \mforall{}rcv:E(Rcv).  \mforall{}a:Atom1.
                    ((e1  c\mleq{}  snd
                    \mwedge{}  rcv  c\mleq{}  e2
                    \mwedge{}  (snd  <  rcv)
                    \mwedge{}  (Send(snd)  =  Rcv(rcv))
                    \mwedge{}  P[e1;snd;a]
                    \mwedge{}  P[rcv;e2;a])
                    {}\mRightarrow{}  P[e1;e2;a]))
        {}\mRightarrow{}  (\mforall{}e1,e2:E.  \mforall{}encr:E(Encrypt).  \mforall{}decr:E(Decrypt).  \mforall{}a:Atom1.
                    (((e1  <loc  encr)
                    \mwedge{}  decr  c\mleq{}  e2
                    \mwedge{}  (encr  <  decr)
                    \mwedge{}  ((plainText(decr)  =  plainText(encr))
                        \mwedge{}  (cipherText(decr)  =  cipherText(encr))
                        \mwedge{}  MatchingKeys(key(decr);key(encr)))
                    \mwedge{}  (\mneg{}(key(decr)  =  symmetric-key(a)))
                    \mwedge{}  P[e1;encr;a]
                    \mwedge{}  P[encr;decr;cipherText(encr)]
                    \mwedge{}  P[decr;e2;a])
                    {}\mRightarrow{}  P[e1;e2;a]))
        {}\mRightarrow{}  \{\mforall{}e1,e2:E.  \mforall{}a:Atom1.    (ses-flow(s;es;a;e1;e2)  {}\mRightarrow{}  P[e1;e2;a])\})
Date html generated:
2011_08_17-PM-07_19_58
Last ObjectModification:
2011_06_18-PM-01_12_24
Home
Index