The whole polynomial hierarchy is closed under FO(LFP) reductions #
DescriptiveComplexity.FixedPointReductionClosure closes PTIME, NP and coNP
under ≤ˡᶠᵖ. This file does the same at every level
(DescriptiveComplexity.mem_sigmaP_of_lfpReduction,
DescriptiveComplexity.mem_piP_of_lfpReduction) and for PH itself
(DescriptiveComplexity.mem_PH_of_lfpReduction), and – a reduction of one
notion being a reduction of the wider ones – for ≤ᵗᶜ and ≤ᵈᵗᶜ too.
Only one ingredient is new, and it is the one that was missing at level 1:
DescriptiveComplexity.exists_expand_sorealize removes the reduction's
induction from a definition with a prefix of any length. Everything else is
the argument of the first level verbatim – pull the definition back through the
interpretation (DescriptiveComplexity.sorealize_pullRelSO), guard it with the
domain's inhabitedness, and re-quantify the order inside the first block
(DescriptiveComplexity.sigmaSODefinable_of_orderPull).
The universal levels come by complementation, as coNP did: a reduction
complements (DescriptiveComplexity.LFPReduction.compl), and Πₖ definability
is Σₖ definability of the complement
(DescriptiveComplexity.piSODefinable_iff_compl). Nothing here needs the
Π-polarity of the expansion theorem – though it has it, which is what would
be needed to close the levels without complementing.
The levels #
The classes #
Every level Σₖᵖ is closed under FO(LFP) reductions.
Dependency graph
Every level Πₖᵖ is closed under FO(LFP) reductions.
Dependency graph
The polynomial hierarchy is closed under FO(LFP) reductions.