FO(IFP): first-order logic with an inflationary fixed point #
The inflationary fixed-point logic (Gurevich–Shelah
1986; Abiteboul–Vianu 1989;
Ebbinghaus–Flum 1995, ch. 7): iterate the step
formulas of a DescriptiveComplexity.StepDef inflationarily – each stage
accumulates what the step formulas derive on top of the previous stage – and
read the output sentence at the limit. No positivity is required of the step
formulas: inflation makes the iteration monotone whatever they are, which is
the whole point of the logic.
Two definability notions result, and keeping them distinct is the entire subject of the Abiteboul–Vianu theorem:
DescriptiveComplexity.IFPDefinableFree– over the bare vocabulary, on unordered structures;DescriptiveComplexity.IFPDefinable– over the vocabulary expanded by an order, required for every linear order on the universe, the problem itself never seeing it. This is the setting of the capture theorem FO(≤, IFP) = PTIME (DescriptiveComplexity.FixedPointInflationaryLFP).
For SO(TC) the corresponding two notions coincide
(DescriptiveComplexity.sotcDefinable_iff_free): a walk can guess an order
into its state. Here they must not be conflated – an inflationary induction
cannot manufacture an order (its stages are isomorphism-invariant, so on a
bare set of n elements nothing asymmetric is ever derived), and the gap
between the two notions is precisely what makes the unordered
Abiteboul–Vianu theorem (DescriptiveComplexity.AbiteboulVianu) a theorem
about P = PSPACE rather than a triviality.
Relation to FO(LFP), and why Gurevich–Shelah is not needed #
DescriptiveComplexity.LFPDefinable.ifpDefinable embeds FO(LFP) into ordered
FO(IFP): the rules of a Horn program, read as one simultaneous step
(DescriptiveComplexity.hornStepF), form a StepDef whose inflationary
stages are exactly the derivation stages DescriptiveComplexity.derivesIn
(DescriptiveComplexity.inflStage_toStepDef). The converse translation –
FO(≤, IFP) back into FO(LFP), hence the capture of PTIME – is
DescriptiveComplexity.FixedPointInflationaryLFP.
This library states the Abiteboul–Vianu theorem for IFP versus PFP, as in Abiteboul and Vianu's original form. The classical statement for least fixed points on unordered structures needs Gurevich–Shelah (order-free LFP = IFP, by stage comparison) on top; phrasing the theorem with IFP makes that machinery unnecessary, a design decision, not an omission.
Closure properties #
FO(IFP) definability is closed under complement by construction
(DescriptiveComplexity.IFPDefinable.compl – negate the output), and under
(ordered) first-order reductions
(DescriptiveComplexity.IFPDefinableFree.of_foReduction,
DescriptiveComplexity.IFPDefinable.of_orderedReduction): the stages commute
with the pullback of the block (DescriptiveComplexity.StepDef.inflStage_pull)
and the output sentence pulls back through the extended interpretation,
exactly as for FO(LFP). The notion is class-worthy in the sense of
DescriptiveComplexity.ComplexityClass.
The value of an inflationary definition #
The value of a simultaneous induction read inflationarily: the output sentence, at the limit of the inflationary iteration.
Instances For
Dependency graph
Negating the output complements the defined property: FO(IFP) is closed under complement by construction, being a logic rather than a fragment.
Instances For
Dependency graph
Dependency graph
The value of an inflationary definition is isomorphism-invariant.
Dependency graph
Definability, ordered and order-free #
A decision problem is order-free FO(IFP) definable if, on nonempty
finite structures, it is the value of a simultaneous induction over its own
vocabulary, read inflationarily. This is the unordered notion the
Abiteboul–Vianu theorem is about; the capture theorem for PTIME instead uses
the ordered DescriptiveComplexity.IFPDefinable.
Equations
- DescriptiveComplexity.IFPDefinableFree P = ∃ (d : DescriptiveComplexity.StepDef L), ∀ (A : Type) [inst : L.Structure A] [Finite A] [Nonempty A], P.Holds A ↔ d.IFPHolds A
Instances For
Dependency graph
A decision problem is FO(≤, IFP) definable if, on nonempty finite ordered structures, it is the value of a simultaneous induction over the ordered expansion of its vocabulary, read inflationarily. As everywhere in this library, the equivalence is required for every linear order, so the notion is order-invariant: the formulas see the order, the problem does not.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Order-free FO(IFP) definability only depends on the finite instances of a problem.
Dependency graph
FO(≤, IFP) definability only depends on the finite instances of a problem.
Dependency graph
Order-free FO(IFP) definability is closed under complement: negate the output formula.
Dependency graph
FO(≤, IFP) definability is closed under complement: negate the output formula.
Dependency graph
Closure under reductions #
Order-free FO(IFP) definability is closed under first-order
reductions: pull the induction back through the interpretation
(DescriptiveComplexity.StepDef.pull); the inflationary limit commutes with
the pullback (DescriptiveComplexity.StepDef.inflLimit_pull) and the output
sentence pulls back through the extended interpretation.
Dependency graph
FO(≤, IFP) definability is closed under ordered first-order
reductions. The induction pulls back through the order-extended
interpretation; the two readings of the interpreted ordered structure are
identified by DescriptiveComplexity.FOInterpretation.ordExtendLEquiv, along
which the inflationary limit transports
(DescriptiveComplexity.StepDef.inflLimit_map).
Dependency graph
FO(≤, IFP) definability is closed under plain first-order reductions, which are in particular ordered ones.
Dependency graph
Horn rules as one simultaneous inflationary step #
The rules of an FO(LFP) definition, read as a single simultaneous step: the
step formula of the variable i says that some rule with head i fires –
its guard holds and its body atoms are in the current stage – with the head's
arguments instantiated at the free variables. Iterated inflationarily, the
stages are exactly the derivation stages DescriptiveComplexity.derivesIn,
so the limit is the least fixed point and FO(LFP) embeds into FO(≤, IFP)
(DescriptiveComplexity.LFPDefinable.ifpDefinable). The step formulas
produced here are positive in the block – inflation just does not care.
The relation symbol of a block variable, in the expanded vocabulary
L.sum B.lang (the generic-L sibling of
DescriptiveComplexity.varOutSym).
Equations
Instances For
Dependency graph
A second-order body atom, as a formula over the expanded vocabulary; its arguments are read from the rule-variable component.
Equations
- DescriptiveComplexity.bodyAtomF b = (DescriptiveComplexity.varInSym L B b.idx).formula fun (j : Fin (B.arity b.idx)) => FirstOrder.Language.var (Sum.inr (b.args j))
Instances For
Dependency graph
A guard, transported to the expanded vocabulary, over head-argument and rule variables.
Equations
Instances For
Dependency graph
The contribution of one rule to the step formula of the variable i:
the rule's head is about i, its arguments are the free variables, its guard
holds, and its body atoms are in the current stage.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The step formula of the variable i induced by a list of rules: some
rule with head i fires, for some values of the rule variables.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Dependency graph
Dependency graph
The step formula induced by a list of rules realizes as one round of
rule application (DescriptiveComplexity.stepDerives).
Dependency graph
FO(LFP) embeds into FO(≤, IFP) #
The simultaneous induction induced by an FO(LFP) definition: same block, the rules read as one simultaneous step, same output.
Equations
Instances For
Dependency graph
The inflationary stages of the induced induction are the derivation stages of the rules.
Dependency graph
The value of the induced inflationary iteration is the least fixed point of the rules.
Dependency graph
Every FO(LFP) definition is an FO(≤, IFP) definition: read the rules
as one simultaneous step; inflation iterates them to their least fixed point,
and the output survives unchanged. (The converse, closing the circle back
into FO(LFP), is DescriptiveComplexity.FixedPointInflationaryLFP.)