Step
*
1
2
2
of Lemma
archive-condition-one-one
1. V : Type
2. A : Id List
3. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
4. t : ℕ+
5. f : (V List) ─→ V
6. L : consensus-rcv(V;A) List
7. n1 : ℤ
8. n2 : ℤ
9. v1 : V
10. v2 : V
11. L1 : consensus-rcv(V;A) List
12. r : consensus-rcv(V;A)
13. L = (L1 @ [r]) ∈ (consensus-rcv(V;A) List)
14. 0 < n1
15. ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1))|| ≤ (2 * t)
16. ↑null(filter(λr.n1 - 1 <z inning(r);L1))
17. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))||
18. (f values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))) = v1 ∈ V
19. ((L1 = [] ∈ (consensus-rcv(V;A) List))
∧ (((r = Init[v2] ∈ consensus-rcv(V;A)) ∧ (n2 = 0 ∈ ℤ))
  ∨ ((0 ≤ n2) ∧ (∃a:{a:Id| (a ∈ A)} . (r = Vote[a;n2;v2] ∈ consensus-rcv(V;A))))))
∨ ((0 < n2
  ∧ (||values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1))|| ≤ (2 * t))
  ∧ (↑null(filter(λr.n2 - 1 <z inning(r);L1))))
  ∧ ((∃a:{a:Id| (a ∈ A)} . (r = Vote[a;n2;v2] ∈ consensus-rcv(V;A)))
    ∨ ((((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1 @ [r]))||)
      ∧ ((f values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1 @ [r]))) = v2 ∈ V))))
