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

[s:SES]
  ∀[pa:ProtocolAction]. ∀[es:EO+(Info)]. ∀[e:E].  UseableAtoms(e) pa-useable(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-useable ses-useable-atoms`` 0⋅
   THEN (MoveToConcl (-3)
         THEN Unfold `ses-disjoint` 2
         THEN (((InstHyp [⌜es⌝2⋅ THENM (Thin 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-sig ses-decrypted ses-crypt`` 0
                         THEN Auto
                         THEN AutoSplit) in (((Decide "new" ∈ Atom THENA Auto) THENL [tac; Id])
                                             THEN ((Decide "send" ∈ Atom THENA Auto) THENL [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 Rcv then sdata-atoms(Rcv(e))
    if e ∈b Sign then [signature(e)]
    if e ∈b Encrypt then [cipherText(e)]
    if e ∈b Decrypt then sdata-atoms(plainText(e))
    if e ∈b New then [New(e)]
    else []
    fi 
    if =a "new" then [p1]
      if =a "rcv" then sdata-atoms(p1)
      if =a "encrypt" then [snd(snd(p1))]
      if =a "decrypt" then sdata-atoms(fst(p1))
      if =a "sign" then [snd(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].    UseableAtoms(e)  =  pa-useable(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-useable  ses-useable-atoms``  0\mcdot{}
  THEN  (MoveToConcl  (-3)
              THEN  Unfold  `ses-disjoint`  2
              THEN  (((InstHyp  [\mkleeneopen{}es\mkleeneclose{}]  2\mcdot{}  THENM  (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  THENA  Auto)  THEN  ThinTrivial  THEN  Auto))
                                              THEN  RepUR  ``ses-sig  ses-decrypted  ses-crypt``  0
                                              THEN  Auto
                                              THEN  AutoSplit)  in  (((Decide  n  =  "new"  THENA  Auto)  THENL  [tac;  Id])
                                                                                      THEN  ((Decide  n  =  "send"  THENA  Auto)  THENL  [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