Functoriality of block expansion, and padding with trivial blocks #
Infrastructure for the second-order definability layer of
DescriptiveComplexity.SecondOrder:
- Functoriality: a language morphism
Φ : L →ᴸ L'lifts through the expansion by a list of blocks (DescriptiveComplexity.soLangLift), and alternating second-order satisfaction is invariant when the base structure is expanded alongΦ(DescriptiveComplexity.sorealize_soLangLift). - Embedded first-order sentences: a sentence of the base language, embedded
into the block expansion (
DescriptiveComplexity.soLangEmbed), can be pulled out of the second-order quantification when it appears as a conjunct or as the premise of an implication (DescriptiveComplexity.sorealize_inf_embed,DescriptiveComplexity.sorealize_imp_embed). This is how the auxiliary order of an ordered reduction is eliminated: the order becomes a second-order variable of the first block, guarded by the first-order sentence “it is a linear order”. - Padding: appending or prepending the trivial (empty) block
(
DescriptiveComplexity.SOBlock.trivial) does not change alternating second-order satisfaction (DescriptiveComplexity.sorealize_append_trivial), soΣₖ- andΠₖ-definability satisfy the level inclusions of the polynomial hierarchy:Σₖ ⊆ Σₖ₊₁ ∩ Πₖ₊₁and dually (DescriptiveComplexity.SigmaSODefinable.succ,DescriptiveComplexity.SigmaSODefinable.piSucc,DescriptiveComplexity.PiSODefinable.succ,DescriptiveComplexity.PiSODefinable.sigmaSucc).
Languages vary through all the inductions, so the recursive definitions and statements take them as explicit arguments.
Assignments always exist #
Dependency graph
Functoriality of block expansion #
Lift of a language morphism through the expansion by blocks: symbols of the base language are mapped by the morphism, relation variables of the blocks to themselves.
Equations
- DescriptiveComplexity.soLangLift [] x✝² x✝¹ x✝ = x✝
- DescriptiveComplexity.soLangLift (B :: Bs) x✝² x✝¹ x✝ = DescriptiveComplexity.soLangLift Bs (x✝².sum B.lang) (x✝¹.sum B.lang) (x✝.sumMap (FirstOrder.Language.LHom.id B.lang))
Instances For
Dependency graph
Alternating second-order satisfaction only depends on the base structure through the symbols the kernel mentions: it is invariant under transporting the kernel along a language morphism whose expansion the structure is.
Dependency graph
Embedding the base language into a block expansion #
The embedding of the base language into its expansion by blocks.
Equations
Instances For
Dependency graph
A conjunct that is (the embedding of) a sentence of the base language can be pulled out of the second-order quantification.
Dependency graph
A premise that is (the embedding of) a sentence of the base language can be pulled out of the second-order quantification.
Dependency graph
The trivial block, and padding #
The trivial second-order quantifier block, with no relation variables. Quantifying over it (in either polarity) does not change satisfaction; it pads a quantifier prefix to a larger number of alternations.
Equations
- DescriptiveComplexity.SOBlock.trivial = { ι := Empty, ιFinite := ⋯, arity := Empty.elim }
Instances For
Dependency graph
Extension of the block expansion under appending one more block at the end of the list.
Equations
Instances For
Dependency graph
Appending the trivial block does not change alternating second-order satisfaction.
Dependency graph
Level inclusions at the definability level #
Σₖ ⊆ Σₖ₊₁: pad by appending the trivial block.
Dependency graph
Πₖ ⊆ Πₖ₊₁: pad by appending the trivial block.
Dependency graph
Σₖ ⊆ Πₖ₊₁: pad by prepending the trivial block.
Dependency graph
Πₖ ⊆ Σₖ₊₁: pad by prepending the trivial block.