Documentation

LeanPool.LeanModelChecking.ABW

Alternating Büchi automata #

We define positive Boolean formulas (PositiveBool), alternating Büchi automata (ABW), their run DAGs (RunDAG), and the language they accept.

A positive Boolean formula over a set of atoms Q: a formula built from atoms, true, false, conjunction, and disjunction (no negation).

Instances For
    theorem LeanModelChecking.PositiveBool.Sat.monotone {Q : Type} {f : PositiveBool Q} {A B : Set Q} :
    A BSat A fSat B f
    structure LeanModelChecking.ABW (S Q : Type) :

    An alternating Büchi automaton over input alphabet S and state space Q.

    • q₀ : Q

      The initial state.

    • δ : QSPositiveBool Q

      The transition function, mapping a state and a letter to a positive Boolean formula over the successor states.

    • F : Set Q

      The set of accepting (final) states.

    Instances For
      structure LeanModelChecking.DAG.Base (Q : Type u_1) :
      Type u_1

      The underlying data of a directed acyclic graph whose vertices are state/level pairs: a vertex set V and an edge set E.

      • V : Set (Q × )

        The set of vertices, each a state paired with a level.

      • E : Set ((Q × ) × Q)

        The set of edges, each from a state/level pair to a successor state.

      Instances For
        structure LeanModelChecking.DAG (Q : Type u_1) extends LeanModelChecking.DAG.Base Q :
        Type u_1

        A directed acyclic graph of state/level pairs in which every edge connects a vertex on level i to a vertex on level i + 1.

        Instances For
          def LeanModelChecking.DAG.path {Q : Type u_1} (G : DAG Q) (p : Q) :

          Infinite path, with an arbitrary starting level.

          Equations
          Instances For
            structure LeanModelChecking.RunDAG {S Q : Type} (A : ABW S Q) (w : S) extends LeanModelChecking.DAG Q :

            A run DAG of the automaton A on the word w: a DAG rooted at the initial state in which every vertex's successors satisfy the relevant transition formula.

            Instances For
              def LeanModelChecking.RunDAG.accepting {S Q : Type} {A : ABW S Q} {w : S} (G : RunDAG A w) :

              A run DAG is accepting when every infinite path through it visits an accepting state infinitely often.

              Equations
              Instances For
                def LeanModelChecking.ABW.language {S Q : Type} (A : ABW S Q) (w : S) :

                The automaton A accepts the word w when it admits an accepting run DAG.

                Equations
                Instances For