Step
*
2
1
1
of Lemma
archive-consensus-accum-num
1. V : Type
2. A : Id List
3. t : ℕ+
4. f : (V List) ─→ V
5. v0 : V
6. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
7. ys : consensus-rcv(V;A) List@i
8. y2 : {b:Id| (b ∈ A)} @i
9. y4 : ℕ@i
10. y5 : V@i
11. Vote[y2;y4;y5] ∈ consensus-rcv(V;A)
12. v1 : 𝔹@i
13. v3 : ℤ@i
14. v5 : {a:Id| (a ∈ A)} List@i
15. v7 : V List@i
16. v8 : V@i
17. consensus-accum-num-state(t;f;v0;ys) = <v1, v3, v5, v7, v8> ∈ (𝔹 × ℤ × {a:Id| (a ∈ A)} List × V List × V)@i
18. y4 < v3 - 1
19. ∀[v@0:V]. ∀[i:ℤ]. ↑v1 supposing archive-condition(V;A;t;f;i;v@0;ys)@i
20. filter(λr.v3 - 1 <z inning(r);ys) = [] ∈ (consensus-rcv(V;A) List)@i
21. ||v5|| = ||v7|| ∈ ℤ@i
22. zip(v5;v7) = votes-from-inning(v3 - 1;ys) ∈ (({b:Id| (b ∈ A)} × V) List)@i
23. 0 ≤ v3@i
24. 1 ≤ v3 supposing ¬↑null(ys)@i
25. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys))|| ≤ (2 * t)@i
26. filter(λr.v3 - 1 <z inning(r);ys @ [Vote[y2;y4;y5]]) = [] ∈ (consensus-rcv(V;A) List)@i
27. ||v5|| = ||v7|| ∈ ℤ@i
28. zip(v5;v7) = votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]]) ∈ (({b:Id| (b ∈ A)} × V) List)@i
29. 0 ≤ v3@i
30. 1 ≤ v3 supposing ¬↑null(ys @ [Vote[y2;y4;y5]])@i
31. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]]))|| ≤ (2 * t)@i
32. v@0 : V
33. i : ℤ
34. 0 < i
35. ||values-for-distinct(IdDeq;votes-from-inning(i - 1;ys))|| ≤ (2 * t)
36. ↑null(filter(λr.i - 1 <z inning(r);ys))
37. y4 = i ∈ ℤ
38. v@0 = y5 ∈ V
39. i < v3
40. votes-from-inning(v3 - 1;ys) ~ []
41. ((2 * t) + 1) ≤ ||remove-repeats(IdDeq;map(λp.(fst(p));votes-from-inning(v3 - 2;ys)))||
⊢ False
BY
{ ((Decide i < v3 - 1 THENA Auto)
THENL [((Assert votes-from-inning(v3 - 2;ys) ~ [] BY
OnMaybeHyp 36 (\h. ((RW assert_pushdownC h THENA Auto)
THEN Using [`i',⌈v3 - 2⌉] (FLemma `votes-from-inning-is-nil` [h])⋅
THEN Auto)))
THEN HypSubst' -1 -3
THEN Reduce (-3)
THEN Auto')
; Id]
) }
1
1. V : Type
2. A : Id List
3. t : ℕ+
4. f : (V List) ─→ V
5. v0 : V
6. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
7. ys : consensus-rcv(V;A) List@i
8. y2 : {b:Id| (b ∈ A)} @i
9. y4 : ℕ@i
10. y5 : V@i
11. Vote[y2;y4;y5] ∈ consensus-rcv(V;A)
12. v1 : 𝔹@i
13. v3 : ℤ@i
14. v5 : {a:Id| (a ∈ A)} List@i
15. v7 : V List@i
16. v8 : V@i
17. consensus-accum-num-state(t;f;v0;ys) = <v1, v3, v5, v7, v8> ∈ (𝔹 × ℤ × {a:Id| (a ∈ A)} List × V List × V)@i
18. y4 < v3 - 1
19. ∀[v@0:V]. ∀[i:ℤ]. ↑v1 supposing archive-condition(V;A;t;f;i;v@0;ys)@i
20. filter(λr.v3 - 1 <z inning(r);ys) = [] ∈ (consensus-rcv(V;A) List)@i
21. ||v5|| = ||v7|| ∈ ℤ@i
22. zip(v5;v7) = votes-from-inning(v3 - 1;ys) ∈ (({b:Id| (b ∈ A)} × V) List)@i
23. 0 ≤ v3@i
24. 1 ≤ v3 supposing ¬↑null(ys)@i
25. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys))|| ≤ (2 * t)@i
26. filter(λr.v3 - 1 <z inning(r);ys @ [Vote[y2;y4;y5]]) = [] ∈ (consensus-rcv(V;A) List)@i
27. ||v5|| = ||v7|| ∈ ℤ@i
28. zip(v5;v7) = votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]]) ∈ (({b:Id| (b ∈ A)} × V) List)@i
29. 0 ≤ v3@i
30. 1 ≤ v3 supposing ¬↑null(ys @ [Vote[y2;y4;y5]])@i
31. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]]))|| ≤ (2 * t)@i
32. v@0 : V
33. i : ℤ
34. 0 < i
35. ||values-for-distinct(IdDeq;votes-from-inning(i - 1;ys))|| ≤ (2 * t)
36. ↑null(filter(λr.i - 1 <z inning(r);ys))
37. y4 = i ∈ ℤ
38. v@0 = y5 ∈ V
39. i < v3
40. votes-from-inning(v3 - 1;ys) ~ []
41. ((2 * t) + 1) ≤ ||remove-repeats(IdDeq;map(λp.(fst(p));votes-from-inning(v3 - 2;ys)))||
42. ¬i < v3 - 1
⊢ False
Latex:
1. V : Type
2. A : Id List
3. t : \mBbbN{}\msupplus{}
4. f : (V List) {}\mrightarrow{} V
5. v0 : V
6. IdDeq \mmember{} EqDecider(\{b:Id| (b \mmember{} A)\} )
7. ys : consensus-rcv(V;A) List@i
8. y2 : \{b:Id| (b \mmember{} A)\} @i
9. y4 : \mBbbN{}@i
10. y5 : V@i
11. Vote[y2;y4;y5] \mmember{} consensus-rcv(V;A)
12. v1 : \mBbbB{}@i
13. v3 : \mBbbZ{}@i
14. v5 : \{a:Id| (a \mmember{} A)\} List@i
15. v7 : V List@i
16. v8 : V@i
17. consensus-accum-num-state(t;f;v0;ys) = <v1, v3, v5, v7, v8>@i
18. y4 < v3 - 1
19. \mforall{}[v@0:V]. \mforall{}[i:\mBbbZ{}]. \muparrow{}v1 supposing archive-condition(V;A;t;f;i;v@0;ys)@i
20. filter(\mlambda{}r.v3 - 1 <z inning(r);ys) = []@i
21. ||v5|| = ||v7||@i
22. zip(v5;v7) = votes-from-inning(v3 - 1;ys)@i
23. 0 \mleq{} v3@i
24. 1 \mleq{} v3 supposing \mneg{}\muparrow{}null(ys)@i
25. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys))|| \mleq{} (2 * t)@i
26. filter(\mlambda{}r.v3 - 1 <z inning(r);ys @ [Vote[y2;y4;y5]]) = []@i
27. ||v5|| = ||v7||@i
28. zip(v5;v7) = votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]])@i
29. 0 \mleq{} v3@i
30. 1 \mleq{} v3 supposing \mneg{}\muparrow{}null(ys @ [Vote[y2;y4;y5]])@i
31. ||values-for-distinct(IdDeq;votes-from-inning(v3 - 1;ys @ [Vote[y2;y4;y5]]))|| \mleq{} (2 * t)@i
32. v@0 : V
33. i : \mBbbZ{}
34. 0 < i
35. ||values-for-distinct(IdDeq;votes-from-inning(i - 1;ys))|| \mleq{} (2 * t)
36. \muparrow{}null(filter(\mlambda{}r.i - 1 <z inning(r);ys))
37. y4 = i
38. v@0 = y5
39. i < v3
40. votes-from-inning(v3 - 1;ys) \msim{} []
41. ((2 * t) + 1) \mleq{} ||remove-repeats(IdDeq;map(\mlambda{}p.(fst(p));votes-from-inning(v3 - 2;ys)))||
\mvdash{} False
By
((Decide i < v3 - 1 THENA Auto)
THENL [((Assert votes-from-inning(v3 - 2;ys) \msim{} [] BY
OnMaybeHyp 36 (\mbackslash{}h. ((RW assert\_pushdownC h THENA Auto)
THEN Using [`i',\mkleeneopen{}v3 - 2\mkleeneclose{}
] (FLemma `votes-from-inning-is-nil` [h])\mcdot{}
THEN Auto)))
THEN HypSubst' -1 -3
THEN Reduce (-3)
THEN Auto')
; Id]
)
Home
Index