The classes are closed under FO(LFP) reductions #
Membership in PTIME, in NP and in coNP travels backward along an FO(LFP)
reduction (DescriptiveComplexity.mem_PTIME_of_lfpReduction,
DescriptiveComplexity.mem_NP_of_lfpReduction,
DescriptiveComplexity.mem_coNP_of_lfpReduction), exactly as it does along a
first-order one. This is what makes ≤ˡᶠᵖ a usable reduction notion for these
classes rather than a definition with no theorems: without it, “P reduces to a
problem of the class” would say nothing about P.
The three proofs are different, and the difference is the point.
- PTIME is closed because the logic is: the reduction's induction and the
membership's induction stratify into one
(
DescriptiveComplexity.StepDef.stratify), after the latter is pulled back through the interpretation. Nothing is guessed. - NP is closed because an induction can be eliminated from a
Σ₁definition (DescriptiveComplexity.sigmaSODefinable_of_ifpExpand), the quantifier block that replaces it merging with the one already there. - coNP is closed by complementation – a reduction complements
(
DescriptiveComplexity.LFPReduction.compl) – which is cheaper than redoing the argument with a universal block.
Above the first level nothing is claimed here. The same argument would put an
extra existential block innermost in a Σₖ prefix, which merges with the
innermost block only when that block is existential; the even levels would need
the dual elimination, through DescriptiveComplexity.PTIME_subset_coNP, and the
vocabulary bookkeeping of a block inserted in the middle of a prefix. PSPACE is
open here for a sharper reason: FO(PFP) has no stratification theorem, the
partial iteration not being monotone.
Hardness #
DescriptiveComplexity.CofinalHardLFP is hardness stated with ≤ˡᶠᵖ in place
of ≤ʳᶠᵒ[≤], and DescriptiveComplexity.CofinalHard.toLFP says that a hard
problem in the library's sense is hard in this weaker one – the expected
implication, since a first-order reduction is an FO(LFP) reduction. Note the
direction: hardness under a larger class of reductions is a weaker
statement, so every completeness theorem of the catalog implies its
polynomial-time-reduction reading, and none of them is superseded by it.
The definable domain is inhabited, as a sentence #
“Some tagged tuple is in the domain”, as a first-order sentence of the source vocabulary: the disjunction over the (finitely many) tags of the existential closure of the domain formula.
Equations
- I.domNonemptyS = FirstOrder.Language.Formula.iSup fun (t : Tag) => FirstOrder.Language.Formula.iExs (Fin dim) (FirstOrder.Language.Formula.relabel Sum.inr (I.domFormula t))
Instances For
Dependency graph
Dependency graph
Polynomial time #
FO(≤, IFP) definability is closed under FO(LFP) reductions: the reduction's induction and the definition's induction stratify into one, the latter pulled back through the (order-extended) interpretation.
Dependency graph
PTIME is closed under FO(LFP) reductions: a problem reducing to a polynomial-time problem by a polynomial-time reduction is polynomial time.
Dependency graph
NP, and coNP by complementation #
Σ₁-definability is closed under FO(LFP) reductions. The membership
sentence is pulled back through the interpretation, over the base structure
expanded by the reduction's induction
(DescriptiveComplexity.sorealize_pullRelSO); the induction is then eliminated
from the pulled definition
(DescriptiveComplexity.sigmaSODefinable_of_ifpExpand), and the order the
reduction uses is re-quantified inside the block
(DescriptiveComplexity.sigmaSODefinable_of_orderPull).
Dependency graph
NP is closed under FO(LFP) reductions: a problem reducing to an NP problem by a polynomial-time reduction is in NP.
Dependency graph
coNP is closed under FO(LFP) reductions, by complementation: the same interpretation reduces the complements.
Dependency graph
Π₁-definability is closed under FO(LFP) reductions – the same statement
as DescriptiveComplexity.mem_coNP_of_lfpReduction, at the level of the
logic.
Dependency graph
Membership under relativized first-order reductions #
The same three classes are closed under the relativized first-order
reductions ≤ʳᶠᵒ[≤] – the notion all of this library's hardness travels along.
Only the hardness half of that closure was available before
(DescriptiveComplexity.ComplexityClass.hard_of_relOrderedReduction); the
membership half is these three theorems, and they are corollaries of the
pullback of DescriptiveComplexity.SecondOrderRelPull and of
DescriptiveComplexity.IFPDefinable.of_relOrderedReduction. (What is still
missing is the corresponding field of
DescriptiveComplexity.ComplexityClass, which every class literal of the
library would have to supply.)
PTIME is closed under relativized ordered reductions.
Dependency graph
NP is closed under relativized ordered reductions.
Dependency graph
coNP is closed under relativized ordered reductions.
Dependency graph
Hardness under FO(LFP) reductions #
Hardness for a collection of problems under FO(LFP) reductions, stated
cofinally as DescriptiveComplexity.CofinalHard is: every problem of the
collection FO(LFP)-reduces to every problem that P FO(LFP)-reduces to.
Hardness under a wider class of reductions is a weaker statement, so this is
implied by the library's own hardness (DescriptiveComplexity.CofinalHard.toLFP)
and does not replace it.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Over a relational vocabulary, hardness under FO(LFP) reductions is the
usual notion: every problem of the collection reduces to P itself.
Dependency graph
Hardness travels forward along FO(LFP) reductions.
Dependency graph
A problem hard for a collection under first-order reductions is hard for it under FO(LFP) reductions: every first-order reduction is an FO(LFP) reduction.
Dependency graph
A 𝒞-hard problem of a class of this library is hard under FO(LFP)
reductions. Reading a completeness theorem of the catalog with
polynomial-time reductions in place of first-order ones is this corollary.