Repository navigation
Expand file tree
/
Copy pathAPGermanData.tla
More file actions
58 lines (51 loc) · 1.62 KB
/
Copy pathAPGermanData.tla
File metadata and controls
58 lines (51 loc) · 1.62 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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
----------------------------- MODULE APGermanData -----------------------------
(* Apalache type annotations for GermanData.tla, applied via INSTANCE so
the original spec remains free of tool-specific idiosyncrasies.
Nodes and data values are modelled as uninterpreted Apalache types (NODE,
DATA). The NoNode / NoData sentinels share those types so that the union
sets in TypeOK are well typed. Only the safety invariants are checked;
Apalache does not verify the liveness properties (FairSpec) of the spec.
Run bounded model checking for executions of at most 10 Next steps with:
apalache-mc check --config=APGermanData.cfg --length=10 APGermanData.tla
This completes in about 20 seconds on a 2021 M1 MacBook; length 20 takes
over 1.5 hours.
*)
CONSTANTS
\* @type: Set(NODE);
NODE,
\* @type: Set(DATA);
DATA,
\* @type: DATA;
NoData,
\* @type: NODE;
NoNode
VARIABLES
\* @type: NODE -> { state: Str, data: DATA };
cache,
\* @type: NODE -> { cmd: Str, data: DATA };
chan1,
\* @type: NODE -> { cmd: Str, data: DATA };
chan2,
\* @type: NODE -> { cmd: Str, data: DATA };
chan3,
\* @type: Set(NODE);
invSet,
\* @type: Set(NODE);
shrSet,
\* @type: Bool;
exGntd,
\* @type: Str;
curCmd,
\* @type: NODE;
curPtr,
\* @type: DATA;
memData,
\* @type: DATA;
auxData
INSTANCE GermanData
\* Concrete values for the constants used by APGermanData.cfg.
NodeVal == { "n1_OF_NODE", "n2_OF_NODE" }
DataVal == { "d1_OF_DATA", "d2_OF_DATA" }
NoDataVal == "noData_OF_DATA"
NoNodeVal == "noNode_OF_NODE"
==============================================================================