Step
*
of Lemma
three-cs-vote-invariant
∀V:Type. ∀A:Id List. ∀t:ℕ+. ∀f:(V List) ─→ V. ∀s:ts-type(three-consensus-ts(V;A;t;f)).
  ((ts-init(three-consensus-ts(V;A;t;f)) (ts-rel(three-consensus-ts(V;A;t;f))^*) s)
  
⇒ (∀a:{a:Id| (a ∈ A)} . ∀n:ℕ. ∀b:{a:Id| (a ∈ A)} . ∀v1:V.
        ((Vote[b;n;v1] ∈ s a) 
⇒ (∃L:consensus-rcv(V;A) List. (L ≤ s b ∧ archive-condition(V;A;t;f;n;v1;L))))))
BY
{ ((RepeatFor 4 ((D 0 THENA Auto))
    THEN (BLemma `ts-reachable-induction2`
          THENA (Auto THEN DVar `s' THEN AllHyps h.(RepUR ``ts-type three-consensus-ts`` h THEN Auto) )
          )
    THEN Try (((Unfold `ts-init` 0 THEN RepUR ``three-consensus-ts`` 0) THEN Auto)))
   THEN RepeatFor 2 (((D 0 THENA Auto) THEN D -1 THEN Thin (-1) THEN RepUR ``ts-type three-consensus-ts`` -1))
   THEN RepUR ``ts-rel three-consensus-ts`` 0
   THEN Auto
   THEN ExRepD) }
1
1. V : Type@i'
2. A : Id List@i
3. t : ℕ+@i
4. f : (V List) ─→ V@i
5. s : {a:Id| (a ∈ A)}  ─→ (consensus-rcv(V;A) List)@i
6. y : {a:Id| (a ∈ A)}  ─→ (consensus-rcv(V;A) List)@i
7. ∀a:{a:Id| (a ∈ A)} . ∀n:ℕ. ∀b:{a:Id| (a ∈ A)} . ∀v1:V.
     ((Vote[b;n;v1] ∈ s a) 
⇒ (∃L:consensus-rcv(V;A) List. (L ≤ s b ∧ archive-condition(V;A;t;f;n;v1;L))))@i
8. a1 : {a:Id| (a ∈ A)} @i
9. e : consensus-rcv(V;A)@i
10. ∀b:{a:Id| (a ∈ A)} . ∀i:ℕ. ∀v:V.
      ((e = Vote[b;i;v] ∈ consensus-rcv(V;A))
      
⇒ ((∃L:consensus-rcv(V;A) List. (L ≤ s b ∧ archive-condition(V;A;t;f;i;v;L))) ∧ (¬(e ∈ s a1))))@i
11. ∀b:{a:Id| (a ∈ A)} . ((¬(b = a1 ∈ Id)) 
⇒ ((y b) = (s b) ∈ (consensus-rcv(V;A) List)))@i
12. (y a1) = ((s a1) @ [e]) ∈ (consensus-rcv(V;A) List)@i
13. a : {a:Id| (a ∈ A)} @i
14. n : ℕ@i
15. b : {a:Id| (a ∈ A)} @i
16. v1 : V@i
17. (Vote[b;n;v1] ∈ y a)@i
⊢ ∃L:consensus-rcv(V;A) List. (L ≤ y b ∧ archive-condition(V;A;t;f;n;v1;L))
Latex:
\mforall{}V:Type.  \mforall{}A:Id  List.  \mforall{}t:\mBbbN{}\msupplus{}.  \mforall{}f:(V  List)  {}\mrightarrow{}  V.  \mforall{}s:ts-type(three-consensus-ts(V;A;t;f)).
    ((ts-init(three-consensus-ts(V;A;t;f))  (ts-rel(three-consensus-ts(V;A;t;f))\^{}*)  s)
    {}\mRightarrow{}  (\mforall{}a:\{a:Id|  (a  \mmember{}  A)\}  .  \mforall{}n:\mBbbN{}.  \mforall{}b:\{a:Id|  (a  \mmember{}  A)\}  .  \mforall{}v1:V.
                ((Vote[b;n;v1]  \mmember{}  s  a)
                {}\mRightarrow{}  (\mexists{}L:consensus-rcv(V;A)  List.  (L  \mleq{}  s  b  \mwedge{}  archive-condition(V;A;t;f;n;v1;L))))))
By
((RepeatFor  4  ((D  0  THENA  Auto))
    THEN  (BLemma  `ts-reachable-induction2`
                THENA  (Auto
                              THEN  DVar  `s'
                              THEN  AllHyps  h.(RepUR  ``ts-type  three-consensus-ts``  h  THEN  Auto)  )
                )
    THEN  Try  (((Unfold  `ts-init`  0  THEN  RepUR  ``three-consensus-ts``  0)  THEN  Auto)))
  THEN  RepeatFor  2  (((D  0  THENA  Auto)
                                        THEN  D  -1
                                        THEN  Thin  (-1)
                                        THEN  RepUR  ``ts-type  three-consensus-ts``  -1))
  THEN  RepUR  ``ts-rel  three-consensus-ts``  0
  THEN  Auto
  THEN  ExRepD)
Home
Index