theory README imports Main

section ‹TLA: Lamport's Temporal Logic of Actions›

text ‹
  TLA 🌐‹›
  is a linear-time temporal logic introduced by Leslie Lamport in ‹The
  Temporal Logic of Actions› (ACM TOPLAS 16(3), 1994, 872-923). Unlike other
  temporal logics, both systems and properties are represented as logical
  formulas, and logical connectives such as implication, conjunction, and
  existential quantification represent structural relations such as
  refinement, parallel composition, and hiding. TLA has been applied to
  numerous case studies.

  This directory formalizes TLA in Isabelle/HOL, as follows:

     🗏‹Intensional.thy› prepares the ground by introducing basic syntax for
      "lifted", possible-world based logics.

     🗏‹Stfun.thy› and 🗏‹Action.thy› represent the state and transition
      level formulas of TLA, evaluated over single states and pairs of states.

     🗏‹Init.thy› introduces temporal logic and defines conversion functions
      from nontemporal to temporal formulas.

     🗏‹TLA.thy› axiomatizes proper temporal logic.

  Please consult the ‹design notes›
  for further information regarding the setup and use of this encoding of TLA.

  The theories are accompanied by a small number of examples:

     🗀‹Inc›: Lamport's ‹increment› example, a standard TLA benchmark,
      illustrates an elementary TLA proof.

     🗀‹Buffer›: a proof that two buffers in a row implement a single buffer,
      uses a simple refinement mapping.

     🗀‹Memory›: a verification of (the untimed part of) Broy and Lamport's
    ‹RPC-Memory› case study, more fully explained in LNCS 1169 (the ‹TLA
    solution› is available separately from