Pulling ∃SO[new] definability back through an interpretation #
Closure of definability in existential second-order logic with value invention
under first-order reductions (DescriptiveComplexity.SigmaSONewDefinable.of_foReduction),
the closure that makes RE a DescriptiveComplexity.ComplexityClass.
The construction #
Let I be the interpretation of a reduction P ≤ᶠᵒ Q, and let Q be defined
by a block B and a kernel φ read in the extended universe
I.Map A ⊕ Fin m. The extended universe of the source is A ⊕ Fin m – the
same number of invented values – and the point of the construction is that
the target's extended universe is definable inside it:
- a point of
I.Map Ais a tagttogether withdimoriginal elements; - an invented value is an invented value.
Both are tagged tuples, so they are the universe of a relativized
interpretation DescriptiveComplexity.newInterp with tags Tag ⊕ Unit and
dimension dim + 1, whose domain formula asks, at tag Sum.inl t, that the
first dim coordinates be original, and at tag Sum.inr (), that the last
coordinate be invented and the others copy it (a diagonal, so that each
invented value is one point). The spare coordinate of a Sum.inl point has
to be pinned to a single element, for which the block guesses a canonical
element (DescriptiveComplexity.canonSym), constrained to be unique by
DescriptiveComplexity.canonGuard; pinning it to a coordinate of the tuple
would not survive dim = 0, where I.Map A is a constant-size structure.
Everything else is machinery that already exists:
- the kernel is pulled back by the guarded pullback
DescriptiveComplexity.RelFOInterpretation.pullRelofDescriptiveComplexity.RelComposition, which relativizes quantifiers to the definable universe and substitutes the defining formulas for atoms; - the relation variables of
Bare pulled back exactly as inDescriptiveComplexity.SecondOrderPull, one(k · (dim+1))-ary variable per tuple of tags (DescriptiveComplexity.SOBlock.pull). Their assignments transfer in the flipped direction a definable universe forces:DescriptiveComplexity.targetAssignreads a guessed assignment back on the target's universe,DescriptiveComplexity.sourceAssignextends an assignment of the target's block by junk off the interpreted points, and the compositetargetAssign ∘ sourceAssignis the identity on the nose (DescriptiveComplexity.targetAssign_sourceAssign) – which is all an existential block needs; - the interpretation's own defining formulas quantify over
A, so they are read inA ⊕ Fin mrelativized to the original elements (DescriptiveComplexity.relOldofDescriptiveComplexity.Relativize).
The pulled block #
The block guessed on the source side: a canonical element (used to pin the spare coordinate of an interpreted point) together with the pullback of the target's block through the interpretation below.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The canonical-element variable of the guessed block.
Instances For
Dependency graph
The pulled relation variable of the target's block selected by a tuple of tags.
Equations
Instances For
Dependency graph
The canonical-element part of a guessed assignment.
Instances For
Dependency graph
The pulled-block part of a guessed assignment: an assignment of the block pulled back through the interpretation below.
Equations
- DescriptiveComplexity.pullPart ρ p = ρ (Sum.inr p)
Instances For
Dependency graph
A guessed assignment, from its two parts.
Equations
- DescriptiveComplexity.joinParts c σ (Sum.inl val) = c
- DescriptiveComplexity.joinParts c σ (Sum.inr p) = σ p
Instances For
Dependency graph
Dependency graph
Dependency graph
The two vocabularies #
The vocabulary the pulled-back kernel is written in: the source
vocabulary, the marker old, and the guessed relation variables.
Equations
- DescriptiveComplexity.newHost L₁ Tag dim B = (DescriptiveComplexity.newLang L₁).sum (DescriptiveComplexity.newBlock Tag dim B).lang
Instances For
Dependency graph
The vocabulary the target's kernel is written in.
Equations
Instances For
Dependency graph
A symbol of the target vocabulary, as a symbol of the extended one.
Equations
- DescriptiveComplexity.tgtBaseSym L₂ B R = Sum.inl (Sum.inl R)
Instances For
Dependency graph
The marker old of the target's extended vocabulary.
Equations
Instances For
Dependency graph
A relation variable of the target's block, as a symbol.
Equations
- DescriptiveComplexity.tgtBlockSym L₂ B r = Sum.inr r
Instances For
Dependency graph
The interpretation of the target's extended universe #
The marker old, as a symbol of the host vocabulary.
Equations
- DescriptiveComplexity.oldHostSym L₁ Tag dim B = Sum.inl (Sum.inr FirstOrder.Language.oldSym)
Instances For
Dependency graph
The canonical-element variable, as a symbol of the host vocabulary.
Equations
- DescriptiveComplexity.canonHostSym L₁ Tag dim B = Sum.inr (DescriptiveComplexity.canonSym Tag dim B)
Instances For
Dependency graph
A pulled relation variable, as a symbol of the host vocabulary.
Equations
- DescriptiveComplexity.blockHostSym L₁ Tag dim B r τ = Sum.inr (DescriptiveComplexity.newPullSym Tag dim B r τ)
Instances For
Dependency graph
old x, as a formula over the host vocabulary.
Equations
- DescriptiveComplexity.oldHostF L₁ Tag dim B x = (DescriptiveComplexity.oldHostSym L₁ Tag dim B).formula₁ (FirstOrder.Language.var x)
Instances For
Dependency graph
C x, the canonical-element variable, as a formula over the host
vocabulary.
Equations
- DescriptiveComplexity.canonHostF L₁ Tag dim B x = (DescriptiveComplexity.canonHostSym L₁ Tag dim B).formula₁ (FirstOrder.Language.var x)
Instances For
Dependency graph
The domain formula: a Sum.inl t point is a tuple of original elements
with its spare coordinate pinned to the canonical element; a Sum.inr ()
point is a diagonal tuple of one invented value.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The defining formulas: a symbol of the target vocabulary holds of
interpreted points exactly when the reduction's own defining formula holds of
their coordinates (read among the original elements), it never holds of an
invented point; old marks the interpreted points; a relation variable of the
target's block is read off the pulled variable selected by the tags.
Equations
Instances For
Dependency graph
The interpretation of the target's extended universe in the source's:
tagged (dim+1)-tuples, an interpreted point per tag of the reduction and an
invented value per diagonal.
Equations
- DescriptiveComplexity.newInterp L₁ Tag dim B I = { relFormula := fun {n : ℕ} => DescriptiveComplexity.newRelF L₁ Tag dim B I, domFormula := DescriptiveComplexity.newDom L₁ Tag dim B }
Instances For
Dependency graph
The guard: the canonical-element variable holds of exactly one element.
Equations
- DescriptiveComplexity.canonGuard L₁ Tag dim B = FirstOrder.Language.Formula.iExsUnique (Fin 1) (DescriptiveComplexity.canonHostF L₁ Tag dim B (Sum.inr 0))
Instances For
Dependency graph
Realization in the host structure #
The host structure: the extended structure of the instance, expanded by the guessed relation variables.
Equations
- DescriptiveComplexity.hostStruc A n ρ = (DescriptiveComplexity.newLang L₁).sumStructure (DescriptiveComplexity.newBlock Tag dim B).lang (A ⊕ Fin n)
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
A base symbol at a tuple of interpreted tags: the reduction's own defining formula, read among the original elements.
Dependency graph
A base symbol never holds of an invented point.
Dependency graph
The marker old holds exactly of the interpreted points.
Dependency graph
A relation variable of the target's block is read off the pulled variable selected by the tags.
Dependency graph
The interpreted universe is the target's extended universe #
The tagged tuple representing a point of the target's extended universe:
an interpreted point becomes its tag together with its coordinates, the spare
coordinate pinned to c₀; an invented value becomes a diagonal tuple.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Every point of the interpreted universe is the image of a point of the target's extended universe: an interpreted tag carries a tuple of original elements, an invented tag a single invented value.
Dependency graph
Dependency graph
Transfer of the kernel #
The assignment of the target's block on the target's extended universe, read off a guessed assignment on the source's: the pulled variable selected by the tags of the arguments, at their coordinates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The interpreted structure is the target's extended structure: the map
sending a point of I.Map A ⊕ Fin n to its tagged tuple is an isomorphism
over the target's extended vocabulary, the target's block being interpreted by
DescriptiveComplexity.targetAssign.
Equations
- DescriptiveComplexity.newTargetEquiv I c₀ ρ hc = { toEquiv := Equiv.ofBijective (fun (x : I.Map A ⊕ Fin n) => ⟨DescriptiveComplexity.newPoint I c₀ x, ⋯⟩) ⋯, map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
Sentence transfer: what the target's kernel says in the target's extended universe, it says in the interpreted universe.
Dependency graph
The guarded pullback of a sentence #
The guarded pullback of a sentence through a relativized interpretation:
an L₃-sentence that holds in A exactly when the original sentence holds in
the definable universe J.MapRel A (the relativized counterpart of
DescriptiveComplexity.FOInterpretation.pullSentence).
Equations
- J.pullRelSentence φ = FirstOrder.Language.Formula.relabel (fun (p : (Empty ⊕ Fin 0) × Fin dJ) => isEmptyElim p.1) (J.pullRel φ fun (a : Empty ⊕ Fin 0) => isEmptyElim a)
Instances For
Dependency graph
Dependency graph
Reproducing an assignment of the target's block #
The pulled-block assignment reproducing a given assignment of the target's block: a pulled variable holds of a tuple exactly when that tuple is the image of a tuple of the target's universe that the assignment relates.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Reading the reproduced assignment back gives the original one: the two transfers compose to the identity in the direction a definable universe allows.
Dependency graph
The closure theorem #
Definability in ∃SO[new] transfers through an interpretation: with
the same number of invented values, the target's kernel holds in the
target's extended universe exactly when its guarded pullback holds in the
source's.
Dependency graph
∃SO[new]-definability is closed under first-order reductions, the
closure that makes RE a complexity class: the target's extended universe is
interpreted inside the source's, with the same invented values, and the kernel
is pulled back through that interpretation.