Step
*
1
1
5
1
1
1
of Lemma
cs-ref-map3-decided
1. V : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. False supposing ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))@i
5. (COMMITED[v] ∈ L)@i
6. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L)
⊢ (¬(filter(λx.cs-is-committed(x);L) = [] ∈ (consensus-state3(V) List)))
⇒ (cs-committed-val(hd(filter(λx.cs-is-committed(x);L))) = v ∈ V)
BY
{ ((InstLemma `filter_type` [⌈consensus-state3(V)⌉;⌈λx.cs-is-committed(x)⌉;⌈L⌉]⋅ THENA Auto)
   THEN (GenConclAtAddr [1;1;2] THENA (Reduce 0 THEN Auto))
   ) }
1
1. V : Type
2. L : consensus-state3(V) List@i
3. v : V@i
4. False supposing ∀[i:ℕ||L||]. (¬↑cs-is-committed(L[i]))@i
5. (COMMITED[v] ∈ L)@i
6. ∀[v':V]. v' = v ∈ V supposing (CONSIDERING[v'] ∈ L) ∨ (COMMITED[v'] ∈ L)
7. filter(λx.cs-is-committed(x);L) ∈ {x:consensus-state3(V)| ↑((λx.cs-is-committed(x)) x)}  List
8. v1 : {x:consensus-state3(V)| ↑((λx.cs-is-committed(x)) x)}  List@i
9. filter(λx.cs-is-committed(x);L) = v1 ∈ ({x:consensus-state3(V)| ↑((λx.cs-is-committed(x)) x)}  List)@i
⊢ (¬(v1 = [] ∈ (consensus-state3(V) List))) 
⇒ (cs-committed-val(hd(v1)) = v ∈ V)
Latex:
1.  V  :  Type
2.  L  :  consensus-state3(V)  List@i
3.  v  :  V@i
4.  False  supposing  \mforall{}[i:\mBbbN{}||L||].  (\mneg{}\muparrow{}cs-is-committed(L[i]))@i
5.  (COMMITED[v]  \mmember{}  L)@i
6.  \mforall{}[v':V].  v'  =  v  supposing  (CONSIDERING[v']  \mmember{}  L)  \mvee{}  (COMMITED[v']  \mmember{}  L)
\mvdash{}  (\mneg{}(filter(\mlambda{}x.cs-is-committed(x);L)  =  []))
{}\mRightarrow{}  (cs-committed-val(hd(filter(\mlambda{}x.cs-is-committed(x);L)))  =  v)
By
((InstLemma  `filter\_type`  [\mkleeneopen{}consensus-state3(V)\mkleeneclose{};\mkleeneopen{}\mlambda{}x.cs-is-committed(x)\mkleeneclose{};\mkleeneopen{}L\mkleeneclose{}]\mcdot{}  THENA  Auto)
  THEN  (GenConclAtAddr  [1;1;2]  THENA  (Reduce  0  THEN  Auto))
  )
Home
Index