variables

State variables for this specification.

Nested DSLs

variables.variable

variable name, default \\ nil

Declare a state variable.

Arguments

NameTypeDefaultDocs
nameatomVariable name.
defaultanyInitial value of the variable.

Options

NameTypeDefaultDocs
typeatomVariable type (for documentation; not enforced by TLA+).

constants

Model constants (bound at model-checking time).

Nested DSLs

constants.constant

constant name

Declare a model constant.

Arguments

NameTypeDefaultDocs
nameatomConstant name (bound at model-checking time).

actions

Guarded state transitions.

Nested DSLs

actions.action

action name

Define a guarded state transition.

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatomAction name.

Options

NameTypeDefaultDocs
guardanyA quoted boolean expression that must be true for this action to fire.
awaitanyAlias for guard. A quoted boolean expression that must be true for this action to fire.
fairness:weak | :strongFairness constraint: :weak (WF) or :strong (SF).

actions.action.next

next variable, expr

Set the next-state value of a variable.

Arguments

NameTypeDefaultDocs
variableatomThe variable to update in the next state.
expranyA quoted expression for the next-state value.

actions.action.branch

branch name

A non-deterministic branch within an action (either/or).

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatomBranch name (for documentation).

Options

NameTypeDefaultDocs
guardanyA quoted boolean expression that must be true for this branch.

actions.action.branch.next

next variable, expr

Set the next-state value of a variable.

Arguments

NameTypeDefaultDocs
variableatomThe variable to update in the next state.
expranyA quoted expression for the next-state value.

invariants

Safety invariants checked at every reachable state.

Nested DSLs

invariants.invariant

invariant name, expr

Declare a safety invariant.

Arguments

NameTypeDefaultDocs
nameatomInvariant name.
expranyA quoted boolean expression that must hold in every reachable state.

processes

Concurrent process declarations.

Nested DSLs

  • process
    • action
      • next
      • branch
        • next
    • variable

processes.process

process name

Declare a concurrent process (PlusCal process (Name \in Set)).

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatomProcess name.

Options

NameTypeDefaultDocs
setanyThe set of process identifiers (e.g., a constant name or literal set).
fairness:weak | :strongDefault fairness for all actions in this process: :weak (WF) or :strong (SF).

processes.process.action

action name

Define a guarded state transition.

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatomAction name.

Options

NameTypeDefaultDocs
guardanyA quoted boolean expression that must be true for this action to fire.
awaitanyAlias for guard. A quoted boolean expression that must be true for this action to fire.
fairness:weak | :strongFairness constraint: :weak (WF) or :strong (SF).

processes.process.action.next

next variable, expr

Set the next-state value of a variable.

Arguments

NameTypeDefaultDocs
variableatomThe variable to update in the next state.
expranyA quoted expression for the next-state value.

processes.process.action.branch

branch name

A non-deterministic branch within an action (either/or).

Nested DSLs

Arguments

NameTypeDefaultDocs
nameatomBranch name (for documentation).

Options

NameTypeDefaultDocs
guardanyA quoted boolean expression that must be true for this branch.

processes.process.action.branch.next

next variable, expr

Set the next-state value of a variable.

Arguments

NameTypeDefaultDocs
variableatomThe variable to update in the next state.
expranyA quoted expression for the next-state value.

processes.process.variable

variable name, default \\ nil

Declare a state variable.

Arguments

NameTypeDefaultDocs
nameatomVariable name.
defaultanyInitial value of the variable.

Options

NameTypeDefaultDocs
typeatomVariable type (for documentation; not enforced by TLA+).

properties

Temporal properties checked over infinite traces.

Nested DSLs

properties.property

property name, expr

Declare a temporal property (liveness or safety over traces).

Arguments

NameTypeDefaultDocs
nameatomProperty name.
expranyA temporal expression: always(P), eventually(P), leads_to(P, Q).