Step
*
1
1
of Lemma
new_23_sig_progress-step4
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. f : 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 : E
19. n : ℤ
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) ↓∈ 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) n new_23_sig_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e))@i
29. b_all(Id;reps;i.↓∃e':E
∃c':Cmd
((loc(e') = i ∈ Id) ∧ mk-msg-interface(loc(e);make-Msg(``new_23_sig vote``;<<<n, 0>, c'>, i>)) ∈ \000Cnew_23_sig_main()(e')))
⊢ b_all(Id;[x∈reps|¬bbag-deq-member(IdDeq;x;faulty)];i.↓∃e':E
∃c':Cmd
((loc(e') = loc(e) ∈ Id)
∧ <<<n, 0>, c'>, i> ∈
new_23_sig_vote'base(Cmd;notify;propose;f)(e')))
BY
{ ((RepeatFor 3 (ParallelLast) THENA (BagMemberD (-1) THEN Auto))
THEN SquashExRepD
THEN BagMemberD (-5)
THEN RepD
THEN (RW assert_pushdownC (-5) THENA Auto)
THEN UnfoldTopAb 22
THEN RepD
THEN (InstHyp [⌜e'⌝;⌜mk-msg-interface(loc(e);make-Msg(``new_23_sig vote``;<<<n, 0>, c'>, i>))⌝] 23⋅ THENA Auto)
THEN SquashExRepD
THEN RepUR ``mk-msg-interface`` (-1)
THEN (RWO "make-msg-interface-equal" (-1) THENA Auto)
THEN RepD
THEN D 0
THEN InstConcl [⌜e'@0⌝;⌜c'⌝]⋅
THEN Auto
THEN UnfoldAtAddr [3] 0
THEN BLemma `base-noloc-classrel-make-Msg2`
THEN Auto) }
1
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. f : 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 : E
19. n : ℤ
20. c : Cmd
21. faulty : bag(Id)
22. #(faulty) ≤ flrs@i
23. ∀e:E. ∀dmsg:Interface.
(dmsg ∈ new_23_sig_main()(e)
⇒ (¬loc(e) ↓∈ faulty)
⇒ loc(e) ↓∈ reps
⇒ (↓∃e':E. ∃delay:ℤ. ((e < e') ∧ (dmsg = make-msg-interface(delay;loc(e');info(e')) ∈ Interface))))@i
24. bag-no-repeats(Id;reps)@i
25. #(reps) = ((coeff * flrs) + flrs + 1) ∈ ℤ@i
26. loc(e) ↓∈ reps@i
27. ¬loc(e) ↓∈ faulty@i
28. <n, c> ∈ new_23_sig_Proposal(Cmd;notify;propose;f)(e)@i
29. ¬↑(set-sig-member(slots) n new_23_sig_ReplicaStateFun(Cmd;notify;propose;slots;f;es;e))@i
30. ∀i:Id
(i ↓∈ reps
⇒ (↓∃e':E. ∃c':Cmd. ((loc(e') = i ∈ Id) ∧ mk-msg-interface(loc(e);make-Msg(``new_23_sig vote``;<<<n, 0>, c'>, i>)\000C) ∈ new_23_sig_main()(e'))))
31. i : Id@i
32. i ↓∈ reps
33. ¬i ↓∈ faulty
34. e' : E
35. c' : Cmd
36. loc(e') = i ∈ Id
37. mk-msg-interface(loc(e);make-Msg(``new_23_sig vote``;<<<n, 0>, c'>, i>)) ∈ new_23_sig_main()(e')
38. e'@0 : E
39. delay : ℤ
40. (e' < e'@0)
41. 0 = delay ∈ ℤ
42. loc(e) = loc(e'@0) ∈ Id
43. make-Msg(``new_23_sig vote``;<<<n, 0>, c'>, i>) = info(e'@0) ∈ Message(f)
44. loc(e'@0) = loc(e) ∈ Id
⊢ info(e'@0) = mk-msg(msg-authentic(info(e'@0));``new_23_sig vote``;<<<n, 0>, c'>, i>) ∈ Message(f)
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. b\_all(Id;reps;i.\mdownarrow{}\mexists{}e':E
\mexists{}c':Cmd
((loc(e') = i)
\mwedge{} mk-msg-interface(loc(e);make-Msg(``new\_23\_sig vote``;<<<n, 0>, c'>, i>)) \mmember{} \000Cnew\_23\_sig\_main()(e')))
\mvdash{} b\_all(Id;[x\mmember{}reps|
\mneg{}\msubb{}bag-deq-member(IdDeq;x;faulty)];i.\mdownarrow{}\mexists{}e':E
\mexists{}c':Cmd
((loc(e') = loc(e))
\mwedge{} <<<n, 0>, c'>, i> \mmember{}
new\_23\_sig\_vote'base(Cmd;notify;propose;f)(
e')))
By
Latex:
((RepeatFor 3 (ParallelLast) THENA (BagMemberD (-1) THEN Auto))
THEN SquashExRepD
THEN BagMemberD (-5)
THEN RepD
THEN (RW assert\_pushdownC (-5) THENA Auto)
THEN UnfoldTopAb 22
THEN RepD
THEN (InstHyp [\mkleeneopen{}e'\mkleeneclose{};\mkleeneopen{}mk-msg-interface(loc(e);make-Msg(``new\_23\_sig vote``;<<<n, 0>, c'>, i>))\mkleeneclose{}] 23\mcdot{}\000C THENA Auto)
THEN SquashExRepD
THEN RepUR ``mk-msg-interface`` (-1)
THEN (RWO "make-msg-interface-equal" (-1) THENA Auto)
THEN RepD
THEN D 0
THEN InstConcl [\mkleeneopen{}e'@0\mkleeneclose{};\mkleeneopen{}c'\mkleeneclose{}]\mcdot{}
THEN Auto
THEN UnfoldAtAddr [3] 0
THEN BLemma `base-noloc-classrel-make-Msg2`
THEN Auto)
Home
Index