Langlib

Langlib.Grammars.Indexed.NormalForm.Aho.Machine.Alphabet

Aho machine alphabet #

Finite marks, work symbols, and their basic structural properties.

The finite marked work alphabet #

Aho's four marks on a compressed index.

firstPending/firstUsed are the paper's marks 0/1, and laterPending/laterUsed are marks 2/3. "Used" means that a productive terminal or binary event has occurred since the represented index was consumed, so the index may be erased.

Instances For
    Equations
    • One or more equations did not get rendered due to their size.

    Marks 2 and 3 denote an index which is not the first consumed index of the current copied stack. Only these marks permit Aho's primed continuation after a pop.

    Equations
    Instances For

      A symbol of Aho's unpadded logical work tape.

      plain A is the paper's A, while live A is A': at least one compressed index to its right is promised to be consumed during the expansion of this occurrence.

      Instances For
        Equations
        • One or more equations did not get rendered due to their size.

        Does a work symbol carry a compressed index?

        Equations
        Instances For

          Is a work symbol a $ frame opener?

          Equations
          Instances For

            A list contains no compressed-index symbol.

            Equations
            Instances For

              A list contains no $ frame opener.

              Equations
              Instances For

                Mark the rightmost symbol of alpha if it is a compressed index. This is exactly the operation written alpha⁺ by Aho.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem IndexedGrammar.Aho.markProductivePrefix_append_nonindex {T : Type} {g : IndexedGrammar T} (alpha : List (WorkSym g)) (z : WorkSym g) (hz : ∀ (R : CFlag g) (d : IndexMark), z WorkSym.index R d) :
                  markProductivePrefix (alpha ++ [z]) = alpha ++ [z]