Documentation

DescriptiveComplexity.Problems.Wide.Expansion

The wide machine as an exponential expansion #

The construction that makes the wide machine a member of an exponential class: an DescriptiveComplexity.ExpExpansion of FirstOrder.Language.wide-structures whose expanded vocabulary is FirstOrder.Language.turing. Read on an instance A, it produces exactly the ordinary machine instance whose universe is DescriptiveComplexity.WPoint A – so a wide machine is an ordinary machine, one exponential up, and nothing has to be said about resources.

Three things fix the whole design.

The vocabularies, the block and the sentences #

All of it is the address expansion's (DescriptiveComplexity.AddrExp), written once for an arbitrary base vocabulary with an order symbol; what is here is the naming at FirstOrder.Language.wide and the two sentences that read its order and its input relation.

@[reducible, inline]

The ordered vocabulary of wide-machine instances: what an expansion's sentences may read besides the block.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    The block whose assignments are the addresses: a single unary relation variable, so an assignment is a subset of the instance.

    Equations
    Instances For
      Dependency graph
      @[reducible, inline]

      The base vocabulary expanded by one copy of the block.

      Equations
      Instances For
        Dependency graph
        @[reducible, inline]

        The base vocabulary expanded by two copies of the block.

        Equations
        Instances For
          Dependency graph
          @[reducible, inline]

          The address an assignment is: the elements its relation variable holds of.

          Equations
          Instances For
            Dependency graph
            noncomputable def DescriptiveComplexity.Wide.ltG {γ : Type} (x y : γ) :

            x is strictly below y in the instance's own order.

            Equations
            Instances For
              Dependency graph

              The order on addresses: the two addresses agree, or, at some element the first is out of and the second in, they agree at every strictly smaller element.

              Equations
              Instances For
                Dependency graph

                The initial tape: the first address is the initial segment cut by some element x, the second point is a symbol y, and y is the input at x.

                Equations
                Instances For
                  Dependency graph
                  @[simp]
                  theorem DescriptiveComplexity.Wide.realize_ltG {γ A : Type} [FirstOrder.Language.wide.Structure A] [LinearOrder A] {v : γA} (x y : γ) :
                  (ltG x y).Realize v WMLe (v x) (v y) ¬WMLe (v y) (v x)
                  Dependency graph
                  Dependency graph
                  Dependency graph

                  The tags, and the defining sentences #

                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph

                  The expansion of a wide-machine instance: the address expansion (DescriptiveComplexity.AddrExp.addrExp) at the vocabulary of ordinary machines, every symbol of which is defined by a static choice on the tags followed by one of the five sentences.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    Dependency graph
                    @[instance_reducible]

                    The expanded structure of DescriptiveComplexity.wideExp, at the vocabulary of machines – equal to the expansion's own by definition, but not syntactically, so instance search has to be handed it.

                    Equations
                    Instances For
                      Dependency graph