Step * 1 2 1 1 1 1 1 1 1 1 3 1 1 1 1 1 1 1 1 1 1 1 1 1 of Lemma new_23_sig_progress-step10


1. Cmd {T:Type| valueall-type(T)} 
2. eq EqDecider(Cmd)
3. reps bag(Id)
4. clients bag(Id)
5. coeff {2...}
6. flrs : ℕ
7. propose Atom List
8. notify Atom List
9. slots set-sig{i:l}(ℤ)
10. new_23_sig_headers_type{i:l}(Cmd;notify;propose)
11. (f propose) (ℤ × Cmd) ∈ Type
12. (f notify) (ℤ × Cmd) ∈ Type
13. (f ``new_23_sig decided``) (ℤ × Cmd) ∈ Type
14. (f ``new_23_sig retry``) (ℤ × ℤ × Cmd) ∈ Type
15. (f ``new_23_sig vote``) (ℤ × ℤ × Cmd × Id) ∈ Type
16. f ∈ Name ─→ Type
17. es EO+(Message(f))
18. E
19. : ℤ
20. Cmd
21. faulty bag(Id)
22. msgs-interface-delivered-with-omissions(f;es;new_23_sig_main();faulty;flrs;reps)@i
23. bag-no-repeats(Id;reps)@i
24. #(reps) ((coeff flrs) flrs 1) ∈ ℤ@i
25. loc(e) ↓∈ reps@i
26. ¬loc(e) ↓∈ faulty@i
27. <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e)@i
28. ¬↑(set-sig-member(slots) new_23_sig_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e))@i
29. e' E
30. ((coeff flrs) 1)
||mapfilter(λe.<snd(msgval(e)), e, snd(fst(msgval(e)))>;
              λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);
              [e, e'])||
∈ ℤ
31. e ≤loc e' 
32. ↑new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0)
33. ¬↑(∃x∈[e, e'].new_23_sig_decided_with_id(Cmd;notify;propose;f;es;x;n))_b
34. 0 ≤ (coeff flrs)
35. e ≤loc e' 
36. ¬↑null(filter(λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);[e, e']))
37. ↑new_23_sig_vote_with_ballot(Cmd;notify;propose;f;es;e';n;0)
38. has-es-info-type(es;e';f;ℤ × ℤ × Cmd × Id)
39. poss-maj(eq;rev(mapfilter(λe.(snd(fst(msgval(e))));
                              λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);
                              [e, e']));snd(fst(msgval(e')))) ∈ ℤ × Cmd
40. e ≤loc e' 
41. (fst(poss-maj(eq;rev(mapfilter(λe.(snd(fst(msgval(e))));
                                   λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);
                                   [e, e']));snd(fst(msgval(e'))))))
((coeff flrs) 1)
∈ ℤ
42. loc(e') ↓∈ reps
43. e'@0 E@i
44. (e'@0 <loc e')@i
45. e ≤loc e'@0 @i
46. Interface@i
47. f1 (Cmd List × (Id List)) ─→ bag(Interface)
48. b1 Cmd List
49. b2 Id List
50. b7 : ℤ
51. b8 : ℤ
52. b6 Cmd
53. b4 Id
54. <<<b7, b8>b6>b4> ∈ new_23_sig_vote'base(Cmd;notify;propose;f)(e'@0)
55. f1 (new_23_sig_when_quorum(Cmd;eq;coeff;flrs;notify;propose;reps;f) <n, 0> loc(e'@0) <<<b7, b8>b6>b4>) ∈ ((Cmd\000C List × (Id List)) ─→ bag(Interface))
56. b1
rev(mapfilter(λe.(snd(fst(msgval(e))));
                λe1.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0);
                [e;e'@0)))
∈ (Cmd List)
57. b2
rev(mapfilter(λe.(snd(msgval(e)));λe1.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0);[e;e'@0)))
∈ (Id List)
58. ↑(new_23_sig_newvote(Cmd) <n, 0> <<<b7, b8>b6>b4> <b1, b2>)
59. ||filter(λe1.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0);[e;e'@0))|| (coeff flrs) ∈ ℤ
60. w ↓∈ let k,x poss-maj(eq;[b6 b1];b6) 
         in if (k =z (coeff flrs) 1)
            then new_23_sig_decided'broadcast(Cmd;notify;propose;f) reps <b7, x>
            else {new_23_sig_retry'send(Cmd;notify;propose;f) loc(e'@0) <<b7, b8 1>x>}
            fi 
61. ((coeff flrs) 1)
(||filter(λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);[e;e'))|| 1)
∈ ℤ
62. e ≤loc e' 
63. ↑new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0)
64. ||filter(λe1.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0);[e;e'@0))||
(||filter(λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);[e;e'@0))||
  ||filter(λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);[e'@0;e'))||)
∈ ℤ
65. (e'@0 ∈ [e, e'])
66. [e;e') ([e;e'@0) [e'@0;e')) ∈ (E List)
67. ↑null(filter(λe'.new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e';n;0);[e'@0;e')))
68. (e'@0 ∈ [e'@0;e'))
69. ↑new_23_sig_vote_with_ballot_and_id(Cmd;notify;propose;f;es;e'@0;b7;b8;b4)
70. b7 ∈ ℤ
71. b8 ∈ ℤ
72. ↑new_23_sig_vote_with_ballot(Cmd;notify;propose;f;es;e'@0;b7;b8)
73. ↑new_23_sig_vote_with_ballot(Cmd;notify;propose;f;es;e'@0;n;0)
74. has-es-info-type(es;e'@0;f;ℤ × ℤ × Cmd × Id)
75. e1 E@i
76. (e1 ∈ [e;e'@0))@i
77. msgval(e'@0) ∈ ℤ × ℤ × Cmd × Id
78. ↑new_23_sig_vote_with_ballot_and_id(Cmd;notify;propose;f;es;e1;n;0;snd(msgval(e'@0)))@i
79. e ≤loc e1 
80. (e1 <loc e'@0)
81. ↑new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0)
82. e ≤loc e1 
83. (e1 <loc e'@0)
84. ↑new_23_sig_vote_with_ballot_first(Cmd;notify;propose;f;es.e;e1;n;0)
85. (snd(msgval(e1))) (snd(msgval(e'@0))) ∈ Id
⊢ b4 (snd(msgval(e1))) ∈ Id
BY
(FLemma `new_23_sig_vote_with_ballot_and_id-snd` [69] THEN Auto) }


Latex:



Latex:

1.  Cmd  :  \{T:Type|  valueall-type(T)\} 
2.  eq  :  EqDecider(Cmd)
3.  reps  :  bag(Id)
4.  clients  :  bag(Id)
5.  coeff  :  \{2...\}
6.  flrs  :  \mBbbN{}
7.  propose  :  Atom  List
8.  notify  :  Atom  List
9.  slots  :  set-sig\{i:l\}(\mBbbZ{})
10.  f  :  new\_23\_sig\_headers\_type\{i:l\}(Cmd;notify;propose)
11.  (f  propose)  =  (\mBbbZ{}  \mtimes{}  Cmd)
12.  (f  notify)  =  (\mBbbZ{}  \mtimes{}  Cmd)
13.  (f  ``new\_23\_sig  decided``)  =  (\mBbbZ{}  \mtimes{}  Cmd)
14.  (f  ``new\_23\_sig  retry``)  =  (\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd)
15.  (f  ``new\_23\_sig  vote``)  =  (\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)
16.  f  \mmember{}  Name  {}\mrightarrow{}  Type
17.  es  :  EO+(Message(f))
18.  e  :  E
19.  n  :  \mBbbZ{}
20.  c  :  Cmd
21.  faulty  :  bag(Id)
22.  msgs-interface-delivered-with-omissions(f;es;new\_23\_sig\_main();faulty;flrs;reps)@i
23.  bag-no-repeats(Id;reps)@i
24.  \#(reps)  =  ((coeff  *  flrs)  +  flrs  +  1)@i
25.  loc(e)  \mdownarrow{}\mmember{}  reps@i
26.  \mneg{}loc(e)  \mdownarrow{}\mmember{}  faulty@i
27.  <n,  c>  \mmember{}  new\_23\_sig\_Proposal(Cmd;notify;propose;f)(e)@i
28.  \mneg{}\muparrow{}(set-sig-member(slots)  n  new\_23\_sig\_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e))@i
29.  e'  :  E
30.  ((coeff  *  flrs)  +  1)
=  ||mapfilter(\mlambda{}e.<snd(msgval(e)),  e,  snd(fst(msgval(e)))>
                            \mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);
                            [e,  e'])||
31.  e  \mleq{}loc  e' 
32.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0)
33.  \mneg{}\muparrow{}(\mexists{}x\mmember{}[e,  e'].new\_23\_sig\_decided\_with\_id(Cmd;notify;propose;f;es;x;n))\_b
34.  0  \mleq{}  (coeff  *  flrs)
35.  e  \mleq{}loc  e' 
36.  \mneg{}\muparrow{}null(filter(\mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);[e,  e']))
37.  \muparrow{}new\_23\_sig\_vote\_with\_ballot(Cmd;notify;propose;f;es;e';n;0)
38.  has-es-info-type(es;e';f;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)
39.  poss-maj(eq;rev(mapfilter(\mlambda{}e.(snd(fst(msgval(e))));
                                                            ...;
                                                            [e,  e']));snd(fst(msgval(e'))))  \mmember{}  \mBbbZ{}  \mtimes{}  Cmd
40.  e  \mleq{}loc  e' 
41.  (fst(poss-maj(eq;rev(mapfilter(\mlambda{}e.(snd(fst(msgval(e))));
                                                                      \mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;...;...;f;es.e;e';n;0);
                                                                      [e,  e']));snd(fst(msgval(e'))))))
=  ((coeff  *  flrs)  +  1)
42.  loc(e')  \mdownarrow{}\mmember{}  reps
43.  e'@0  :  E@i
44.  (e'@0  <loc  e')@i
45.  e  \mleq{}loc  e'@0  @i
46.  w  :  Interface@i
47.  f1  :  (Cmd  List  \mtimes{}  (Id  List))  {}\mrightarrow{}  bag(Interface)
48.  b1  :  Cmd  List
49.  b2  :  Id  List
50.  b7  :  \mBbbZ{}
51.  b8  :  \mBbbZ{}
52.  b6  :  Cmd
53.  b4  :  Id
54.  <<<b7,  b8>,  b6>,  b4>  \mmember{}  new\_23\_sig\_vote'base(Cmd;notify;propose;f)(e'@0)
55.  f1  =  (new\_23\_sig\_when\_quorum(Cmd;eq;coeff;flrs;notify;propose;reps;f)  <n,  0>  loc(e'@0)  <<<b7,  b8\000C>,  b6>,  b4>)
56.  b1
=  rev(mapfilter(\mlambda{}e.(snd(fst(msgval(e))));
                                \mlambda{}e1.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0);
                                [e;e'@0)))
57.  b2
=  rev(mapfilter(\mlambda{}e.(snd(msgval(e)));
                                \mlambda{}e1.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0);
                                [e;e'@0)))
58.  \muparrow{}(new\_23\_sig\_newvote(Cmd)  <n,  0>  <<<b7,  b8>,  b6>,  b4>  <b1,  b2>)
59.  ||filter(\mlambda{}e1.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0);[e;e'@0))||
=  (coeff  *  flrs)
60.  w  \mdownarrow{}\mmember{}  let  k,x  =  poss-maj(eq;[b6  /  b1];b6) 
                  in  if  (k  =\msubz{}  (coeff  *  flrs)  +  1)
                        then  new\_23\_sig\_decided'broadcast(Cmd;notify;propose;f)  reps  <b7,  x>
                        else  \{new\_23\_sig\_retry'send(Cmd;notify;propose;f)  loc(e'@0)  <<b7,  b8  +  1>,  x>\}
                        fi 
61.  ((coeff  *  flrs)  +  1)
=  (||filter(\mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);[e;e'))||  +  1)
62.  e  \mleq{}loc  e' 
63.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0)
64.  ||filter(\mlambda{}e1.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0);[e;e'@0))||
=  (||filter(\mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);[e;e'@0))||
    +  ||filter(\mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);[e'@0;e'))||)
65.  (e'@0  \mmember{}  [e,  e'])
66.  [e;e')  =  ([e;e'@0)  @  [e'@0;e'))
67.  \muparrow{}null(filter(\mlambda{}e'.new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e';n;0);[e'@0;e')))
68.  (e'@0  \mmember{}  [e'@0;e'))
69.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_and\_id(Cmd;notify;propose;f;es;e'@0;b7;b8;b4)
70.  n  =  b7
71.  0  =  b8
72.  \muparrow{}new\_23\_sig\_vote\_with\_ballot(Cmd;notify;propose;f;es;e'@0;b7;b8)
73.  \muparrow{}new\_23\_sig\_vote\_with\_ballot(Cmd;notify;propose;f;es;e'@0;n;0)
74.  has-es-info-type(es;e'@0;f;\mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id)
75.  e1  :  E@i
76.  (e1  \mmember{}  [e;e'@0))@i
77.  msgval(e'@0)  \mmember{}  \mBbbZ{}  \mtimes{}  \mBbbZ{}  \mtimes{}  Cmd  \mtimes{}  Id
78.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_and\_id(Cmd;notify;propose;f;es;e1;n;0;snd(msgval(e'@0)))@i
79.  e  \mleq{}loc  e1 
80.  (e1  <loc  e'@0)
81.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0)
82.  e  \mleq{}loc  e1 
83.  (e1  <loc  e'@0)
84.  \muparrow{}new\_23\_sig\_vote\_with\_ballot\_first(Cmd;notify;propose;f;es.e;e1;n;0)
85.  (snd(msgval(e1)))  =  (snd(msgval(e'@0)))
\mvdash{}  b4  =  (snd(msgval(e1)))


By


Latex:
(FLemma  `new\_23\_sig\_vote\_with\_ballot\_and\_id-snd`  [69]  THEN  Auto)




Home Index