Step
*
1
1
of Lemma
pv11_p1_decision_from_p2a_acc
1. Cmd : Type
2. valueall-type(Cmd)
3. f : pv11_p1_headers_type{i:l}(Cmd)
4. (f [decision]) = (ℤ × Cmd) ∈ Type
5. (f [propose]) = (ℤ × Cmd) ∈ Type
6. (f ``pv11_p1 adopted``) = (pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List)) ∈ Type
7. (f ``pv11_p1 preempted``) = pv11_p1_Ballot_Num() ∈ Type
8. (f ``pv11_p1 p2b``) = (Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num()) ∈ Type
9. (f ``pv11_p1 p2a``) = (Id × pv11_p1_Ballot_Num() × ℤ × Cmd) ∈ Type
10. (f ``pv11_p1 p1b``)
= (Id × pv11_p1_Ballot_Num() × pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List))
∈ Type
11. (f ``pv11_p1 p1a``) = (Id × pv11_p1_Ballot_Num()) ∈ Type
12. f ∈ Name ─→ Type
13. es : EO+(Message(f))
14. accpts : bag(Id)
15. ldrs : bag(Id)
16. ldrs_uid : Id ─→ ℤ
17. reps : bag(Id)
18. e : E
19. s : ℤ
20. c : Cmd
21. a : Id
22. Inj(Id;ℤ;ldrs_uid)@i
23. pv11_p1_message-constraint{paxos-v11-part1.esh:o}(Cmd; accpts; ldrs; ldrs_uid; reps; f; es)@i
24. delay : ℤ@i'
25. client : Id@i'
26. loc(e) ↓∈ ldrs
27. e' : E
28. e' ≤loc e
29. header(e) = ``pv11_p1 p2b`` ∈ Name
30. has-es-info-type(es;e;f;Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num())
31. delay = 0 ∈ ℤ
32. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e))))) ∈ pv11_p1_Ballot_Num()
33. #(pv11_p1_CommanderStateFun(Cmd;accpts;f;fst(snd(msgval(e)));fst(snd(snd(msgval(e))));es.e';e)) < ...
34. client ↓∈ reps
35. ff = pv11_p1_init_active()
36. s = (fst(snd(snd(msgval(e))))) ∈ ℤ
37. (((header(e') = [propose] ∈ Name) ∧ has-es-info-type(es;e';f;ℤ × Cmd))
∧ ((↑(fst(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))))
∧ (¬↑(pv11_p1_in_domain(Cmd) (fst(msgval(e'))) (snd(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))))))
∧ ((fst(snd(msgval(e)))) = (fst(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e'))) ∈ pv11_p1_Ballot_Num())
∧ (<fst(snd(snd(msgval(e)))), c> = msgval(e') ∈ (ℤ × Cmd)))
∨ (((header(e') = ``pv11_p1 adopted`` ∈ Name)
∧ has-es-info-type(es;e';f;pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List)))
∧ ((fst(msgval(e'))) = (fst(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e'))) ∈ pv11_p1_Ballot_Num())
∧ ((<fst(snd(snd(msgval(e)))), c> ↓∈ snd(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))
∧ (¬(∃p2:Cmd. (<fst(snd(snd(msgval(e)))), p2> ∈ pv11_p1_pmax(Cmd;ldrs_uid) (snd(msgval(e')))))))
∨ (∃v2:pv11_p1_Ballot_Num()
(<v2, fst(snd(snd(msgval(e)))), c> ↓∈ snd(msgval(e'))
∧ (¬(∃z5:pv11_p1_Ballot_Num()
∃z8:Cmd. ((↑(v2 < z5)) ∧ (<z5, fst(snd(snd(msgval(e)))), z8> ∈ snd(msgval(e')))))))))
∧ ((fst(snd(msgval(e)))) = (fst(msgval(e'))) ∈ pv11_p1_Ballot_Num()))
38. (no ((pv11_p1_commander_output(Cmd;accpts;reps;f) <fst(snd(msgval(e))), fst(snd(snd(msgval(e)))), c> o pv11_p1_p2b'b\000Case(Cmd;f)) o
pv11_p1_CommanderState(Cmd;accpts;f) (fst(snd(msgval(e)))) (fst(snd(snd(msgval(e)))))) between e' and e)
39. has-es-info-type(es;e;f;Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num())@i
40. a ↓∈ accpts@i
41. ∀e:E
((header(e) ∈ pv11_p1_headers_no_inputs())
⇒ (↓∃e':E
∃delay:ℤ
((e' < e) ∧ make-msg-interface(delay;loc(e);info(e)) ∈ pv11_p1_main(Cmd;accpts;ldrs;ldrs_uid;reps;f)(e'))))
42. e1 : E
43. d1 : ℤ
44. (e1 < e)
45. loc(e1) ↓∈ accpts
46. header(e1) = ``pv11_p1 p2a`` ∈ Name
47. has-es-info-type(es;e1;f;Id × pv11_p1_Ballot_Num() × ℤ × Cmd)
48. d1 = 0 ∈ ℤ
49. loc(e) = (fst(msgval(e1))) ∈ Id
50. es-info-auth(es;e) = pv11_p1_init_active()
51. (fst(msgval(e))) = loc(e1) ∈ Id
52. (fst(snd(msgval(e)))) = (fst(snd(msgval(e1)))) ∈ pv11_p1_Ballot_Num()
53. (fst(snd(snd(msgval(e))))) = (fst(snd(snd(msgval(e1))))) ∈ ℤ
54. (snd(snd(snd(msgval(e))))) = (fst(pv11_p1_AcceptorStateFun(Cmd;ldrs_uid;f;es;e1))) ∈ pv11_p1_Ballot_Num()
55. (e1 < e)
56. loc(e1) ↓∈ accpts
57. s = (fst(snd(snd(msgval(e))))) ∈ ℤ
58. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e))))) ∈ pv11_p1_Ballot_Num()
59. msgval(e) ∈ Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num()
⊢ <loc(e), snd(snd(snd(msgval(e)))), s, c> ∈ pv11_p1_p2a'base(Cmd;f)(e1)
BY
{ (RepUR ``pv11_p1_p2a'base`` 0⋅
THEN BLemma `base-classrel-equal`
THEN Auto
THEN (D 0 THEN Auto)
THEN Repeat (SimpEqPairs)) }
1
1. Cmd : Type
2. valueall-type(Cmd)
3. f : pv11_p1_headers_type{i:l}(Cmd)
4. (f [decision]) = (ℤ × Cmd) ∈ Type
5. (f [propose]) = (ℤ × Cmd) ∈ Type
6. (f ``pv11_p1 adopted``) = (pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List)) ∈ Type
7. (f ``pv11_p1 preempted``) = pv11_p1_Ballot_Num() ∈ Type
8. (f ``pv11_p1 p2b``) = (Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num()) ∈ Type
9. (f ``pv11_p1 p2a``) = (Id × pv11_p1_Ballot_Num() × ℤ × Cmd) ∈ Type
10. (f ``pv11_p1 p1b``)
= (Id × pv11_p1_Ballot_Num() × pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List))
∈ Type
11. (f ``pv11_p1 p1a``) = (Id × pv11_p1_Ballot_Num()) ∈ Type
12. f ∈ Name ─→ Type
13. es : EO+(Message(f))
14. accpts : bag(Id)
15. ldrs : bag(Id)
16. ldrs_uid : Id ─→ ℤ
17. reps : bag(Id)
18. e : E
19. s : ℤ
20. c : Cmd
21. a : Id
22. Inj(Id;ℤ;ldrs_uid)@i
23. pv11_p1_message-constraint{paxos-v11-part1.esh:o}(Cmd; accpts; ldrs; ldrs_uid; reps; f; es)@i
24. delay : ℤ@i'
25. client : Id@i'
26. loc(e) ↓∈ ldrs
27. e' : E
28. e' ≤loc e
29. header(e) = ``pv11_p1 p2b`` ∈ Name
30. has-es-info-type(es;e;f;Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num())
31. delay = 0 ∈ ℤ
32. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e))))) ∈ pv11_p1_Ballot_Num()
33. #(pv11_p1_CommanderStateFun(Cmd;accpts;f;fst(snd(msgval(e)));fst(snd(snd(msgval(e))));es.e';e)) < ...
34. client ↓∈ reps
35. ff = pv11_p1_init_active()
36. s = (fst(snd(snd(msgval(e))))) ∈ ℤ
37. (((header(e') = [propose] ∈ Name) ∧ has-es-info-type(es;e';f;ℤ × Cmd))
∧ ((↑(fst(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))))
∧ (¬↑(pv11_p1_in_domain(Cmd) (fst(msgval(e'))) (snd(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))))))
∧ ((fst(snd(msgval(e)))) = (fst(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e'))) ∈ pv11_p1_Ballot_Num())
∧ (<fst(snd(snd(msgval(e)))), c> = msgval(e') ∈ (ℤ × Cmd)))
∨ (((header(e') = ``pv11_p1 adopted`` ∈ Name)
∧ has-es-info-type(es;e';f;pv11_p1_Ballot_Num() × ((pv11_p1_Ballot_Num() × ℤ × Cmd) List)))
∧ ((fst(msgval(e'))) = (fst(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e'))) ∈ pv11_p1_Ballot_Num())
∧ ((<fst(snd(snd(msgval(e)))), c> ↓∈ snd(snd(pv11_p1_LeaderStateFun(Cmd;ldrs_uid;f;es;e')))
∧ (¬(∃p2:Cmd. (<fst(snd(snd(msgval(e)))), p2> ∈ pv11_p1_pmax(Cmd;ldrs_uid) (snd(msgval(e')))))))
∨ (∃v2:pv11_p1_Ballot_Num()
(<v2, fst(snd(snd(msgval(e)))), c> ↓∈ snd(msgval(e'))
∧ (¬(∃z5:pv11_p1_Ballot_Num()
∃z8:Cmd. ((↑(v2 < z5)) ∧ (<z5, fst(snd(snd(msgval(e)))), z8> ∈ snd(msgval(e')))))))))
∧ ((fst(snd(msgval(e)))) = (fst(msgval(e'))) ∈ pv11_p1_Ballot_Num()))
38. (no ((pv11_p1_commander_output(Cmd;accpts;reps;f) <fst(snd(msgval(e))), fst(snd(snd(msgval(e)))), c> o pv11_p1_p2b'b\000Case(Cmd;f)) o
pv11_p1_CommanderState(Cmd;accpts;f) (fst(snd(msgval(e)))) (fst(snd(snd(msgval(e)))))) between e' and e)
39. has-es-info-type(es;e;f;Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num())@i
40. a ↓∈ accpts@i
41. ∀e:E
((header(e) ∈ pv11_p1_headers_no_inputs())
⇒ (↓∃e':E
∃delay:ℤ
((e' < e) ∧ make-msg-interface(delay;loc(e);info(e)) ∈ pv11_p1_main(Cmd;accpts;ldrs;ldrs_uid;reps;f)(e'))))
42. e1 : E
43. d1 : ℤ
44. (e1 < e)
45. loc(e1) ↓∈ accpts
46. header(e1) = ``pv11_p1 p2a`` ∈ Name
47. has-es-info-type(es;e1;f;Id × pv11_p1_Ballot_Num() × ℤ × Cmd)
48. d1 = 0 ∈ ℤ
49. loc(e) = (fst(msgval(e1))) ∈ Id
50. es-info-auth(es;e) = pv11_p1_init_active()
51. (fst(msgval(e))) = loc(e1) ∈ Id
52. (fst(snd(msgval(e)))) = (fst(snd(msgval(e1)))) ∈ pv11_p1_Ballot_Num()
53. (fst(snd(snd(msgval(e))))) = (fst(snd(snd(msgval(e1))))) ∈ ℤ
54. (snd(snd(snd(msgval(e))))) = (fst(pv11_p1_AcceptorStateFun(Cmd;ldrs_uid;f;es;e1))) ∈ pv11_p1_Ballot_Num()
55. (e1 < e)
56. loc(e1) ↓∈ accpts
57. s = (fst(snd(snd(msgval(e))))) ∈ ℤ
58. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e))))) ∈ pv11_p1_Ballot_Num()
59. msgval(e) ∈ Id × pv11_p1_Ballot_Num() × ℤ × pv11_p1_Ballot_Num()
60. header(e1) = ``pv11_p1 p2a`` ∈ Name
⊢ <loc(e), snd(snd(snd(msgval(e)))), s, c> = msgval(e1) ∈ (Id × pv11_p1_Ballot_Num() × ℤ × Cmd)
Latex:
Latex:
1. Cmd : Type
2. valueall-type(Cmd)
3. f : pv11\_p1\_headers\_type\{i:l\}(Cmd)
4. (f [decision]) = (\mBbbZ{} \mtimes{} Cmd)
5. (f [propose]) = (\mBbbZ{} \mtimes{} Cmd)
6. (f ``pv11\_p1 adopted``) = (pv11\_p1\_Ballot\_Num() \mtimes{} ((pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} Cmd) List))
7. (f ``pv11\_p1 preempted``) = pv11\_p1\_Ballot\_Num()
8. (f ``pv11\_p1 p2b``) = (Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} pv11\_p1\_Ballot\_Num())
9. (f ``pv11\_p1 p2a``) = (Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} Cmd)
10. (f ``pv11\_p1 p1b``)
= (Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} ((pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} Cmd) List))
11. (f ``pv11\_p1 p1a``) = (Id \mtimes{} pv11\_p1\_Ballot\_Num())
12. f \mmember{} Name {}\mrightarrow{} Type
13. es : EO+(Message(f))
14. accpts : bag(Id)
15. ldrs : bag(Id)
16. ldrs$_{uid}$ : Id {}\mrightarrow{} \mBbbZ{}
17. reps : bag(Id)
18. e : E
19. s : \mBbbZ{}
20. c : Cmd
21. a : Id
22. Inj(Id;\mBbbZ{};ldrs$_{uid}$)@i
23. pv11\_p1\_message-constraint\{paxos-v11-part1.esh:o\}(Cmd; accpts; ldrs; ldrs$_{uid}\000C$; reps; f; es)@i
24. delay : \mBbbZ{}@i'
25. client : Id@i'
26. loc(e) \mdownarrow{}\mmember{} ldrs
27. e' : E
28. e' \mleq{}loc e
29. header(e) = ``pv11\_p1 p2b``
30. has-es-info-type(es;e;f;Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} pv11\_p1\_Ballot\_Num())
31. delay = 0
32. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e)))))
33. \#(pv11\_p1\_CommanderStateFun(Cmd;accpts;f;fst(snd(msgval(e)));fst(snd(snd(...)));es.e';e)) < ...
34. client \mdownarrow{}\mmember{} reps
35. ff = pv11\_p1\_init\_active()
36. s = (fst(snd(snd(msgval(e)))))
37. (((header(e') = [propose]) \mwedge{} has-es-info-type(es;e';f;\mBbbZ{} \mtimes{} Cmd))
\mwedge{} ((\muparrow{}(fst(snd(pv11\_p1\_LeaderStateFun(Cmd;ldrs$_{uid}$;f;es;e')))))
\mwedge{} (\mneg{}\muparrow{}(pv11\_p1\_in\_domain(Cmd) (fst(msgval(e')))
(snd(snd(pv11\_p1\_LeaderStateFun(Cmd;ldrs$_{uid}$;f;es;e')))))))
\mwedge{} ((fst(snd(msgval(e)))) = (fst(pv11\_p1\_LeaderStateFun(Cmd;ldrs$_{uid}$;f;es;e')\000C)))
\mwedge{} (<fst(snd(snd(msgval(e)))), c> = msgval(e')))
\mvee{} (((header(e') = ``pv11\_p1 adopted``)
\mwedge{} has-es-info-type(es;e';f;pv11\_p1\_Ballot\_Num() \mtimes{} ((pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} Cmd) List)))
\mwedge{} ((fst(msgval(e'))) = (fst(pv11\_p1\_LeaderStateFun(Cmd;ldrs$_{uid}$;f;es;e')))\000C)
\mwedge{} ((<fst(snd(snd(msgval(e)))), c> \mdownarrow{}\mmember{} snd(snd(pv11\_p1\_LeaderStateFun(Cmd;ldrs$_{uid\mbackslash{}ff7\000Cd$;f;es;e')))
\mwedge{} (\mneg{}(\mexists{}p2:Cmd. (<fst(snd(snd(msgval(e)))), p2> \mmember{} pv11\_p1\_pmax(Cmd;ldrs$_{uid}\mbackslash{}ff2\000C4) (snd(msgval(e')))))))
\mvee{} (\mexists{}v2:pv11\_p1\_Ballot\_Num()
(<v2, fst(snd(snd(msgval(e)))), c> \mdownarrow{}\mmember{} snd(msgval(e'))
\mwedge{} (\mneg{}(\mexists{}z5:pv11\_p1\_Ballot\_Num()
\mexists{}z8:Cmd. ((\muparrow{}(v2 < z5)) \mwedge{} (<z5, fst(snd(snd(msgval(e)))), z8> \mmember{} snd(msgval(e')))))))))
\mwedge{} ((fst(snd(msgval(e)))) = (fst(msgval(e')))))
38. (no ((pv11\_p1\_commander\_output(Cmd;accpts;reps;f)
<fst(snd(msgval(e))), fst(snd(snd(msgval(e)))), c> o pv11\_p1\_p2b'base(Cmd;f)) o
pv11\_p1\_CommanderState(Cmd;accpts;f) (fst(snd(msgval(e)))) (fst(snd(snd(msgval(e))))))
between e' and e)
39. has-es-info-type(es;e;f;Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} pv11\_p1\_Ballot\_Num())@i
40. a \mdownarrow{}\mmember{} accpts@i
41. \mforall{}e:E
((header(e) \mmember{} pv11\_p1\_headers\_no\_inputs())
{}\mRightarrow{} (\mdownarrow{}\mexists{}e':E
\mexists{}delay:\mBbbZ{}
((e' < e)
\mwedge{} make-msg-interface(delay;loc(e);info(e)) \mmember{}
pv11\_p1\_main(Cmd;accpts;ldrs;ldrs$_{uid}$;reps;f)(e'))))
42. e1 : E
43. d1 : \mBbbZ{}
44. (e1 < e)
45. loc(e1) \mdownarrow{}\mmember{} accpts
46. header(e1) = ``pv11\_p1 p2a``
47. has-es-info-type(es;e1;f;Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} Cmd)
48. d1 = 0
49. loc(e) = (fst(msgval(e1)))
50. es-info-auth(es;e) = pv11\_p1\_init\_active()
51. (fst(msgval(e))) = loc(e1)
52. (fst(snd(msgval(e)))) = (fst(snd(msgval(e1))))
53. (fst(snd(snd(msgval(e))))) = (fst(snd(snd(msgval(e1)))))
54. (snd(snd(snd(msgval(e))))) = (fst(pv11\_p1\_AcceptorStateFun(Cmd;ldrs$_{uid}$;\000Cf;es;e1)))
55. (e1 < e)
56. loc(e1) \mdownarrow{}\mmember{} accpts
57. s = (fst(snd(snd(msgval(e)))))
58. (fst(snd(msgval(e)))) = (snd(snd(snd(msgval(e)))))
59. msgval(e) \mmember{} Id \mtimes{} pv11\_p1\_Ballot\_Num() \mtimes{} \mBbbZ{} \mtimes{} pv11\_p1\_Ballot\_Num()
\mvdash{} <loc(e), snd(snd(snd(msgval(e)))), s, c> \mmember{} pv11\_p1\_p2a'base(Cmd;f)(e1)
By
Latex:
(RepUR ``pv11\_p1\_p2a'base`` 0\mcdot{}
THEN BLemma `base-classrel-equal`
THEN Auto
THEN (D 0 THEN Auto)
THEN Repeat (SimpEqPairs))
Home
Index