File: PlusCalExample.tla

package info (click to toggle)
cloc 2.04-1
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 7,776 kB
  • sloc: perl: 29,368; cpp: 1,219; ansic: 334; asm: 267; makefile: 240; sh: 186; sql: 144; java: 136; ruby: 111; cs: 104; python: 84; pascal: 52; lisp: 50; cobol: 35; f90: 35; haskell: 35; objc: 25; php: 22; javascript: 15; fortran: 9; ml: 8; xml: 7; tcl: 2
file content (53 lines) | stat: -rw-r--r-- 1,225 bytes parent folder | download | duplicates (2)
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
---- MODULE PlusCalExample ----
(* TLA+/PlusCal example program. *)
(* Multi-line
   (* nested *)
   comment *)
\* Single-line comment

\* The code below appears to be a TLA+ comment but is PlusCal code which should
\* always be line-counted.
\* Grammar rules for PlusCal are specified in appendices A and C of A PlusCal
\* User's Manual: https://lamport.azurewebsites.net/tla/c-manual.pdf
(*
PlusCal options (-sf)
--algorithm Example {
  process (A = 0) {
    Start: skip;
  }
}
This is a comment line.
*)

\* The code between BEGIN( )TRANSLATION and END( )TRANSLATION should be
\* line-counted as generated code.
\* BEGIN TRANSLATION (chksum(pcal) = "7bf2389f" /\ chksum(tla) = "dd78b4d4")
VARIABLE pc

vars == << pc >>

ProcSet == {0}

Init == /\ pc = [self \in ProcSet |-> "Start"]

Start == /\ pc[0] = "Start"
         /\ TRUE
         /\ pc' = [pc EXCEPT ![0] = "Done"]

A == Start

(* Allow infinite stuttering to prevent deadlock on termination. *)
Terminating == /\ \A self \in ProcSet: pc[self] = "Done"
               /\ UNCHANGED vars

Next == A
           \/ Terminating

Spec == /\ Init /\ [][Next]_vars
        /\ SF_vars(A)

Termination == <>(\A self \in ProcSet: pc[self] = "Done")

\* END TRANSLATION

====