THEOREM L_10 (H_LaterLogsHaveEarlierCommitted)

Lines 1300–1507 · AbstractRaft_IndProofs_test.tla
Obligations Proved
422/422
SMT / Trivial (TLAPM)
131 / 291
All Cached
Yes

Proof Notes

Proof Tree

<1>. USE A0,A1,A2,A3,A4,A5,A6 7/7 tlapm
#8 L1301:12:1301:14 trivial tlapm
#9 L1301:15:1301:17 trivial tlapm
#10 L1301:18:1301:20 trivial tlapm
#11 L1301:21:1301:23 trivial tlapm
#12 L1301:24:1301:26 trivial tlapm
#13 L1301:27:1301:29 trivial tlapm
#14 L1301:30:1301:32 trivial tlapm
<1>1 (H_LaterLogsHaveEarlierCommitted,ClientRequestAction) TypeOK /\ H_LeaderCompleteness /\ H_LaterLogsHaveEarlierCommitted /\ ClientRequestAction => H_LaterLogsHaveEarlierCommit... 102/102
<2>. SUFFICES ASSUME TypeOK, H_LeaderCompleteness, H_LaterLogsHaveEarlierCommitted, ClientRequestAction, 1/1 smt
#18 L1309:10:1309:12 proved smt cached
<2>1 PICK i \in Server : ClientRequest(i) BY DEF ClientRequestAction 1/1 smt
#19 L1310:48:1310:50 proved smt cached
<2>2 immediatelyCommitted' = immediatelyCommitted /\ c \in immediatelyCommitted BY <2>1 DEF ClientRequest 2/2 smt
#20 L1311:86:1311:88 proved smt cached
#21 L1311:89:1311:93 trivial tlapm
<2>3 c[1] >= 1 /\ c[1] \in Nat BY <2>2 DEF TypeOK, LogIndices 2/2 smt
#22 L1312:37:1312:39 proved smt cached
#23 L1312:40:1312:44 trivial tlapm
<2>4 log[i] \in Seq(Terms) BY DEF TypeOK 1/1 smt
#24 L1313:33:1313:35 proved smt cached
<2>5 CASE s # i 4/4 smt
#25 L1315:7:1315:9 proved smt cached
#26 L1315:10:1315:14 trivial tlapm
#27 L1315:16:1315:20 trivial tlapm
#28 L1315:22:1315:26 trivial tlapm
<2>6 CASE s = i 88/88
<2>. QED BY <2>5, <2>6 3/3 smt
#15 L1346:14:1346:16 proved smt cached
#16 L1346:17:1346:21 trivial tlapm
#17 L1346:23:1346:27 trivial tlapm
<1>2 (H_LaterLogsHaveEarlierCommitted,GetEntriesAction) TypeOK /\ H_TermsMonotonic /\ H_UniformLogEntries /\ H_LogMatching /\ H_LaterLogsHaveEarlierCommitted /\ GetEntriesActio... 161/161
<2>. SUFFICES ASSUME TypeOK, H_TermsMonotonic, H_UniformLogEntries, H_LogMatching, H_LaterLogsHaveEarlierCommitted, GetEntrie... 1/1 smt
#120 L1354:10:1354:12 proved smt cached
<2>1 PICK i \in Server, j \in Server : GetEntries(i, j) BY DEF GetEntriesAction 1/1 smt
#121 L1355:62:1355:64 proved smt cached
<2>2 immediatelyCommitted' = immediatelyCommitted /\ c \in immediatelyCommitted BY <2>1 DEF GetEntries 2/2 smt
#122 L1356:86:1356:88 proved smt cached
#123 L1356:89:1356:93 trivial tlapm
<2>3 c[1] >= 1 /\ c[1] \in Nat BY <2>2 DEF TypeOK, LogIndices 2/2 smt
#124 L1357:37:1357:39 proved smt cached
#125 L1357:40:1357:44 trivial tlapm
<2>4 log[i] \in Seq(Terms) /\ log[j] \in Seq(Terms) BY DEF TypeOK 1/1 smt
#126 L1358:58:1358:60 proved smt cached
<2>5 CASE s # i 4/4 smt
#127 L1360:7:1360:9 proved smt cached
#128 L1360:10:1360:14 trivial tlapm
#129 L1360:16:1360:20 trivial tlapm
#130 L1360:22:1360:26 trivial tlapm
<2>6 CASE s = i 147/147
<2>. QED BY <2>5, <2>6 3/3 smt
#117 L1417:14:1417:16 proved smt cached
#118 L1417:17:1417:21 trivial tlapm
#119 L1417:23:1417:27 trivial tlapm
<1>3 (H_LaterLogsHaveEarlierCommitted,RollbackEntriesAction) TypeOK /\ H_TermsMonotonic /\ H_LaterLogsHaveEarlierCommitted /\ RollbackEntriesAction => H_LaterLogsHaveEarlierCommitte... 84/84
<2>. SUFFICES ASSUME TypeOK, H_TermsMonotonic, H_LaterLogsHaveEarlierCommitted, RollbackEntriesAction, 1/1 smt
#281 L1425:10:1425:12 proved smt cached
<2>1 PICK i \in Server, j \in Server : RollbackEntries(i, j) 1/1 smt
#282 L1427:10:1427:12 proved smt cached
<2>2 immediatelyCommitted' = immediatelyCommitted BY <2>1 DEF RollbackEntries 2/2 smt
#283 L1428:56:1428:58 proved smt cached
#284 L1428:59:1428:63 trivial tlapm
<2>3 c[1] >= 1 /\ c[1] \in Nat BY <2>2 DEF TypeOK, LogIndices 2/2 smt
#285 L1429:37:1429:39 proved smt cached
#286 L1429:40:1429:44 trivial tlapm
<2>4 log[i] \in Seq(Terms) BY DEF TypeOK 1/1 smt
#287 L1430:33:1430:35 proved smt cached
<2>5 CASE s # i 4/4 smt
#288 L1432:7:1432:9 proved smt cached
#289 L1432:10:1432:14 trivial tlapm
#290 L1432:16:1432:20 trivial tlapm
#291 L1432:22:1432:26 trivial tlapm
<2>6 CASE s = i 70/70
<2>. QED BY <2>5, <2>6 3/3 smt
#278 L1458:14:1458:16 proved smt cached
#279 L1458:17:1458:21 trivial tlapm
#280 L1458:23:1458:27 trivial tlapm
<1>4 (H_LaterLogsHaveEarlierCommitted,BecomeLeaderAction) TypeOK /\ H_LaterLogsHaveEarlierCommitted /\ BecomeLeaderAction => H_LaterLogsHaveEarlierCommitted' BY DEF TypeOK,Become... 1/1 smt
#362 L1460:109:1460:111 proved smt cached
<1>5 (H_LaterLogsHaveEarlierCommitted,CommitEntryAction) TypeOK /\ H_LogEntryImpliesSafeAtTerm /\ H_LaterLogsHaveEarlierCommitted /\ CommitEntryAction => H_LaterLogsHaveEarlierC... 59/59
<2>. SUFFICES ASSUME TypeOK, H_LogEntryImpliesSafeAtTerm, H_LaterLogsHaveEarlierCommitted, CommitEntryAction, 1/1 smt
#367 L1468:10:1468:12 proved smt cached
<2>1 PICK leader \in Server, commitQuorum \in Quorums(Server) : CommitEntry(leader, commitQuorum) 1/1 smt
#368 L1470:10:1470:12 proved smt cached
<2>2 UNCHANGED log BY <2>1 DEF CommitEntry 2/2 smt
#369 L1471:25:1471:27 proved smt cached
#370 L1471:28:1471:32 trivial tlapm
<2>3 CASE c \in immediatelyCommitted 3/3 smt
#371 L1473:7:1473:9 proved smt cached
#372 L1473:10:1473:14 trivial tlapm
#373 L1473:16:1473:20 trivial tlapm
<2>4 CASE c = <<Len(log[leader]), currentTerm[leader]>> /\ c \notin immediatelyCommitted 48/48
<2>. QED BY <2>1, <2>3, <2>4 DEF CommitEntry 4/4 smt
#363 L1504:14:1504:16 proved smt cached
#364 L1504:17:1504:21 trivial tlapm
#365 L1504:23:1504:27 trivial tlapm
#366 L1504:29:1504:33 trivial tlapm
<1>6 (H_LaterLogsHaveEarlierCommitted,UpdateTermsAction) TypeOK /\ H_LaterLogsHaveEarlierCommitted /\ UpdateTermsAction => H_LaterLogsHaveEarlierCommitted' BY DEF TypeOK,UpdateT... 1/1 smt
#422 L1506:108:1506:110 proved smt cached
<1>7 QED BY <1>1,<1>2,<1>3,<1>4,<1>5,<1>6 DEF Next 7/7 smt
#1 L1507:11:1507:13 proved smt cached
#2 L1507:14:1507:18 trivial tlapm
#3 L1507:19:1507:23 trivial tlapm
#4 L1507:24:1507:28 trivial tlapm
#5 L1507:29:1507:33 trivial tlapm
#6 L1507:34:1507:38 trivial tlapm
#7 L1507:39:1507:43 trivial tlapm