Step
*
of Lemma
consensus-ts4-ref-map1
∀[V:Type]
  ((∃v,v':V. (¬(v = v' ∈ V)))
  
⇒ (∀v,v':V.  Dec(v = v' ∈ V))
  
⇒ (∀A:Id List. ∀W:{a:Id| (a ∈ A)}  List List.
        (two-intersection(A;W)
        
⇒ {∀s:ConsensusState. ∀i:ℤ.
              ∃x:consensus-state3(V)
               ((x = INITIAL ∈ consensus-state3(V)
                
⇐⇒ ∃v,v':V
                     ((¬(v = v' ∈ V)) ∧ in state s, inning i could commit v  ∧ in state s, inning i could commit v' ))
               ∧ (x = WITHDRAWN ∈ consensus-state3(V) 
⇐⇒ ¬(∃v:V. in state s, inning i could commit v ))
               ∧ (∀v:V
                    ((x = COMMITED[v] ∈ consensus-state3(V) 
⇐⇒ in state s, inning i has committed v)
                    ∧ (x = CONSIDERING[v] ∈ consensus-state3(V)
                      
⇐⇒ in state s, inning i could commit v 
                          ∧ (¬in state s, inning i has committed v)
                          ∧ (∀v':V. (in state s, inning i could commit v'  
⇒ (v' = v ∈ V)))))))})))
BY
{ ((Auto
    THEN (Assert one-intersection(A;W) BY
                (All (Unfolds ``two-intersection one-intersection``)
                 THEN RepeatFor 2 (ParallelLast)⋅
                 THEN (InstHyp [⌈i⌉] (-1)⋅ THEN Auto THEN ParallelLast THEN Auto)⋅))
    )
   THEN Unfold `guard` 0
   ) }
1
1. [V] : Type
2. ∃v,v':V. (¬(v = v' ∈ V))@i
3. ∀v,v':V.  Dec(v = v' ∈ V)@i
4. A : Id List@i
5. W : {a:Id| (a ∈ A)}  List List@i
6. two-intersection(A;W)@i
7. one-intersection(A;W)
⊢ ∀s:ConsensusState. ∀i:ℤ.
    ∃x:consensus-state3(V)
     ((x = INITIAL ∈ consensus-state3(V)
      
⇐⇒ ∃v,v':V. ((¬(v = v' ∈ V)) ∧ in state s, inning i could commit v  ∧ in state s, inning i could commit v' ))
     ∧ (x = WITHDRAWN ∈ consensus-state3(V) 
⇐⇒ ¬(∃v:V. in state s, inning i could commit v ))
     ∧ (∀v:V
          ((x = COMMITED[v] ∈ consensus-state3(V) 
⇐⇒ in state s, inning i has committed v)
          ∧ (x = CONSIDERING[v] ∈ consensus-state3(V)
            
⇐⇒ in state s, inning i could commit v 
                ∧ (¬in state s, inning i has committed v)
                ∧ (∀v':V. (in state s, inning i could commit v'  
⇒ (v' = v ∈ V)))))))
Latex:
\mforall{}[V:Type]
    ((\mexists{}v,v':V.  (\mneg{}(v  =  v')))
    {}\mRightarrow{}  (\mforall{}v,v':V.    Dec(v  =  v'))
    {}\mRightarrow{}  (\mforall{}A:Id  List.  \mforall{}W:\{a:Id|  (a  \mmember{}  A)\}    List  List.
                (two-intersection(A;W)
                {}\mRightarrow{}  \{\mforall{}s:ConsensusState.  \mforall{}i:\mBbbZ{}.
                            \mexists{}x:consensus-state3(V)
                              ((x  =  INITIAL
                                \mLeftarrow{}{}\mRightarrow{}  \mexists{}v,v':V
                                          ((\mneg{}(v  =  v'))
                                          \mwedge{}  in  state  s,  inning  i  could  commit  v 
                                          \mwedge{}  in  state  s,  inning  i  could  commit  v'  ))
                              \mwedge{}  (x  =  WITHDRAWN  \mLeftarrow{}{}\mRightarrow{}  \mneg{}(\mexists{}v:V.  in  state  s,  inning  i  could  commit  v  ))
                              \mwedge{}  (\mforall{}v:V
                                        ((x  =  COMMITED[v]  \mLeftarrow{}{}\mRightarrow{}  in  state  s,  inning  i  has  committed  v)
                                        \mwedge{}  (x  =  CONSIDERING[v]
                                            \mLeftarrow{}{}\mRightarrow{}  in  state  s,  inning  i  could  commit  v 
                                                    \mwedge{}  (\mneg{}in  state  s,  inning  i  has  committed  v)
                                                    \mwedge{}  (\mforall{}v':V.  (in  state  s,  inning  i  could  commit  v'    {}\mRightarrow{}  (v'  =  v)))))))\})))
By
((Auto
    THEN  (Assert  one-intersection(A;W)  BY
                            (All  (Unfolds  ``two-intersection  one-intersection``)
                              THEN  RepeatFor  2  (ParallelLast)\mcdot{}
                              THEN  (InstHyp  [\mkleeneopen{}i\mkleeneclose{}]  (-1)\mcdot{}  THEN  Auto  THEN  ParallelLast  THEN  Auto)\mcdot{}))
    )
  THEN  Unfold  `guard`  0
  )
Home
Index