Documentation

DescriptiveComplexity.Problems.Machine.Interp

The transcription: SAT ≤ᶠᵒ[≤] NTMAccept #

The first-order half of the reduction. The machine of a CNF formula was built semantically in DescriptiveComplexity.Problems.Machine.Hardness – plain predicates on tagged tuples, with its correctness DescriptiveComplexity.satMachine_accepts_iff_satisfiable proved there. This file writes the defining formulas of an interpretation of Language.turing in ordered CNF instances, shows each formula realizes exactly the corresponding predicate of the machine, and bundles the result as the ordered first-order reduction DescriptiveComplexity.SatTM.sat_ordered_fo_reduction_ntmAccept.

Method #

Everything is arranged so that no simp call ever faces a tag match:

The transfer to DescriptiveComplexity.NTMAccept is then a fieldwise DescriptiveComplexity.TMData.Agree along the identity equivalence: the machine the interpreted structure describes agrees with DescriptiveComplexity.satMachine, so acceptance and well-formedness transport, and correctness is inherited from the semantic layer.

Formulas for the clause order #

noncomputable def DescriptiveComplexity.SatTM.minClF {α : Type} (c : α) :

c is the lowest clause, as a formula.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    Dependency graph
    noncomputable def DescriptiveComplexity.SatTM.maxClF {α : Type} (c : α) :

    c is the highest clause, as a formula.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      Dependency graph
      noncomputable def DescriptiveComplexity.SatTM.nextClF {α : Type} (c c' : α) :

      c' is the clause immediately above c, as a formula.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Dependency graph
        Dependency graph
        noncomputable def DescriptiveComplexity.SatTM.varF {α : Type} (x : α) :

        x is a variable of the instance – it occurs in some clause –, as a formula.

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

          The two shapes of the machine's elements, as formulas #

          The second argument of a binary symbol is the constant element cst s: its tag is s – checked statically – and its payload is the pair of minima.

          Equations
          Instances For
            Dependency graph
            noncomputable def DescriptiveComplexity.SatTM.oneF (s : SatTag) (x : Fin 2 × Fin 2) (t' : SatTag) :

            The second argument of a binary symbol is one s (v x): its tag is s, its payload carries the value of the variable x and the minimum.

            Equations
            Instances For
              Dependency graph

              The defining formulas #

              The literal test on the source structure, for the statically known truth value v: this is where the transition relation reads the input formula.

              Equations
              Instances For
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph

                Defining formula for acc: any payload – acceptance is read off the tag alone, exactly as DescriptiveComplexity.SatAcc does.

                Equations
                Instances For
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph

                  The interpretation of machine instances in ordered CNF instances. The order is DescriptiveComplexity.lexLeF, so its linearity comes from DescriptiveComplexity.tagTupleOrder with no tag-pair analysis; every other symbol matches on its first tag only, the shape of the second being delegated to DescriptiveComplexity.SatTM.cstF and DescriptiveComplexity.SatTM.oneF.

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

                    The realization lemmas #

                    One per symbol of Language.turing, each saying its defining formula defines the corresponding predicate of DescriptiveComplexity.satMachine. The universe of the interpreted structure is definitionally DescriptiveComplexity.SatV A; DescriptiveComplexity.SatTM.satMapEquiv names the identity equivalence, along which the machines will be shown to agree.

                    The identity equivalence between the tagged tuples and the interpreted universe.

                    Equations
                    Instances For
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph

                      The machines agree, and the reduction #