Documentation

DescriptiveComplexity.Exponential.Expansion

Exponential expansions: reading a structure over its second-order objects #

The one construction the exponential classes are built from. An exponential expansion of L-structures maps a finite ordered L-structure A to a structure over another vocabulary E whose universe is a definable set of tagged assignments of a second-order block. A block with a variable of arity a has 2^(n^a) assignments on a universe of size n, so the expanded universe is exponentially larger than A, and a resource bound read there is one exponential higher than the same bound read on A.

The data (DescriptiveComplexity.ExpExpansion) mirrors DescriptiveComplexity.RelFOInterpretation one level up:

Three design points, each paying for itself downstream.

The tags are part of the data, not a separate dimension. A d-tuple of points is a tag tuple together with an assignment of the replicated block, so composing an expansion with a first-order interpretation gives an expansion again, exactly rather than up to an embedding (DescriptiveComplexity.Exponential.Pull). Without the tag factor every hardness discharge would owe a relativization argument.

There is a domain sentence. Hardness in this library is cofinal hardness and DescriptiveComplexity.cofinalHard_iff hands out relativized reductions ≤ʳᶠᵒ[≤], whose target universe is already a subtype; an expansion composed with one is again an expansion only if expansions may carve out their universe too. dom_nonempty is then the same obligation, for the same reason, as in DescriptiveComplexity.RelOrderedFOReduction.

The sentences see the order, the problem does not. This is the discipline of DescriptiveComplexity.SOTCSpec: the capture theorems this development builds on are the ordered ones, while order-invariance is what makes the notion a DescriptiveComplexity.DecisionProblem.

The data #

An exponential expansion of L-structures into E-structures: the universe is a definable set of tagged assignments of the block B, and each relation symbol of E is defined, at each tuple of tags, by a first-order sentence over the ordered base vocabulary expanded by one copy of the block per argument.

Instances For
    Dependency graph

    The expanded universe #

    @[reducible, inline]

    A candidate point of the expanded universe: a tagged assignment of the block. An abbrev, so that the pair structure stays visible to rw and to instance search – only DescriptiveComplexity.ExpExpansion.Map needs to be opaque, to carry the expanded structure.

    Equations
    Instances For
      Dependency graph

      The domain condition on a candidate point: its tag's domain sentence holds of its assignment.

      Equations
      Instances For
        Dependency graph

        The expanded universe: the tagged block assignments satisfying their tag's domain sentence.

        Equations
        Instances For
          Dependency graph

          The point of the expanded universe carried by a tag and an assignment satisfying the domain sentence.

          Equations
          Instances For
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.ExpExpansion.pt_tag {L : FirstOrder.Language} {X : ExpExpansion L} {A : Type} [L.Structure A] [LinearOrder A] (t : X.Tag) (ρ : X.B.Assignment A) (h : DomHolds (t, ρ)) :
            (↑(pt t ρ h)).1 = t
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.ExpExpansion.pt_assign {L : FirstOrder.Language} {X : ExpExpansion L} {A : Type} [L.Structure A] [LinearOrder A] (t : X.Tag) (ρ : X.B.Assignment A) (h : DomHolds (t, ρ)) :
            (↑(pt t ρ h)).2 = ρ
            Dependency graph
            theorem DescriptiveComplexity.ExpExpansion.map_ext {L : FirstOrder.Language} {X : ExpExpansion L} {A : Type} [L.Structure A] [LinearOrder A] {x y : X.Map A} (h₁ : (↑x).1 = (↑y).1) (h₂ : (↑x).2 = (↑y).2) :
            x = y

            Two points of the expanded universe are equal as soon as their tags and their assignments are: the domain condition is a proof.

            Dependency graph
            @[instance_reducible]

            The expanded structure: an n-ary symbol holds of n points iff its defining sentence, at their tags, holds in the base structure with the n copies of the block interpreted by their assignments.

            Equations
            • One or more equations did not get rendered due to their size.
            Dependency graph
            theorem DescriptiveComplexity.ExpExpansion.relMap_map {L : FirstOrder.Language} (X : ExpExpansion L) {A : Type} [L.Structure A] [LinearOrder A] {n : } (r : X.E.Relations n) (xs : Fin nX.Map A) :
            FirstOrder.Language.Structure.RelMap r xs A X.relSentence r fun (i : Fin n) => (↑(xs i)).1
            Dependency graph

            Finiteness and nonemptiness #

            Dependency graph
            Dependency graph