libtlafmt 0.4.1

A formatter library for TLA+ specs, core of tlafmt
Documentation
---
source: libtlafmt/tests/format.rs
expression: output
input_file: libtlafmt/tests/corpus/LiveInternalMemory.tla
---
-------------------------- MODULE LiveInternalMemory ---------------------------

(***************************************************************************)
(* This module defines LISpec to be specification ISpec of module          *)
(* InternalMemory enhanced with the liveness condition described in the    *)
(* subsection "The Liveness Requirement" of the section "The Memory        *)
(* Specification".                                                         *)
(***************************************************************************)

EXTENDS InternalMemory

vars == << memInt, mem, ctl, buf >>
(*************************************************************************)
  (* The tuple of all variables.                                           *)
  (*************************************************************************)

Liveness == \A p \in Proc: WF_vars(Do(p)) /\ WF_vars(Rsp(p))
Liveness2 == \A p \in Proc: WF_vars(Do(p) \/ Rsp(p))
(*************************************************************************)
  (* The two versions of the liveness condition defined in the book.       *)
  (*************************************************************************)

LISpec == ISpec /\ Liveness2
(*************************************************************************)
  (* The spec with liveness.                                               *)
  (*************************************************************************)

(***************************************************************************)
(* The following property asserts that, whenever any processor p has       *)
(* issued a request, so ctl[p] = "busy", then a response eventually occurs,*)
(* setting ctl[p] to "rdy".                                                *)
(***************************************************************************)

LivenessProperty ==
    \A p \in Proc: (ctl[p] = "busy") ~> (ctl[p] = "rdy")

--------------------------------------------------------------------------------
(***************************************************************************)
(* The following theorem asserts that specification LISpec satisfies       *)
(* property LivenessProperty.  The accompanying configuration file has TLC *)
(* check this theorem.                                                     *)
(***************************************************************************)

THEOREM LISpec => LivenessProperty
================================================================================