github.com/aakash4dev/cometbft@v0.38.2/spec/light-client/accountability/MC_n4_f1.tla (about) 1 ----------------------------- MODULE MC_n4_f1 ------------------------------- 2 CONSTANT 3 \* @type: $round -> $process; 4 Proposer 5 6 \* the variables declared in TendermintAcc3 7 VARIABLES 8 \* @type: $process -> $round; 9 round, \* a process round number: Corr -> Rounds 10 \* @type: $process -> $step; 11 step, \* a process step: Corr -> { "PROPOSE", "PREVOTE", "PRECOMMIT", "DECIDED" } 12 \* @type: $process -> $value; 13 decision, \* process decision: Corr -> ValuesOrNil 14 \* @type: $process -> $value; 15 lockedValue, \* a locked value: Corr -> ValuesOrNil 16 \* @type: $process -> $round; 17 lockedRound, \* a locked round: Corr -> RoundsOrNil 18 \* @type: $process -> $value; 19 validValue, \* a valid value: Corr -> ValuesOrNil 20 \* @type: $process -> $round; 21 validRound, \* a valid round: Corr -> RoundsOrNil 22 \* @type: $round -> Set($proposeMsg); 23 msgsPropose, \* PROPOSE messages broadcast in the system, Rounds -> Messages 24 \* @type: $round -> Set($preMsg); 25 msgsPrevote, \* PREVOTE messages broadcast in the system, Rounds -> Messages 26 \* @type: $round -> Set($preMsg); 27 msgsPrecommit, \* PRECOMMIT messages broadcast in the system, Rounds -> Messages 28 \* @type: Set($proposeMsg); 29 evidencePropose, \* the PROPOSE messages used by some correct processes to make transitions 30 \* @type: Set($preMsg); 31 evidencePrevote, \* the PREVOTE messages used by some correct processes to make transitions 32 \* @type: Set($preMsg); 33 evidencePrecommit, \* the PRECOMMIT messages used by some correct processes to make transitions 34 \* @type: $action; 35 action \* we use this variable to see which action was taken 36 37 INSTANCE TendermintAccDebug_004_draft WITH 38 Corr <- {"c1", "c2", "c3"}, 39 Faulty <- {"f1"}, 40 N <- 4, 41 T <- 1, 42 ValidValues <- { "v0", "v1" }, 43 InvalidValues <- {"v2"}, 44 MaxRound <- 2 45 46 \* run Apalache with --cinit=ConstInit 47 ConstInit == \* the proposer is arbitrary -- works for safety 48 Proposer \in [Rounds -> AllProcs] 49 50 =============================================================================