Documentation

DescriptiveComplexity.FixedPointParam

An element, quantified in front of a fixed point #

The theorem: FO(≤, IFP) definability – hence membership in DescriptiveComplexity.PTIME – is closed under existential quantification over one element (DescriptiveComplexity.IFPDefinable.exElement, DescriptiveComplexity.mem_PTIME_exElement). If a problem R over the vocabulary extended by a mark (DescriptiveComplexity.newLang, one unary symbol) is definable, then so is “some element, marked, makes R hold”.

Semantically there is nothing to it – trying every element multiplies the work by the size of the instance – but a fixed point cannot be restarted once per element, so the construction runs all of them at once: every relation variable gains one argument, the parameter, and every stage of the iteration then holds the stages of all the instances side by side (DescriptiveComplexity.StepDef.inflStage_param). The mark is not a symbol of the new vocabulary any more, so the atom old t becomes the equation t = parameter; nothing else changes, since the universe does not.

This is the deterministic counterpart of DescriptiveComplexity.SOTCDefinable.exBlock, which prefixes a walk with a guessed relation – a walk may guess, a fixed point may not, and one element is what a fixed point can afford instead.

Where it is used #

DescriptiveComplexity.Exponential.FreeTime: the order-free reading of DescriptiveComplexity.EXPTIME has to say “some copy of the order-guessing expansion answers yes”, and a copy is named by any one of its points.

A structure with one marked element #

@[instance_reducible]

The mark of a single element, as a structure over the marking vocabulary.

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

    The instance with one element marked, over DescriptiveComplexity.newLang.

    Equations
    Instances For
      Dependency graph

      The block, with a parameter argument #

      DescriptiveComplexity.SOBlock.withParam and its reading at a parameter are SecondOrderParam.lean's; what is here is the one statement that mentions the empty assignment.

      Dependency graph

      The parameter substitution #

      A term of the marked vocabulary, read in the parameterized one: over relational vocabularies a term is a variable, so there is nothing to do.

      Equations
      Instances For
        Dependency graph

        The parameter substitution: the mark becomes “equal to the parameter”, every fixed-point variable takes the parameter as a further argument, and everything else is left alone – in particular the quantifiers, the universe being unchanged.

        Equations
        Instances For
          Dependency graph
          Dependency graph
          theorem DescriptiveComplexity.realize_paramLift {L : FirstOrder.Language} [L.IsRelational] {N : Type} {B : SOBlock} {α : Type} {p : α} [L.Structure N] [LinearOrder N] (ρ : B.withParam.Assignment N) (v : αN) {n : } (φ : (((newLang L).sum FirstOrder.Language.order).sum B.lang).BoundedFormula α n) (xs : Fin nN) :
          (paramLift B p φ).Realize v xs φ.Realize v xs

          The parameter substitution is correct: read at an assignment of the extended block, the substituted formula says what the original said in the instance whose mark is the parameter, at that assignment read at the parameter.

          Dependency graph
          @[instance_reducible]

          The instance with one element marked, ordered.

          Equations
          Instances For
            Dependency graph

            The definition, run at every parameter at once #

            Every instance at once: the same simultaneous induction, every relation variable carrying the parameter as a further argument, and the output existentially quantified over it.

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

              One step of the parameterized definition, read at a parameter, is one step of the original in the instance that parameter marks.

              Dependency graph

              The inflationary step of the parameterized definition, read at a parameter.

              Dependency graph

              Every stage of the parameterized iteration holds the stages of all the instances side by side.

              Dependency graph

              The value of the parameterized iteration, read at a parameter.

              Dependency graph

              What the parameterized definition defines: the original one, at some element of the instance.

              Dependency graph

              The closure theorems #

              theorem DescriptiveComplexity.IFPDefinable.exElement {L : FirstOrder.Language} [L.IsRelational] {R : DecisionProblem (newLang L)} {P : DecisionProblem L} (hR : IFPDefinable R) (h : ∀ (N : Type) [inst : L.Structure N] [Finite N] [Nonempty N], P.Holds N ∃ (c : N), R.Holds N) :

              FO(≤, IFP) definability is closed under existential quantification over an element: the parameter is carried by every relation variable of the induction.

              Dependency graph
              theorem DescriptiveComplexity.mem_PTIME_exElement {L : FirstOrder.Language} [L.IsRelational] {R : DecisionProblem (newLang L)} {P : DecisionProblem L} (hR : PTIME.Mem R) (h : ∀ (N : Type) [inst : L.Structure N] [Finite N] [Nonempty N], P.Holds N ∃ (c : N), R.Holds N) :

              PTIME is closed under existential quantification over an element.

              Dependency graph