Documentation

DescriptiveComplexity.Problems.Wide.Double

A base that is never a singleton #

Every track of the EXPSPACE machine is an element of the base universe, so the whole construction needs two of them (DescriptiveComplexity.Draw.Env.hzo, DescriptiveComplexity.Draw.Table.zero_ne_one) – and a reduction has to be correct at one-element structures too. The fix is to run the machinery not at the instance but at a doubled universe, which is never a singleton, and which is an ordinary first-order interpretation of the instance so that nothing is lost:

So the doubled universe is the extended universe of value invention (DescriptiveComplexity.SecondOrderNew) with |A| invented values, and DescriptiveComplexity.relativizeTo is what reads a formula about the instance inside it. What the reduction then has to do – and what DescriptiveComplexity.Problems.Wide.RelExpansion does – is relativize the expansion the same way, so that its points are still the instance's.

The interpretation is plain (not relativized) and one-dimensional, so composing it under the wide interpretation multiplies the dimension by one and the tags by Bool ^ dd: the composite is again a tagged-tuple interpretation of the instance, with the same dimension.

The interpretation #

@[reducible, inline]

A relation of the instance's vocabulary, inside the extended one: named, because a raw Sum.inl is not recognized at the transparency rw matches at.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    The mark of the original elements, named for the same reason.

    Equations
    Instances For
      Dependency graph

      The doubled universe, as an interpretation: the false copy carries the instance and is marked old, the true copy is junk.

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

        The point of the doubled universe carried by a tag and an element.

        Equations
        Instances For
          Dependency graph
          @[simp]
          theorem DescriptiveComplexity.Draw.dblPt_fst {L : FirstOrder.Language} {A : Type} (b : Bool) (a : A) :
          (dblPt b a).1 = b
          Dependency graph
          @[simp]
          theorem DescriptiveComplexity.Draw.dblPt_snd {L : FirstOrder.Language} {A : Type} (b : Bool) (a : A) (j : Fin 1) :
          (dblPt b a).2 j = a
          Dependency graph
          theorem DescriptiveComplexity.Draw.dblPt_eta {L : FirstOrder.Language} {A : Type} (p : (dblInterp L).Map A) :
          p = dblPt p.1 (p.2 0)

          A point of the doubled universe is its tag and its single coordinate.

          Dependency graph
          theorem DescriptiveComplexity.Draw.relMap_dbl_inl {L : FirstOrder.Language} [L.IsRelational] {A : Type} [L.Structure A] [LinearOrder A] {n : } (r : L.Relations n) (xs : Fin n(dblInterp L).Map A) :
          FirstOrder.Language.Structure.RelMap (newSym r) xs (∀ (i : Fin n), (xs i).1 = false) FirstOrder.Language.Structure.RelMap r fun (i : Fin n) => (xs i).2 0

          A relation of the instance's vocabulary holds in the doubled universe exactly on the marked copy, of the elements it carries.

          Dependency graph

          The mark holds exactly on the copy that carries the instance.

          Dependency graph

          The doubled universe is never a singleton: that is the whole point.

          Dependency graph

          An environment to name constants in #

          The rule-definability discharge (DescriptiveComplexity.Draw.Data.uRulesDefinable_progOf) asks for one DescriptiveComplexity.Draw.Env, and only to name the gate dispatch's default tag – a nonemptiness of a type the instance does not mention, so any environment will do. The two-element one below is the cheapest: the structure in which nothing holds.

          The two-element environment over a relational vocabulary: the structure in which nothing holds, with the two Booleans as its designated elements.

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