Step * of Lemma ses-is-protocol-action-used

[s:SES]
  ∀[pa:ProtocolAction]. ∀[es:EO+(Info)]. ∀[e:E].  UsedAtoms(e) pa-used(pa) ∈ (Atom1 List) supposing pa(e) 
  supposing ActionsDisjoint
BY
(RepeatFor ((D THENA Auto))
   THEN Unfold `ses-is-protocol-action` 0
   THEN -3
   THEN RepUR ``pa-used ses-used-atoms`` 0⋅
   THEN (MoveToConcl (-3)
         THEN Unfold `ses-disjoint` 2
         THEN (InstHyp [⌈es⌉2⋅ THENA Auto)
         THEN Thin 2
         THEN -1
         THEN (InstHyp  [⌈e⌉(-1)⋅ THENA Auto)
         THEN Thin (-2)
         THEN SplitAndHyps
         THEN let tac ((HypSubst' (-1) THEN Reduce 0)
                         THEN (D THENA Auto)
                         THEN (D THENA Auto)
                         THEN (-1)⋅
                         THEN ThinTrivial
                         THEN SplitAndHyps
                         THEN Repeat (((AutoSplit⋅ THENA Auto) THEN ThinTrivial THEN Auto))
                         THEN ((RepUR ``ses-signed ses-verify-sig ses-verify-signed ses-cipher`` 0
                                THEN RepUR ``ses-encryption-key  ses-decryption-key ses-encrypted`` 0
                                )
                               THEN Auto
                               THEN AutoSplit)⋅in (((Decide "new" ∈ Atom THENA Auto) THENL [tac; Id])
                                                     THEN ((Decide "send" ∈ Atom THENA Auto) THENL [Try (tac); Id])
                                                     THEN ((Decide "rcv" ∈ Atom THENA Auto) THENL [tac; Id])
                                                     THEN ((Decide "sign" ∈ Atom THENA Auto) THENL [tac; Id])
                                                     THEN ((Decide "verify" ∈ Atom THENA Auto) THENL [tac; Id])
                                                     THEN ((Decide "encrypt" ∈ Atom THENA Auto) THENL [tac; Id])
                                                     THEN ((Decide "decrypt" ∈ Atom THENA Auto) THENL [tac; Id]))⋅)
   ⋅}

1
1. SES
2. Atom
3. es EO+(Info)
4. E
5. E ─→ ℤ
6. (↑e ∈b New)  ((f e) 1 ∈ ℤ)
7. (↑e ∈b Send)  ((f e) 2 ∈ ℤ)
8. (↑e ∈b Rcv)  ((f e) 3 ∈ ℤ)
9. (↑e ∈b Sign)  ((f e) 4 ∈ ℤ)
10. (↑e ∈b Verify)  ((f e) 5 ∈ ℤ)
11. (↑e ∈b Encrypt)  ((f e) 6 ∈ ℤ)
12. (↑e ∈b Decrypt)  ((f e) 7 ∈ ℤ)
13. ¬(n "new" ∈ Atom)
14. ¬(n "send" ∈ Atom)
15. ¬(n "rcv" ∈ Atom)
16. ¬(n "sign" ∈ Atom)
17. ¬(n "verify" ∈ Atom)
18. ¬(n "encrypt" ∈ Atom)
19. ¬(n "decrypt" ∈ Atom)
⊢ ∀p1:if =a "new" then Atom1
      if =a "send" then SecurityData
      if =a "rcv" then SecurityData
      if =a "encrypt" then SecurityData × Key × Atom1
      if =a "decrypt" then SecurityData × Key × Atom1
      if =a "sign" then SecurityData × Id × Atom1
      if =a "verify" then SecurityData × Id × Atom1
      else Top
      fi 
    if e ∈b Send then sdata-atoms(Send(e))
    if e ∈b Sign then sdata-atoms(signed(e))
    if e ∈b Verify then [signature(e) sdata-atoms(signed(e))]
    if e ∈b Encrypt then sdata-atoms(plainText(e)) encryption-key-atoms(key(e))
    if e ∈b Decrypt then [cipherText(e) encryption-key-atoms(key(e))]
    else []
    fi 
    if =a "send" then sdata-atoms(p1)
      if =a "encrypt" then sdata-atoms(fst(p1)) encryption-key-atoms(fst(snd(p1)))
      if =a "sign" then sdata-atoms(fst(p1))
      if =a "verify" then [snd(snd(p1)) sdata-atoms(fst(p1))]
      if =a "decrypt" then [snd(snd(p1)) encryption-key-atoms(fst(snd(p1)))]
      else []
      fi 
    ∈ (Atom1 List) 
    supposing if =a "new" then (↑e ∈b New) ∧ (New(e) p1 ∈ Atom1)
    if =a "send" then (↑e ∈b Send) ∧ (Send(e) p1 ∈ SecurityData)
    if =a "rcv" then (↑e ∈b Rcv) ∧ (Rcv(e) p1 ∈ SecurityData)
    if =a "encrypt" then (↑e ∈b Encrypt) ∧ (Encrypt(e) p1 ∈ (SecurityData × Key × Atom1))
    if =a "decrypt" then (↑e ∈b Decrypt) ∧ (Decrypt(e) p1 ∈ (SecurityData × Key × Atom1))
    if =a "sign" then (↑e ∈b Sign) ∧ (Sign(e) p1 ∈ (SecurityData × Id × Atom1))
    if =a "verify" then (↑e ∈b Verify) ∧ (Verify(e) p1 ∈ (SecurityData × Id × Atom1))
    else False
    fi 


Latex:



Latex:
\mforall{}[s:SES]
    \mforall{}[pa:ProtocolAction].  \mforall{}[es:EO+(Info)].  \mforall{}[e:E].    UsedAtoms(e)  =  pa-used(pa)  supposing  pa(e) 
    supposing  ActionsDisjoint


By


Latex:
(RepeatFor  5  ((D  0  THENA  Auto))
  THEN  Unfold  `ses-is-protocol-action`  0
  THEN  D  -3
  THEN  RepUR  ``pa-used  ses-used-atoms``  0\mcdot{}
  THEN  (MoveToConcl  (-3)
              THEN  Unfold  `ses-disjoint`  2
              THEN  (InstHyp  [\mkleeneopen{}es\mkleeneclose{}]  2\mcdot{}  THENA  Auto)
              THEN  Thin  2
              THEN  D  -1
              THEN  (InstHyp    [\mkleeneopen{}e\mkleeneclose{}]  (-1)\mcdot{}  THENA  Auto)
              THEN  Thin  (-2)
              THEN  SplitAndHyps
              THEN  let  tac  =  ((HypSubst'  (-1)  0  THEN  Reduce  0)
                                              THEN  (D  0  THENA  Auto)
                                              THEN  (D  0  THENA  Auto)
                                              THEN  D  (-1)\mcdot{}
                                              THEN  ThinTrivial
                                              THEN  SplitAndHyps
                                              THEN  Repeat  (((AutoSplit\mcdot{}  THENA  Auto)  THEN  ThinTrivial  THEN  Auto))
                                              THEN  ((RepUR  ``ses-signed  ses-verify-sig  ses-verify-signed  ses-cipher``  0
                                                            THEN  RepUR  ``ses-encryption-key    ses-decryption-key  ses-encrypted``  0
                                                            )
                                                          THEN  Auto
                                                          THEN  AutoSplit)\mcdot{})  in  (((Decide  n  =  "new"  THENA  Auto)  THENL  [tac;  Id])
                                                                                                      THEN  ((Decide  n  =  "send"  THENA  Auto)
                                                                                                                  THENL  [Try  (tac);  Id]
                                                                                                      )
                                                                                                      THEN  ((Decide  n  =  "rcv"  THENA  Auto)
                                                                                                                  THENL  [tac;  Id]
                                                                                                      )
                                                                                                      THEN  ((Decide  n  =  "sign"  THENA  Auto)
                                                                                                                  THENL  [tac;  Id]
                                                                                                      )
                                                                                                      THEN  ((Decide  n  =  "verify"  THENA  Auto)
                                                                                                                  THENL  [tac;  Id]
                                                                                                      )
                                                                                                      THEN  ((Decide  n  =  "encrypt"  THENA  Auto)
                                                                                                                  THENL  [tac;  Id]
                                                                                                      )
                                                                                                      THEN  ((Decide  n  =  "decrypt"  THENA  Auto)
                                                                                                                  THENL  [tac;  Id]
                                                                                                      ))\mcdot{})\mcdot{})




Home Index