-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmain.tla
More file actions
28 lines (19 loc) · 1.12 KB
/
main.tla
File metadata and controls
28 lines (19 loc) · 1.12 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
-------------------------------- MODULE main --------------------------------
CONSTANT RM
VARIABLE rmState
TCTypeOK == rmState \in [RM -> {"working", "prepared", "committed", "aborted"}]
TCInit == rmState = [r \in RM |-> "working"]
Prepare(r) == /\ rmState[r] = "working"
/\ rmState' = [s \in RM |-> IF s = r THEN "prepared" ELSE rmState[s]]
(*[rmState EXCEPT ![r] = "prepared"]*)
DecideCommit(r) == /\ rmState[r] = "prepared"
/\ \A s \in RM : rmState[s] \in {"prepared", "committed"}
/\ rmState' = [s \in RM |-> IF s = r THEN "committed" ELSE rmState[s]]
DecideAbort(r) == /\ rmState[r] = "working" \/ rmState[r] = "prepared"
/\ \A s \in RM : rmState[s] # "committed"
/\ rmState' = [s \in RM |-> IF s = r THEN "aborted" ELSE rmState[s]]
TCNext == \E r \in RM : Prepare(r) \/ DecideCommit(r) \/ DecideAbort(r)
=============================================================================
\* Modification History
\* Last modified Sat Dec 27 13:11:26 IST 2025 by wolfr
\* Created Sat Dec 27 12:49:07 IST 2025 by wolfr