Documentation

DescriptiveComplexity.TransitiveClosureTower

Towers of walks: reachability relations that may read earlier ones #

A DescriptiveComplexity.TCFamily is a finite family of walks over one vocabulary. What composition of reductions produces is not that: pulling the walks of an outer reduction back through an inner one gives walks whose step formulas read the inner walks' reachability relations. A DescriptiveComplexity.TCTower is the closure of the notion under that – a list of families, each over the vocabulary expanded by the blocks of the ones before it – which is FO(TC) with nesting, the operator applied to formulas that may themselves contain it.

The point of the construction #

DescriptiveComplexity.TCTower.inflLimit_toStepDef: a tower's reachability relations are the value of a single inflationary induction, namely the stratification (DescriptiveComplexity.StepDef.stratify) of the inductions of its families. Each family is an induction already (DescriptiveComplexity.TCFamily.inflLimit_toStepDef); a stratum reads the strata below it through the gate the library's stratification already provides, and the recursion is one line per constructor.

So a tower costs nothing beyond a family: it is still an FO(LFP) interpretation (DescriptiveComplexity.TransitiveClosureReduction), with the same closure properties. Composition of ≤ᵗᶜ with itself does not go through towers in the end (DescriptiveComplexity.TransitiveClosureReductionTrans flattens the outer walks instead); a tower remains the natural reading of nested walks.

What is not claimed #

That a tower can be flattened into a single family. Classically it can, and the notion this file defines is therefore the classical one; here the flattening is proved one level at a time and at the encodings of nodes (DescriptiveComplexity.ParamTCSpec.flat, DescriptiveComplexity.TransitiveClosureFlatten), which is what the closure of DescriptiveComplexity.NL under ≤ᵗᶜ uses, and not as an equality of families; a tower is not flattened as such.

Towers #

A tower of walk families: each family's walks may read the reachability relations of the families below, its vocabulary being the base expanded by their blocks.

Instances For
    Dependency graph

    The induction with no relation variables: the empty tower's.

    Equations
    Instances For
      Dependency graph

      The induction that computes a tower's reachability relations: the stratification of the families' own inductions.

      Equations
      Instances For
        Dependency graph

        The block of relation variables a tower's formulas may read.

        Equations
        Instances For
          Dependency graph
          Dependency graph
          Dependency graph

          The relations a tower holds #

          def DescriptiveComplexity.TCTower.stratAssign {A : Type} {B₁ B₂ : SOBlock} (ρ₁ : B₁.Assignment A) (g : Prop) (ρ₂ : B₂.Assignment A) :
          (stratBlock B₁ B₂).Assignment A

          An assignment of a stratified block, from its three parts.

          Equations
          Instances For
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.TCTower.strat1Assign_stratAssign {A : Type} {B₁ B₂ : SOBlock} (ρ₁ : B₁.Assignment A) (g : Prop) (ρ₂ : B₂.Assignment A) :
            strat1Assign (stratAssign ρ₁ g ρ₂) = ρ₁
            Dependency graph
            @[simp]
            theorem DescriptiveComplexity.TCTower.strat2Assign_stratAssign {A : Type} {B₁ B₂ : SOBlock} (ρ₁ : B₁.Assignment A) (g : Prop) (ρ₂ : B₂.Assignment A) :
            strat2Assign (stratAssign ρ₁ g ρ₂) = ρ₂
            Dependency graph
            theorem DescriptiveComplexity.TCTower.stratGate_stratAssign {A : Type} {B₁ B₂ : SOBlock} (ρ₁ : B₁.Assignment A) (g : Prop) (ρ₂ : B₂.Assignment A) :
            StratGate (stratAssign ρ₁ g ρ₂) g
            Dependency graph
            noncomputable def DescriptiveComplexity.TCTower.reachAssign {L : FirstOrder.Language} (T : TCTower L) (A : Type) (_instA : L.Structure A) :

            The relations a tower holds: each family's reachability relations, read over the structure the families below it have already expanded. The gate of each stratum is set, as it is at the value of the stratified induction.

            Equations
            Instances For
              Dependency graph
              Dependency graph

              A tower is an induction #

              A tower's relations are the value of one inflationary induction.

              Dependency graph