Eliminating an induction from a second-order definition #
The theorem: a problem defined by a Σ₁ sentence read over a structure
expanded by the value of an inflationary induction is Σ₁ definable outright
(DescriptiveComplexity.sigmaSODefinable_of_ifpExpand). Since an induction is
exactly what an FO(LFP) reduction may consult, this is what closes NP under
FO(LFP) reductions (DescriptiveComplexity.FixedPointReductionClosure).
The argument, and why no fixed-point certificate is built #
The direct route – guess the value of the induction inside the existential
block and have the kernel check it – founders on the check: the inflationary
value is not characterized by being a fixed point (the step formulas are not
monotone, so a fixed point need not contain it), and pinning it down needs the
whole stage sequence, which is the construction of
DescriptiveComplexity.FixedPointInflationaryLFP all over again.
The route taken instead pays nothing, by pushing the induction inside the guess:
- the guessed relations are made part of the vocabulary. Over that larger
vocabulary, “the induction's value satisfies the kernel” is a problem defined
by an induction with a first-order output – order-free FO(IFP) definable, so
in PTIME, so (
DescriptiveComplexity.PTIME_subset_NP)Σ₁definable, with no induction left; - two consecutive existential blocks – the original guess and the one that
replaces the induction – merge into one
(
DescriptiveComplexity.sigmaSODefinable_exBlock), which is what keeps the result atΣ₁rather than atΣ₂.
The two supporting constructions are of the kind that has to exist once: an
induction read over a larger vocabulary computes the same value
(DescriptiveComplexity.StepDef.ifpHolds_liftLang), and expanding by two
blocks in either order is the same structure
(DescriptiveComplexity.swapExpand).
Expanding by two blocks, in either order #
Swapping two block expansions: the same symbols, read in the other association.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The swap is an expansion: expanding by B then by C interprets every
symbol as expanding by C then by B does.
Dependency graph
Realization across the swap.
Dependency graph
An induction read over a larger vocabulary #
A simultaneous induction read over a larger vocabulary: the step formulas
and the output are transported along the vocabulary map, which they use only
through the symbols they already mention. This generalizes
DescriptiveComplexity.StepDef.liftOrder, the case of the ordered
expansion.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
An induction computes the same value over a larger vocabulary.
Dependency graph
The inflationary value of the lifted induction is the original one.
Dependency graph
Two existential blocks are one #
An existential guess over an expanded vocabulary stays in Σ₁: if S,
a problem over the vocabulary expanded by a block C, is Σ₁ definable, then
so is “some assignment of C makes S hold”. The two existential blocks merge
into one (DescriptiveComplexity.SOBlock.cons), which is what keeps the level
at Σ₁.
Dependency graph
Eliminating the induction #
A Σ₁ definition read over the value of an induction is a Σ₁
definition. If S – a problem over the vocabulary expanded by the relation
variables of a simultaneous induction d – is Σ₁ definable, then so is the
problem “S holds of the structure expanded by the value of d”.
This is the substitution property NP needs: the FO(LFP) relations an FO(LFP)
reduction consults can be removed from a Σ₁ definition, at no cost in
quantifier alternation.