Documentation

DescriptiveComplexity.SecondOrderNewOrdered

Closure of ∃SO[new] definability under ordered FO reductions #

If P ≤ᶠᵒ[≤] Q and Q is ∃SO[new]-definable, then so is P (DescriptiveComplexity.SigmaSONewDefinable.of_orderedReduction). With the pullback of DescriptiveComplexity.SecondOrderNewPull this is the second closure property a complexity class needs, and RE becomes one (DescriptiveComplexity.RecursivelyEnumerable).

The shape is the one of DescriptiveComplexity.SecondOrderOrdered: pulling the definition back through the interpretation yields a sentence over the ordered expansion – correct for every linear order on the instance, by order-invariance of the reduction – and the order is then re-quantified inside the second-order block, guarded by a sentence saying that the variable is a linear order.

What value invention changes. The order variable now ranges over the extended universe A ⊕ Fin n, where it cannot be a linear order at all: the order symbol of the extended structure relates original elements only (invented values are related to nothing, by DescriptiveComplexity.extBase), so the guard must be relativized: DescriptiveComplexity.extLinearGuard states that the variable relates original elements only, and is reflexive and total on them. That is exactly enough to recover a LinearOrder on the instance (DescriptiveComplexity.linearOrderOfGuard) and to know that the variable is the order of the extended structure (DescriptiveComplexity.extLeRel), which is what the language morphism DescriptiveComplexity.extOrderElim needs to be an expansion.

The order of the instance, seen in the extended universe #

def DescriptiveComplexity.extLeRel (A : Type) [LE A] (n : ) :
(Fin 2A Fin n)Prop

The order of the instance, as a relation on the extended universe: it relates two original elements when their values are ordered, and relates nothing else.

Equations
Instances For
    Dependency graph
    theorem DescriptiveComplexity.extLeRel_isOld {A : Type} [LE A] {n : } {w : Fin 2A Fin n} (h : extLeRel A n w) :
    IsOld (w 0) IsOld (w 1)
    Dependency graph
    @[simp]
    theorem DescriptiveComplexity.extLeRel_inl {A : Type} [LE A] {n : } (a b : A) :
    Dependency graph
    Dependency graph

    Eliminating the order symbol #

    @[reducible, inline]

    The marker old, as a symbol of the vocabulary the eliminated sentence lives in.

    Equations
    Instances For
      Dependency graph

      The language morphism eliminating the order symbol of the extended ordered vocabulary in favour of the order variable of the extended block.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        Dependency graph
        theorem DescriptiveComplexity.extOrderElim_isExpansionOn {L : FirstOrder.Language} {C : SOBlock} {A : Type} [L.Structure A] [Nonempty A] {n : } [lo : LinearOrder A] (ρ : C.withOrder.Assignment (A Fin n)) (ρ' : C.Assignment (A Fin n)) (hrest : C.restPart ρ = ρ') (hord : ∀ (w : Fin 2A Fin n), ρ (Sum.inl ()) w extLeRel A n w) :

        When the order variable is assigned the order of the instance, read in the extended universe, the extended structure over the bare vocabulary is an expansion along DescriptiveComplexity.extOrderElim of the extended structure over the ordered one.

        Dependency graph

        The relativized linear-order guard #

        The relativized guard: the order variable relates original elements only, and is a linear order on them. Relativization is forced by value invention: the order symbol of an extended structure relates original elements only, so an unrelativized guard would be unsatisfiable as soon as something is invented.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          Dependency graph
          theorem DescriptiveComplexity.realize_extLinearGuard {L : FirstOrder.Language} {C : SOBlock} (A : Type) [L.Structure A] [Nonempty A] (n : ) (ρ : C.withOrder.Assignment (A Fin n)) :
          (A Fin n) extLinearGuard L C (∀ (x y : A Fin n), ρ (Sum.inl ()) ![x, y]IsOld x IsOld y) (∀ (x : A Fin n), IsOld xρ (Sum.inl ()) ![x, x]) (∀ (x y z : A Fin n), ρ (Sum.inl ()) ![x, y]ρ (Sum.inl ()) ![y, z]ρ (Sum.inl ()) ![x, z]) (∀ (x y : A Fin n), ρ (Sum.inl ()) ![x, y]ρ (Sum.inl ()) ![y, x]x = y) ∀ (x y : A Fin n), IsOld xIsOld yρ (Sum.inl ()) ![x, y] ρ (Sum.inl ()) ![y, x]
          Dependency graph

          Order elimination for ∃SO[new] #

          Order elimination for ∃SO[new]: a problem defined by an ∃SO[new] sentence over the ordered expansion – correct for some linear order on each instance – is ∃SO[new]-definable. The order becomes one more relation variable of the block, guarded by DescriptiveComplexity.extLinearGuard.

          Dependency graph

          Closure under ordered FO reductions #

          ∃SO[new]-definability is closed under ordered FO reductions: pull the definition back through the interpretation over the ordered expansion, then re-quantify the order inside the block, guarded by the relativized linear-order guard.

          Dependency graph