Documentation

DescriptiveComplexity.FixedPointPartial

FO(PFP): first-order logic with a partial fixed point #

The partial fixed-point logic (Abiteboul–Vianu 1989; Ebbinghaus–Flum 1995, ch. 7): iterate the step formulas of a DescriptiveComplexity.StepDef by replacement – each stage is one application of the step formulas to the previous one – and read the output at the first stable stage, if the iteration stabilizes at all.

The divergence convention #

DescriptiveComplexity.StepDef.PFPHolds requires convergence: a diverging iteration makes the definition false, whatever the output sentence. The textbook semantics instead assigns a diverging iteration the empty relations and reads the output there; the two readings are compared precisely by DescriptiveComplexity.StepDef.realize_pfpValue_iff – they agree unless the iteration diverges and the output holds at the empty assignment. The convergence-requiring convention is chosen deliberately:

As for IFP, there is an ordered notion (DescriptiveComplexity.PFPDefinable, the setting of the capture theorem FO(≤, PFP) = PSPACE) and an order-free one (DescriptiveComplexity.PFPDefinableFree, the right-hand side of the Abiteboul–Vianu theorem), and the two must not be conflated.

Inflation is a special case #

DescriptiveComplexity.StepDef.inflate disjoins each variable's own atom onto its step formula, making the partial iteration of the modified definition the inflationary iteration of the original one. Since an inflationary iteration always converges on finite structures, FO(IFP) is contained in FO(PFP) (DescriptiveComplexity.IFPDefinable.pfpDefinable, DescriptiveComplexity.IFPDefinableFree.pfpDefinableFree) – the easy inclusion of Abiteboul–Vianu, in both its ordered and order-free forms.

Closure properties #

Same story as for IFP: closed under (ordered) first-order reductions by the transport lemmas of DescriptiveComplexity.FixedPointStep (DescriptiveComplexity.PFPDefinable.of_orderedReduction, DescriptiveComplexity.PFPDefinableFree.of_foReduction). Closure under complement is not by negating the output – divergence makes both a definition and its output-negation false – but follows on ordered structures from the capture theorem (DescriptiveComplexity.FixedPointPartialSpace) and PSPACE = coPSPACE.

The value of a partial definition #

The value of a simultaneous induction read partially: some stage is a fixed point of the step and satisfies the output sentence. All stable stages are equal (DescriptiveComplexity.StepDef.partStage_eq_of_isFixedPt), so this says exactly «the iteration converges and its limit satisfies the output» – see the module docstring for the divergence convention.

Equations
Instances For
    Dependency graph

    The partial iteration converges: some stage is a fixed point of the step.

    Equations
    Instances For
      Dependency graph

      A definition whose value is read converges.

      Dependency graph
      theorem DescriptiveComplexity.StepDef.exists_least_stable {L : FirstOrder.Language} (d : StepDef L) (A : Type) [L.Structure A] (h : d.PFPConverges A) :
      ∃ (N : ), d.partStage A N = d.partStage A (N + 1) n < N, d.partStage A n d.partStage A (n + 1)

      The first stage that does not move: convergence is witnessed by a least index. That is what a machine testing «this stage and the next agree» at each round stops at, and what makes its earlier rounds' tests fail.

      Dependency graph

      The textbook value of the partial iteration: the stable stage if the iteration converges, the empty assignment otherwise. Only used to relate the two divergence conventions (DescriptiveComplexity.StepDef.realize_pfpValue_iff); the semantics of the logic is DescriptiveComplexity.StepDef.PFPHolds.

      Equations
      Instances For
        Dependency graph

        The two divergence conventions, compared: the textbook reading – the output at DescriptiveComplexity.StepDef.pfpValue – differs from DescriptiveComplexity.StepDef.PFPHolds exactly on a diverging iteration whose output holds at the empty assignment.

        Dependency graph

        The value of a partial definition is isomorphism-invariant.

        Dependency graph

        Definability, ordered and order-free #

        A decision problem is order-free FO(PFP) definable if, on nonempty finite structures, it is the value of a simultaneous induction over its own vocabulary, read partially. This is the unordered notion on the fixed-point side of the Abiteboul–Vianu theorem.

        Equations
        Instances For
          Dependency graph

          A decision problem is FO(≤, PFP) definable if, on nonempty finite ordered structures, it is the value of a simultaneous induction over the ordered expansion of its vocabulary, read partially – for every linear order, the problem itself never seeing it. This is the setting of the capture theorem FO(≤, PFP) = PSPACE (DescriptiveComplexity.FixedPointPartialSpace).

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            Dependency graph

            Order-free FO(PFP) definability only depends on the finite instances of a problem.

            Dependency graph

            FO(≤, PFP) definability only depends on the finite instances of a problem.

            Dependency graph

            Closure under reductions #

            Order-free FO(PFP) definability is closed under first-order reductions: the partial stages commute with the pullback of the block (DescriptiveComplexity.StepDef.partStage_pull), being a fixed point is insensitive to the pullback (DescriptiveComplexity.StepDef.isFixedPt_next_pull_iff), and the output sentence pulls back through the extended interpretation.

            Dependency graph

            FO(≤, PFP) definability is closed under ordered first-order reductions, by the same route as for IFP (DescriptiveComplexity.IFPDefinable.of_orderedReduction), stage by stage.

            Dependency graph

            FO(≤, PFP) definability is closed under plain first-order reductions, which are in particular ordered ones.

            Dependency graph

            FO(IFP) is contained in FO(PFP) #

            The inflationary reading of a simultaneous induction, as a partial one: disjoin each variable's own atom onto its step formula, so that one partial step of the result is one inflationary step of the original.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              Dependency graph

              One partial step of the inflated induction is one inflationary step of the original.

              Dependency graph

              The partial stages of the inflated induction are the inflationary stages of the original.

              Dependency graph

              On a finite structure the inflated induction converges to the inflationary limit, so its partial value is the inflationary value.

              Dependency graph

              Order-free FO(IFP) is contained in order-free FO(PFP): inflate the induction. The easy inclusion of the Abiteboul–Vianu theorem.

              Dependency graph

              FO(≤, IFP) is contained in FO(≤, PFP): inflate the induction.

              Dependency graph