Step
*
1
1
of Lemma
cs-ref-map3-decided
1. [V] : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
⊢ (COMMITED[v] ∈ L)
⇐⇒ if null(filter(λx.cs-is-committed(x);L))
    then if null(filter(λx.cs-is-considering(x);L))
         then AMBIVALENT
         else PREDECIDED[cs-considered-val(hd(filter(λx.cs-is-considering(x);L)))]
         fi 
    else Decided[cs-committed-val(hd(filter(λx.cs-is-committed(x);L)))]
    fi 
    = Decided[v]
    ∈ consensus-state2(V)
BY
{ ((InstLemma `filter_is_empty` [⌈consensus-state3(V)⌉;⌈λx.cs-is-committed(x)⌉;⌈L⌉]⋅ THENA Auto)
   THEN MoveToConcl (-1)
   THEN (SplitOnConclITE THENA Auto)
   THEN Reduce 0
   THEN Try ((SplitOnConclITE THENA Auto))
   THEN Auto
   THEN ThinTrivial) }
1
1. V : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List)
6. filter(λx.cs-is-considering(x);L) = [] ∈ (consensus-state3(V) List)
7. (COMMITED[v] ∈ L)@i
8. ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))
⊢ AMBIVALENT = Decided[v] ∈ consensus-state2(V)
2
1. [V] : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List)
6. filter(λx.cs-is-considering(x);L) = [] ∈ (consensus-state3(V) List)
7. AMBIVALENT = Decided[v] ∈ consensus-state2(V)@i
8. ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))
⊢ (COMMITED[v] ∈ L)
3
1. V : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List)
6. ¬(filter(λx.cs-is-considering(x);L) = [] ∈ (consensus-state3(V) List))
7. (COMMITED[v] ∈ L)@i
8. ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))
⊢ PREDECIDED[cs-considered-val(hd(filter(λx.cs-is-considering(x);L)))] = Decided[v] ∈ consensus-state2(V)
4
1. [V] : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List)
6. ¬(filter(λx.cs-is-considering(x);L) = [] ∈ (consensus-state3(V) List))
7. PREDECIDED[cs-considered-val(hd(filter(λx.cs-is-considering(x);L)))] = Decided[v] ∈ consensus-state2(V)@i
8. ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))
⊢ (COMMITED[v] ∈ L)
5
1. V : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. ¬(filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List))
6. False supposing ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))@i
7. (COMMITED[v] ∈ L)@i
⊢ Decided[cs-committed-val(hd(filter(λx.cs-is-committed(x);L)))] = Decided[v] ∈ consensus-state2(V)
6
1. [V] : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L) 
   supposing (CONSIDERING[v] ∈ L) ∨ (COMMITED[v] ∈ L)
5. ¬(filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List))
6. False supposing ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))@i
7. Decided[cs-committed-val(hd(filter(λx.cs-is-committed(x);L)))] = Decided[v] ∈ consensus-state2(V)@i
⊢ (COMMITED[v] ∈ L)
Latex:
1.  [V]  :  Type
2.  L  :  consensus-state3(V)  List@i
3.  v  :  V@i
4.  \mforall{}[v':V].  v'  =  v  supposing  (CONSIDERING[v']  \mmember{}  L)  \mvee{}  (COMMITED[v']  \mmember{}  L) 
      supposing  (CONSIDERING[v]  \mmember{}  L)  \mvee{}  (COMMITED[v]  \mmember{}  L)
\mvdash{}  (COMMITED[v]  \mmember{}  L)
\mLeftarrow{}{}\mRightarrow{}  if  null(filter(\mlambda{}x.cs-is-committed(x);L))
        then  if  null(filter(\mlambda{}x.cs-is-considering(x);L))
                  then  AMBIVALENT
                  else  PREDECIDED[cs-considered-val(hd(filter(\mlambda{}x.cs-is-considering(x);L)))]
                  fi 
        else  Decided[cs-committed-val(hd(filter(\mlambda{}x.cs-is-committed(x);L)))]
        fi 
        =  Decided[v]
By
((InstLemma  `filter\_is\_empty`  [\mkleeneopen{}consensus-state3(V)\mkleeneclose{};\mkleeneopen{}\mlambda{}x.cs-is-committed(x)\mkleeneclose{};\mkleeneopen{}L\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  MoveToConcl  (-1)
  THEN  (SplitOnConclITE  THENA  Auto)
  THEN  Reduce  0
  THEN  Try  ((SplitOnConclITE  THENA  Auto))
  THEN  Auto
  THEN  ThinTrivial)
Home
Index