The block a problem over an expansion is guessed in #
NEXPTIME ⊆ ∃SO[new, exp c d] rewrites a Σ₁ definition over an exponential
expansion as a Σ₁ definition with value invention. Everything the rewritten
sentence guesses goes into one second-order block, and this file is where
that block is fixed and its symbols named:
- the order on the original elements, which the expansion's sentences need
and the extended universe has none of – so the block is a
DescriptiveComplexity.SOBlock.withOrderandDescriptiveComplexity.extLinearGuardis its guard; - the meanings, one per variable of the expansion's block and one per tag – a tag is a nullary variable, so its meaning relation is unary, “this value carries this tag”;
- the source problem's own
Σ₁block, whose variables range over the points of the expansion and are therefore guessed over the extended universe and read at the values that are points.
What the file proves is that an assignment of that block reads as the data the
translations of DescriptiveComplexity.SecondOrderNewRead and
DescriptiveComplexity.SecondOrderNewPoint ask for
(DescriptiveComplexity.pullPointOn), given only that its order part is a
linear order of the original elements.
The block #
The expansion's block with one nullary variable per tag: what an invented value has to stand for is an assignment of this, the tag included.
Equations
Instances For
Dependency graph
Everything the sentence guesses besides the order: the meanings of the tagged block, and the source problem's own block.
Equations
Instances For
Dependency graph
The block: the order variable, the meanings, and the source problem's block.
Equations
Instances For
Dependency graph
The vocabulary the guessed sentence is written in.
Equations
Instances For
Dependency graph
The symbols #
The meaning relation of a variable of the expansion's block.
Instances For
Dependency graph
The meaning relation of a tag: unary, the tag being a nullary variable.
Instances For
Dependency graph
A variable of the source problem's own block.
Instances For
Dependency graph
The symbols the translations of a defining sentence use.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The symbols the point formulas use.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
What an assignment of the block reads as #
The assignment of the expansion's block that an invented value means.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The tags an invented value carries.
Equations
Instances For
Dependency graph
The order the order variable carries, as a relation on the instance.
Instances For
Dependency graph
The linear order the guard's order variable carries.
Equations
- DescriptiveComplexity.pullLinearOrder ρ hrefl htrans hanti htotal = DescriptiveComplexity.linearOrderOfGuard (fun (w : Fin 2 → A) => DescriptiveComplexity.pullLe ρ (w 0) (w 1)) hrefl ⋯ ⋯ ⋯
Instances For
Dependency graph
An assignment of the block reads as the data the translations ask for: its meaning variables give each invented value an assignment of the expansion's block, its tag variables the tags it carries, and its order variable the order of the instance – the last being a hypothesis, since which linear order the instance carries is the caller's to fix.
Dependency graph
The kernel #
The formulas interpreting the source problem's vocabulary – the expanded
one together with its own block – over the extended universe: an atom of the
expansion is DescriptiveComplexity.pointRelF, an atom of the block is the
block variable itself.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The domain formula: the value is a point of the expanded universe.
Equations
Instances For
Dependency graph
The assignment of the source problem's block that the guess carries, read at the points.
Equations
- DescriptiveComplexity.pullCert ρ e j ts = ρ (Sum.inr (Sum.inr j)) fun (l : Fin ((DescriptiveComplexity.pullBlock X C).arity (Sum.inr (Sum.inr j)))) => e (ts l)
Instances For
Dependency graph
What names the points: an injection of the expanded universe into the invented values, whose image is exactly the values that are points, sending a point to a value that means its assignment and carries its tag and no other.
- inj : Function.Injective e
Distinct points are named by distinct values.
A point's value means its assignment.
A point's value carries its tag and no other.
- onto (v : A ⊕ Fin m) : (∃ (t : X.Tag), pullTags ρ v t ∧ (∀ (t' : X.Tag), pullTags ρ v t' → t' = t) ∧ ExpExpansion.DomHolds (t, pullMeans ρ v)) → ∃ (p : X.Map A), e p = v
Every value that is a point is named.
Instances For
Dependency graph
The structure the kernel's formulas define on the points is the one the source problem is read in: the expansion's own structure, and the source problem's block read at the values naming the points.
Dependency graph
The structure identification of DescriptiveComplexity.pullSubst_rel, as an
isomorphism.
Equations
- DescriptiveComplexity.pullSubstEquiv ρ h hr = { toEquiv := Equiv.refl (X.Map A), map_fun' := ⋯, map_rel' := ⋯ }
Instances For
Dependency graph
The kernel, translated: the source problem's first-order kernel, with
DescriptiveComplexity.pointRelF for the atoms of the expanded vocabulary, its
own block variables for its own, and “is a point” as the domain formula, holds
in the extended universe exactly when the kernel holds over the expansion.
Dependency graph
Naming the points #
The meaning block sits inside the whole block.
Equations
- DescriptiveComplexity.meanHom X C i = Sum.inr (Sum.inl i)
Instances For
Dependency graph
Dependency graph
The meaning guard, in the vocabulary of the whole block.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The meaning part of an assignment of the whole block.
Equations
- DescriptiveComplexity.pullMeanPart ρ i = ρ (Sum.inr (Sum.inl i))
Instances For
Dependency graph
The meaning guard, read in the whole block: it says of the meaning part
what DescriptiveComplexity.meanGuardB says.
Dependency graph
The assignment of the tagged block a point stands for: its own assignment, and the tag bit of its tag alone.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Distinct points have distinct assignments: the assignment holds the point's own, and its tag in the tag bits.
Dependency graph
A tag atom is the meaning relation of a nullary variable.
Dependency graph
Dependency graph
Dependency graph
The value naming a point: the one whose meaning is the point's assignment, tag bit included.
Equations
Instances For
Dependency graph
Dependency graph
The naming is a representation: it is injective, a point's value means its assignment and carries its tag alone, and – given that a meaning relates an invented value to original elements only – every value that is a point is named.
Dependency graph
The sentence, and what an assignment satisfying it gives #
The sentence: the order guard, the meaning guard, and the translated kernel.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
From an assignment to the expansion: an assignment satisfying the sentence carries a linear order of the instance and an assignment of the source problem's block over the expansion at that order, for which the source kernel holds.