⊢ (n1 = n2 ∈ ℤ) ∧ (v1 = v2 ∈ V)
BY
{ ((Assert ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1 @ [r]))|| BY
          Auto)
   THEN (FLemma `consensus-rcv-crosses-threshold` [-1;-6] THENA Auto)
   THEN ExRepD
   THEN MoveToHyp 0 (-7)
   THEN (HypSubst (-4) (-1) THENA Auto)
   THEN (Assert L = (L1 @ [Vote[a;n1 - 1;v]]) ∈ (consensus-rcv(V;A) List) BY
               Auto)
   THEN ThinVar `r'
   THEN RepeatFor 2 ((SplitOrHyps THEN ExRepD))) }
1
1. V : Type
2. A : Id List
3. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
4. t : ℕ+
5. f : (V List) ─→ V
6. L : consensus-rcv(V;A) List
7. n1 : ℤ
8. n2 : ℤ
9. v1 : V
10. v2 : V
11. L1 : consensus-rcv(V;A) List
12. 0 < n1
13. ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1))|| ≤ (2 * t)
14. ↑null(filter(λr.n1 - 1 <z inning(r);L1))
15. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))||
16. (f values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))) = v1 ∈ V
17. a : {a:Id| (a ∈ A)} 
18. v : V
19. ¬↑null(filter(λr.n1 - 1 - 1 <z inning(r);L1))
20. 0 ≤ (n1 - 1)
21. L1 = [] ∈ (consensus-rcv(V;A) List)
22. Vote[a;n1 - 1;v] = Init[v2] ∈ consensus-rcv(V;A)
23. n2 = 0 ∈ ℤ
24. L = (L1 @ [Vote[a;n1 - 1;v]]) ∈ (consensus-rcv(V;A) List)
⊢ (n1 = n2 ∈ ℤ) ∧ (v1 = v2 ∈ V)
2
1. V : Type
2. A : Id List
3. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
4. t : ℕ+
5. f : (V List) ─→ V
6. L : consensus-rcv(V;A) List
7. n1 : ℤ
8. n2 : ℤ
9. v1 : V
10. v2 : V
11. L1 : consensus-rcv(V;A) List
12. 0 < n1
13. ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1))|| ≤ (2 * t)
14. ↑null(filter(λr.n1 - 1 <z inning(r);L1))
15. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))||
16. (f values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))) = v1 ∈ V
17. a : {a:Id| (a ∈ A)} 
18. v : V
19. ¬↑null(filter(λr.n1 - 1 - 1 <z inning(r);L1))
20. 0 ≤ (n1 - 1)
21. L1 = [] ∈ (consensus-rcv(V;A) List)
22. 0 ≤ n2
23. a@0 : {a:Id| (a ∈ A)} 
24. Vote[a;n1 - 1;v] = Vote[a@0;n2;v2] ∈ consensus-rcv(V;A)
25. L = (L1 @ [Vote[a;n1 - 1;v]]) ∈ (consensus-rcv(V;A) List)
⊢ (n1 = n2 ∈ ℤ) ∧ (v1 = v2 ∈ V)
3
1. V : Type
2. A : Id List
3. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
4. t : ℕ+
5. f : (V List) ─→ V
6. L : consensus-rcv(V;A) List
7. n1 : ℤ
8. n2 : ℤ
9. v1 : V
10. v2 : V
11. L1 : consensus-rcv(V;A) List
12. 0 < n1
13. ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1))|| ≤ (2 * t)
14. ↑null(filter(λr.n1 - 1 <z inning(r);L1))
15. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))||
16. (f values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))) = v1 ∈ V
17. a : {a:Id| (a ∈ A)} 
18. v : V
19. ¬↑null(filter(λr.n1 - 1 - 1 <z inning(r);L1))
20. 0 ≤ (n1 - 1)
21. 0 < n2
22. ||values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1))|| ≤ (2 * t)
23. ↑null(filter(λr.n2 - 1 <z inning(r);L1))
24. a@0 : {a:Id| (a ∈ A)} 
25. Vote[a;n1 - 1;v] = Vote[a@0;n2;v2] ∈ consensus-rcv(V;A)
26. L = (L1 @ [Vote[a;n1 - 1;v]]) ∈ (consensus-rcv(V;A) List)
⊢ (n1 = n2 ∈ ℤ) ∧ (v1 = v2 ∈ V)
4
1. V : Type
2. A : Id List
3. IdDeq ∈ EqDecider({b:Id| (b ∈ A)} )
4. t : ℕ+
5. f : (V List) ─→ V
6. L : consensus-rcv(V;A) List
7. n1 : ℤ
8. n2 : ℤ
9. v1 : V
10. v2 : V
11. L1 : consensus-rcv(V;A) List
12. 0 < n1
13. ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L1))|| ≤ (2 * t)
14. ↑null(filter(λr.n1 - 1 <z inning(r);L1))
15. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))||
16. (f values-for-distinct(IdDeq;votes-from-inning(n1 - 1;L))) = v1 ∈ V
17. a : {a:Id| (a ∈ A)} 
18. v : V
19. ¬↑null(filter(λr.n1 - 1 - 1 <z inning(r);L1))
20. 0 ≤ (n1 - 1)
21. 0 < n2
22. ||values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1))|| ≤ (2 * t)
23. ↑null(filter(λr.n2 - 1 <z inning(r);L1))
24. ((2 * t) + 1) ≤ ||values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1 @ [Vote[a;n1 - 1;v]]))||
25. (f values-for-distinct(IdDeq;votes-from-inning(n2 - 1;L1 @ [Vote[a;n1 - 1;v]]))) = v2 ∈ V
26. L = (L1 @ [Vote[a;n1 - 1;v]]) ∈ (consensus-rcv(V;A) List)
⊢ (n1 = n2 ∈ ℤ) ∧ (v1 = v2 ∈ V)
Latex:
1.  V  :  Type
2.  A  :  Id  List
3.  IdDeq  \mmember{}  EqDecider(\{b:Id|  (b  \mmember{}  A)\}  )
4.  t  :  \mBbbN{}\msupplus{}
5.  f  :  (V  List)  {}\mrightarrow{}  V
6.  L  :  consensus-rcv(V;A)  List
7.  n1  :  \mBbbZ{}
8.  n2  :  \mBbbZ{}
9.  v1  :  V
10.  v2  :  V
11.  L1  :  consensus-rcv(V;A)  List
12.  r  :  consensus-rcv(V;A)
13.  L  =  (L1  @  [r])
14.  0  <  n1
15.  ||values-for-distinct(IdDeq;votes-from-inning(n1  -  1;L1))||  \mleq{}  (2  *  t)
16.  \muparrow{}null(filter(\mlambda{}r.n1  -  1  <z  inning(r);L1))
17.  ((2  *  t)  +  1)  \mleq{}  ||values-for-distinct(IdDeq;votes-from-inning(n1  -  1;L))||
18.  (f  values-for-distinct(IdDeq;votes-from-inning(n1  -  1;L)))  =  v1
19.  ((L1  =  [])
\mwedge{}  (((r  =  Init[v2])  \mwedge{}  (n2  =  0))  \mvee{}  ((0  \mleq{}  n2)  \mwedge{}  (\mexists{}a:\{a:Id|  (a  \mmember{}  A)\}  .  (r  =  Vote[a;n2;v2])))))
\mvee{}  ((0  <  n2
    \mwedge{}  (||values-for-distinct(IdDeq;votes-from-inning(n2  -  1;L1))||  \mleq{}  (2  *  t))
    \mwedge{}  (\muparrow{}null(filter(\mlambda{}r.n2  -  1  <z  inning(r);L1))))
    \mwedge{}  ((\mexists{}a:\{a:Id|  (a  \mmember{}  A)\}  .  (r  =  Vote[a;n2;v2]))
        \mvee{}  ((((2  *  t)  +  1)  \mleq{}  ||values-for-distinct(IdDeq;votes-from-inning(n2  -  1;L1  @  [r]))||)
            \mwedge{}  ((f  values-for-distinct(IdDeq;votes-from-inning(n2  -  1;L1  @  [r])))  =  v2))))
\mvdash{}  (n1  =  n2)  \mwedge{}  (v1  =  v2)
By
((Assert  ((2  *  t)  +  1)  \mleq{}  ||values-for-distinct(IdDeq;votes-from-inning(n1  -  1;L1  @  [r]))||  BY
                Auto)
  THEN  (FLemma  `consensus-rcv-crosses-threshold`  [-1;-6]  THENA  Auto)
  THEN  ExRepD
  THEN  MoveToHyp  0  (-7)
  THEN  (HypSubst  (-4)  (-1)  THENA  Auto)
  THEN  (Assert  L  =  (L1  @  [Vote[a;n1  -  1;v]])  BY
                          Auto)
  THEN  ThinVar  `r'
  THEN  RepeatFor  2  ((SplitOrHyps  THEN  ExRepD)))
Home
Index