Nuprl Lemma : ses-flow-implies'

∀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) ∈ SecurityData)
          ∧ (P[e1;snd;a] ∧ ses-flow(s;es;a;e1;snd))
          ∧ P[rcv;e2;a]
          ∧ ses-flow(s;es;a;rcv;e2))
          ⇒ 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) ∈ SecurityData)
            ∧ (cipherText(decr) = cipherText(encr) ∈ Atom1)
            ∧ MatchingKeys(key(decr);key(encr)))
          ∧ (¬(key(decr) = symmetric-key(a) ∈ Key))
          ∧ (P[e1;encr;a] ∧ ses-flow(s;es;a;e1;encr))
          ∧ (P[encr;decr;cipherText(encr)] ∧ ses-flow(s;es;cipherText(encr);encr;decr))
          ∧ P[decr;e2;a]
          ∧ ses-flow(s;es;a;decr;e2))
          ⇒ 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,  atom: Atom$n,  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 ∈ T
Lemmas :  ses-flow-induction,  ses-flow_wf,  all_wf,  es-causle_wf,  or_wf,  es-causl_wf,  es-E_wf,  event-ordering+_subtype,  ses-info_wf,  es-E-interface_wf,  ses-encrypt_wf,  es-interface-subtype_rel2,  event-ordering+_wf,  top_wf,  subtype_top,  sdata_wf,  encryption-key_wf,  ses-decrypt_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,  equal-wf-T-base,  atom1_subtype_base,  ses-send_wf,  ses-rcv_wf,  eclass-val_wf,  assert_elim,  in-eclass_wf,  subtype_base_sq,  bool_wf,  bool_subtype_base,  event-has_wf,  es-le_wf,  security-event-structure_wf,  es-causle_weakening_eq,  es-causl_transitivity2,  es-causle_weakening,  es-causl_transitivity1,  es-causle_weakening_locl,  es-le_weakening,  es-causl_weakening

Latex:
\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{}  ses-flow(s;es;a;e1;snd))
                    \mwedge{}  P[rcv;e2;a]
                    \mwedge{}  ses-flow(s;es;a;rcv;e2))
                    {}\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{}  ses-flow(s;es;a;e1;encr))
                    \mwedge{}  (P[encr;decr;cipherText(encr)]  \mwedge{}  ses-flow(s;es;cipherText(encr);encr;decr))
                    \mwedge{}  P[decr;e2;a]
                    \mwedge{}  ses-flow(s;es;a;decr;e2))
                    {}\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: 2015_07_23-PM-00_05_12
Last ObjectModification: 2015_01_29-AM-07_49_09

Home Index