Граф коммитов

283 Коммитов

Автор SHA1 Сообщение Дата
Markus Alexander Kuppe 999ce8fb75
Adjust the probabilities based on empirical data to achieve less uneven coverage of the action space during simulation (#6562)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Co-authored-by: Amaury Chamayou <amaury@xargs.fr>
2024-10-15 16:05:10 +00:00
Markus Alexander Kuppe b96daa8d6a
Check high-level liveness properties in simulation mode (#6545)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
2024-10-09 11:47:03 +00:00
Markus Alexander Kuppe d7cf62f5e1
Strengthen various *TypeInvs by defining every function's domain. (#6544)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
2024-10-09 11:23:54 +00:00
Heidi Howard 9e7fb2d3b0
Limiting the terms reached by ProposeVote (#6535) 2024-10-07 21:05:46 +00:00
Markus Alexander Kuppe 2d4f690869
Remove redefinitions of Terms in refinement mapping. (#6533)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-10-07 15:12:31 +00:00
Heidi Howard c71b7ced76
Remove `StatsFile.tla` (#6519)
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
2024-10-03 09:31:22 +00:00
Markus Alexander Kuppe e0a9ea3757
Remove writing state-space statistics after the demise of cimetrics. (#6518)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-10-02 16:59:53 +00:00
Markus Alexander Kuppe 76b2dcfacc
Check refinement of high-level spec abs with all models (#6509)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
2024-10-02 15:25:08 +00:00
Markus Alexander Kuppe 0ab6408da1
Assert (postcondition) that all "debug invariants" equal true in at least one state. (#6517)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
Co-authored-by: Amaury Chamayou <amchamay@microsoft.com>
2024-10-02 13:28:42 +00:00
Amaury Chamayou 50ffc62685
Iteration on TLC wrapper script (#6513)
Co-authored-by: Heidi Howard <1835251+heidihoward@users.noreply.github.com>
2024-10-02 11:15:32 +00:00
Amaury Chamayou df6d0043cf
Format Python under tla/ (#6515) 2024-10-01 15:39:22 +01:00
Markus Alexander Kuppe 2069c68c8a
Minimize number of TLC configuration files. (#6511)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-09-30 09:35:32 +01:00
Markus Alexander Kuppe 6fb0b5f0b9
Refactor abstract consensus specification (#6475)
* Refactor (simplify) TypeOK to use (more concise) Sequences!Seq operator.
* Define InitialLogs less explicitly.
* Add assumptions about abs.tla's constants (TLAPS will likely need those assumptions should we attempt writing a proof).
* Mitigate state-space explosion during explicit-state model checking by declaring constant Servers to be symmetric.

Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-09-26 17:50:50 -07:00
Amaury Chamayou f798800ae9
Add 2-Node consensus MC (#6504) 2024-09-26 21:47:12 +01:00
Markus Alexander Kuppe 5e615a9c97
Revert https://github.com/microsoft/CCF/pull/5939 (#6501)
Signed-off-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-09-26 13:00:39 +01:00
Heidi Howard c66cbb89b5
Adding an abstract consensus spec (#6438)
Co-authored-by: Markus Alexander Kuppe <github.com@lemmster.de>
2024-09-09 11:16:57 +00:00
Heidi Howard 01af78db24
Update TLA+ dev container to include new TLA+ vscode extension (#6460) 2024-09-04 14:18:38 +00:00
Heidi Howard bf4fcff670
New definition of TxID ordered speculative linearizability (#6185) 2024-06-14 15:00:19 +00:00
Heidi Howard d554f451ca
Typed model values in consensus spec (#6229) 2024-06-06 12:42:13 +00:00
Amaury Chamayou b3d0eff367
Document lack of request payload validation in ctv (#6187) 2024-05-17 15:23:24 +01:00
Amaury Chamayou cf8aadd054
Consensus tv todo cleanup (#6186) 2024-05-17 09:40:26 +00:00
Heidi Howard 5765fbdb55
Additional consistency invariant (#6184) 2024-05-16 23:36:22 +01:00
Heidi Howard 4eedf465d4
Spring clean consistency spec (#6182) 2024-05-16 17:26:50 +00:00
Heidi Howard 24690d1032
Tidy up TODOs in consistency spec (#6181) 2024-05-16 10:23:00 +00:00
Amaury Chamayou 62a6a1f625
Remove inapplicable TODO in ccfraft.tla (#6180) 2024-05-15 15:53:06 +00:00
Amaury Chamayou f871978ad0
Only log start end of committable indices in trace (#6172) 2024-05-09 09:20:18 +01:00
Markus Alexander Kuppe 5740fa4956
Document non-linearizability of read-only transactions in rare system condition (#6167) 2024-05-07 09:26:51 -07:00
Markus Alexander Kuppe 86e88ca61e Use typed model values to prevent bugs like 20d89bff16 in the future.
See relevant section in https://tla.msr-inria.inria.fr/tlatoolbox/doc/model/model-values.html
2024-05-04 02:49:35 -07:00
Markus Alexander Kuppe d9c6c53077 CommittedRwSerializableInvAlt ==
\A i,j,k,l \in DOMAIN history:
        \* Event k is the committed status received for the transaction in event i
        /\ history[i].type = RwTxResponse
        /\ history[k].type = TxStatusReceived
        /\ history[k].status = CommittedStatus
        /\ history[i].tx_id = history[k].tx_id
        \* Event l is the committed status received for the transaction in event j
        /\ history[j].type = RwTxResponse
        /\ history[l].type = TxStatusReceived
        /\ history[l].status = CommittedStatus
        /\ history[j].tx_id = history[l].tx_id
        => \/ IsPrefix(history[i].observed, history[j].observed)
           \/ IsPrefix(history[j].observed, history[i].observed)

CommittedRwSerializableInv ==
    \A i, j \in RwTxResponseEventIndexes:
        \A k, l \in CommittedEventIndexes:
            \* Event k is the committed status received for the transaction in event i
            /\ history[i].tx_id = history[k].tx_id
            \* Event l is the committed status received for the transaction in event j
            /\ history[j].tx_id = history[l].tx_id
            => \/ IsPrefix(history[i].observed, history[j].observed)
               \/ IsPrefix(history[j].observed, history[i].observed)

THEOREM CommittedRwSerializableInv <=> CommittedRwSerializableInvAlt
BY DEF CommittedRwSerializableInv, RwTxResponseEventIndexes, CommittedEventIndexes, CommittedRwSerializableInvAlt
2024-05-03 13:44:34 -07:00
Markus Alexander Kuppe c681de7608 Optimize for TLC:
InvalidNotObservedByCommittedInvAlt ==
    \A i, j, k, l \in DOMAIN history:
        /\ history[i].type = RwTxResponse
        /\ history[j].type = TxStatusReceived
        /\ history[j].status = InvalidStatus
        /\ history[k].type = RwTxResponse
        /\ history[l].type = TxStatusReceived
        /\ history[l].status = CommittedStatus
        /\ history[k].tx_id = history[l]
        /\ i # k
        => history[i].tx \notin ToSet(history[k].observed)

InvalidNotObservedByCommittedInv ==
    \A i, k \in RwTxResponseEventIndexes:
        i # k =>
        \A j \in InvalidEventIndexes:
            \A l \in CommittedEventIndexes:
                history[k].tx_id = history[l]
                => history[i].tx \notin ToSet(history[k].observed)

THEOREM InvalidNotObservedByCommittedInv <=> InvalidNotObservedByCommittedInvAlt
BY DEF InvalidNotObservedByCommittedInv, RwTxResponseEventIndexes, InvalidEventIndexes, CommittedEventIndexes, InvalidNotObservedByCommittedInvAlt
2024-05-03 13:44:34 -07:00
Markus Alexander Kuppe 71b626d25a Bug: `InvalidNotObservedByCommittedInv` is vacuously true. 2024-05-03 13:44:34 -07:00
Markus Alexander Kuppe a01af25eed
Fix off by one in consistency tv (#6154) 2024-04-29 12:57:28 +01:00
Amaury Chamayou dd2012f2e5
A trivial TLA+ loc counter (#6152) 2024-04-29 10:29:57 +01:00
Amaury Chamayou cd8b8dddcb
Consistency Trace Validation: match transaction ids, take 2 (#6143) 2024-04-23 16:06:20 +01:00
Amaury Chamayou 88cffcb2e5
Enable both Invalid and Commit on the future of the head branch (#6142) 2024-04-23 11:09:33 +01:00
Amaury Chamayou 55d51b8f23
Parameterise consistency spec on FirstView (#6140) 2024-04-22 16:41:41 +01:00
Amaury Chamayou fe19966a72
Fix comments in TMNR (#6135) 2024-04-19 14:40:06 +01:00
Amaury Chamayou b3705d92bb
Consistency Spec Trace Validation (#6124) 2024-04-18 11:14:29 +01:00
Heidi Howard b6320fcf8b
Adding signature txn to consistency spec (#6129) 2024-04-17 17:46:43 +01:00
Markus Alexander Kuppe c66745d838
Refactor Traceccfraft to reuse IsRequestVoteRequest. (#6104) 2024-03-29 21:36:44 +00:00
Markus Alexander Kuppe 8ace4aa604
Reduce noise of TLAi linter. (#6103) 2024-03-28 09:31:26 +00:00
Markus Alexander Kuppe c572ce32a0
Fix regression in StatsFile.tla (#6099) 2024-03-26 21:22:41 -07:00
Markus Alexander Kuppe e02b97addf
Periodically dump low-overhead action coverage. (#6093) 2024-03-26 18:19:17 -07:00
Markus Alexander Kuppe 67dd047dbc
Add TLAi linter. (#6098) 2024-03-26 17:10:54 -07:00
Markus Alexander Kuppe a078fc954b
Action and Variable coverage collection (#6092) 2024-03-25 22:10:13 +00:00
Amaury Chamayou aa695a6b4a
Add action number plotting script (#6074) 2024-03-21 12:15:42 +00:00
Amaury Chamayou daf99a8c66
Lower MaxTermLimit for Atomic Reconfig (#6076) 2024-03-19 14:56:57 +00:00
Amaury Chamayou ed3995154b
TLA comment update (#6069) 2024-03-18 11:42:20 +00:00
Amaury Chamayou 91d6ea44cc
Adopt a consistent 'ing style in TLA+ (#6068) 2024-03-15 17:46:34 +00:00
Amaury Chamayou 3a6dd6a50a
Raft: Nodes stay active later during reconfiguration to ensure liveness (#5973) 2024-03-15 11:10:44 +00:00