------------------ MODULE TendermintAccTrace_004_draft -------------------------
|
|
(*
|
|
When Apalache is running too slow and we have an idea of a counterexample,
|
|
we use this module to restrict the behaviors only to certain actions.
|
|
Once the whole trace is replayed, the system deadlocks.
|
|
|
|
Version 1.
|
|
|
|
Igor Konnov, 2020.
|
|
*)
|
|
|
|
EXTENDS Sequences, Apalache, TendermintAcc_004_draft
|
|
|
|
\* a sequence of action names that should appear in the given order,
|
|
\* excluding "Init"
|
|
CONSTANT
|
|
\* @type: TRACE;
|
|
Trace
|
|
|
|
VARIABLE
|
|
\* @type: TRACE;
|
|
toReplay
|
|
|
|
TraceInit ==
|
|
/\ toReplay = Trace
|
|
/\ action' := "Init"
|
|
/\ Init
|
|
|
|
TraceNext ==
|
|
/\ Len(toReplay) > 0
|
|
/\ toReplay' = Tail(toReplay)
|
|
\* Here is the trick. We restrict the action to the expected one,
|
|
\* so the other actions will be pruned
|
|
/\ action' := Head(toReplay)
|
|
/\ Next
|
|
|
|
================================================================================
|