Documentation

Core.ComputableTLAPlus.Syntax

The output of Typed2ComputableTypedTLAPlus.Expression restricted to what a backend can actually compute. Structurally identical to TypedTLAPlus.Expression node-for-node except:

@[reducible, inline]

Reuses TypedTLAPlus.Typ (itself SurfaceTLAPlus.Typ) rather than defining a third copy — Typed2Computable's job is to restrict which Expression shapes survive, not to invent a new type grammar.

Equations
Instances For
    @[reducible, inline]

    Reuses TypedTLAPlus.Origin — a .var's provenance doesn't change across Typed2Computable, only which expressions are allowed to exist at all.

    Equations
    Instances For

      Computable TLA⁺ expressions — see the module doc above for how this differs from TypedTLAPlus.Expression. α is always instantiated at Typ by Typed2Computable's output — kept generic to match TypedTLAPlus.Expression's shape.

      Instances For
        partial def ComputableTLAPlus.instBEqExpression.beq {α✝ : Type} [BEq α✝] :
        Expression α✝Expression α✝Bool
        partial def ComputableTLAPlus.Expression.map {α β : Type} (f : αβ) (e : Expression α) :
        partial def ComputableTLAPlus.Expression.traverse {F : TypeType} [Applicative F] {α β : Type} (f : αF β) (e : Expression α) :
        F (Expression β)
        @[implicit_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        @[reducible, inline]

        A top-level, computable TLA⁺ declaration.

        Equations
        Instances For
          @[reducible, inline]

          A computable TLA⁺ module, wrapping the (separately translated) ComputablePlusCal algorithm at whatever α the caller instantiates it at — kept abstract to avoid a cyclic import, same as TypedTLAPlus.Module.

          Equations
          Instances For