Documentation

DescriptiveComplexity.Problems.Qsat.Levels

The levels of the Savitch recursion, and what a valuation reads #

Two independent pieces of bookkeeping for the correctness proof.

Levels #

Levels are the state variables of the input, in the ambient order: the first one (DescriptiveComplexity.IsMinSV) carries the two endpoints of the walk, the last one (DescriptiveComplexity.IsMaxSV) the base case, and each other level receives its pair from the level just above (DescriptiveComplexity.IsPredSV). Those three notions exist and are unique on a finite order, and DescriptiveComplexity.svAbove – the number of levels from a given one down to the last – decreases by one at each step, starting from DescriptiveComplexity.stateDepth at the first level and ending at 1. That is the depth of DescriptiveComplexity.SavPow the level computes.

What a valuation reads #

A valuation of the constructed instance is a predicate on its elements; the correctness proof only ever reads it through the ten projections below (DescriptiveComplexity.stS, DescriptiveComplexity.stU, DescriptiveComplexity.bitB, DescriptiveComplexity.valP…), one per variable tag, which turn it back into the states, bits and valuations the reduction means.

The minimum of the input order #

noncomputable def DescriptiveComplexity.qBot (A : Type) [LinearOrder A] [Finite A] [Nonempty A] :
A

The minimum of the input order: the padding of the coordinates a tag does not use.

Equations
Instances For
    Dependency graph
    Dependency graph
    theorem DescriptiveComplexity.eq_qBot {A : Type} [LinearOrder A] [Finite A] [Nonempty A] {q : A} (h : IsBot q) :
    q = qBot A
    Dependency graph
    Dependency graph

    The levels #

    Dependency graph
    Dependency graph
    Dependency graph
    Dependency graph
    theorem DescriptiveComplexity.isMinSV_unique {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] {ℓ' : A} (h : IsMinSV ) (h' : IsMinSV ℓ') :
    = ℓ'
    Dependency graph
    theorem DescriptiveComplexity.isMaxSV_unique {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] {ℓ' : A} (h : IsMaxSV ) (h' : IsMaxSV ℓ') :
    = ℓ'
    Dependency graph
    theorem DescriptiveComplexity.isPredSV_unique {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] {d d' : A} (h : IsPredSV d ) (h' : IsPredSV d' ) :
    d = d'
    Dependency graph
    Dependency graph
    Dependency graph
    theorem DescriptiveComplexity.exists_isPredSV {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] { : A} (hℓ : IsSV ) (hmin : ¬IsMinSV ) :
    ∃ (d : A), IsPredSV d
    Dependency graph
    Dependency graph

    The number of levels from down to the last one: the depth of the Savitch recursion that level still has to unfold.

    Equations
    Instances For
      Dependency graph
      Dependency graph
      Dependency graph
      Dependency graph
      theorem DescriptiveComplexity.exists_isSuccSV {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] { : A} (hℓ : IsSV ) (hmax : ¬IsMaxSV ) :
      ∃ (ℓ' : A), IsPredSV ℓ'
      Dependency graph
      Dependency graph

      What a valuation reads #

      The source endpoint of the walk, as read by a valuation.

      Equations
      Instances For
        Dependency graph

        The target endpoint of the walk, as read by a valuation.

        Equations
        Instances For
          Dependency graph

          The midpoint guessed at a level, as read by a valuation.

          Equations
          Instances For
            Dependency graph

            The first component of the pair passed below a level.

            Equations
            Instances For
              Dependency graph

              The second component of the pair passed below a level.

              Equations
              Instances For
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph
                Dependency graph