Documentation

CslibFrontier.Computability.Machines.Turing.MultiTape.Complexity.LogSpace.ConfigurationGraph.Expr

The compact configuration graph as counter-program expressions #

The local functions of the compact configuration graph (Turing.MultiTapeNTM.ConfigurationGraph) are arithmetic in the input length, the vertex identifiers and the one requested input symbol: radix digits are quotients and remainders, the tape registers are ternary stacks, and the transition table is a fixed finite list. So each of them is an expression of a counter program (Turing.CounterProgram.Expr), with Boolean values represented by 0 and 1 and the input symbol by its ternary code symbolCode. This is how a counter program computes the configuration graph of a fixed machine on its input, as the logarithmic-space reduction to directed connectivity requires Sipser, Theorem 8.25. The radix is itself an expression, such as Turing.MultiTapeNTM.ConfigurationGraph.radixExpr.

Main definitions #

Main results #

References #

The number of vertices of the ambient graph.

Instances For

    A register of a vertex.

    Instances For

      Pack registers in the radix B.

      Instances For

        Syntactic validity of a vertex.

        Instances For

          The code of the input symbol seen at the input position p, blank at the boundaries.

          Instances For

            The test that a vertex observes a fixed entry of the transition table.

            Instances For
              theorem Turing.MultiTapeNTM.ConfigurationGraph.eval_matchesExpr {k : ℕ} {State : Type} [Fintype State] {regs : List ℕ} {n sym : CounterProgram.Expr} {r : Register k → CounterProgram.Expr} {g : Register k → ℕ} {symbol : Option Bool} (hr : ∀ (i : Register k), CounterProgram.Expr.eval regs (r i) = g i) (hs : CounterProgram.Expr.eval regs sym = symbolCode symbol) (t : Instruction k State) :

              The registers after a tape action, as expressions in the head, left and right registers.

              Instances For

                The registers after a fixed action.

                Instances For
                  theorem Turing.MultiTapeNTM.ConfigurationGraph.eval_nextExpr {k : ℕ} {State : Type} [Fintype State] {regs : List ℕ} {n : CounterProgram.Expr} {r : Register k → CounterProgram.Expr} {g : Register k → ℕ} (hr : ∀ (i : Register k), CounterProgram.Expr.eval regs (r i) = g i) (a : Action k Bool State) (i : Register k) :

                  The test that all registers fit below the radix.

                  Instances For
                    noncomputable def Turing.MultiTapeNTM.ConfigurationGraph.edgeExpr {k : ℕ} {State : Type} [Fintype State] (ntm : MultiTapeNTM k Bool State) (B n u v sym : CounterProgram.Expr) :

                    The guarded local edge test, with the input symbol given by its code.

                    Instances For
                      theorem Turing.MultiTapeNTM.ConfigurationGraph.eval_edgeExpr {k : ℕ} {State : Type} [Fintype State] {regs : List ℕ} {B n u v sym : CounterProgram.Expr} (ntm : MultiTapeNTM k Bool State) {symbol : Option Bool} (hs : CounterProgram.Expr.eval regs sym = symbolCode symbol) :

                      The edge expression computes the local edge test.

                      The test for accepting halted vertices.

                      Instances For

                        The start vertex.

                        Instances For

                          The requested input position.

                          Instances For