Documentation

DescriptiveComplexity.Problems.Qsat.Parts

The blocks of the prefix, and what the matrix says #

The five kinds of block the prefix of the constructed instance splits into – the endpoints, then a midpoint, a universal bit and a pair per level, then the auxiliary variables (DescriptiveComplexity.tEnds, DescriptiveComplexity.tZ, DescriptiveComplexity.tB, DescriptiveComplexity.tUV, DescriptiveComplexity.tAux) – together with the reading of the matrix they make possible.

Grouping the clause tags by what they talk about turns the matrix into four conditions (DescriptiveComplexity.qsatMatrix_iff_parts): the source valuation witnesses DescriptiveComplexity.IsStart for the first endpoint (DescriptiveComplexity.SrcPart), the target valuation witnesses DescriptiveComplexity.IsGoal for the second (DescriptiveComplexity.TgtPart), the transition valuation and the bit sE witness one move of the walk at the bottom level (DescriptiveComplexity.StepPart), and every level relates its own pair to the pair it receives from above (DescriptiveComplexity.LevPart).

Each group is the conjunction of two clauses of opposite signs, which is why the conditions come out as equivalences rather than implications.

The block coordinates #

@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
@[simp]
Dependency graph
noncomputable def DescriptiveComplexity.tEnds (A : Type) [LinearOrder A] [Finite A] [Nonempty A] :

The block coordinates of the two endpoints of the walk: the first block.

Equations
Instances For
    Dependency graph
    def DescriptiveComplexity.tZ {A : Type} ( : A) :

    The block coordinates of the midpoint guessed at level .

    Equations
    Instances For
      Dependency graph
      def DescriptiveComplexity.tB {A : Type} ( : A) :

      The block coordinates of the universal bit of level .

      Equations
      Instances For
        Dependency graph
        def DescriptiveComplexity.tUV {A : Type} ( : A) :

        The block coordinates of the pair passed below level .

        Equations
        Instances For
          Dependency graph
          noncomputable def DescriptiveComplexity.tAux (A : Type) [LinearOrder A] [Finite A] [Nonempty A] :

          The block coordinates of the auxiliary variables: the last block.

          Equations
          Instances For
            Dependency graph

            Overriding a block #

            theorem DescriptiveComplexity.qOver_out {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] {B : QM AProp} (τ ν : QM AProp) {v : QVarTag} {p q : A} (h : ¬B (qVar v p q)) :
            qOver B τ ν (qVar v p q) τ (qVar v p q)
            Dependency graph
            theorem DescriptiveComplexity.qOver_in {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] {B : QM AProp} (τ ν : QM AProp) {v : QVarTag} {p q : A} (h : B (qVar v p q)) :
            qOver B τ ν (qVar v p q) ν (qVar v p q)
            Dependency graph

            Two clauses of opposite signs make an equivalence #

            theorem DescriptiveComplexity.iff_of_or_not {P Q : Prop} (h0 : ¬P Q) (h1 : P ¬Q) :
            P Q
            Dependency graph
            theorem DescriptiveComplexity.or_forall_of_forall_or {ι : Sort u_1} {R : Prop} {P : ιProp} (h : ∀ (i : ι), R P i) :
            R ∀ (i : ι), P i
            Dependency graph

            What the matrix says #

            The source valuation satisfies the source clauses and reads the source endpoint of the walk.

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

              The target valuation satisfies the target clauses and reads the target endpoint of the walk.

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

                The base case of the recursion: either the equality branch, or the transition valuation satisfying the transition clauses while reading the first component of the bottom pair and writing the second.

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

                  Every level relates its pair to the pair it receives from above.

                  Equations
                  Instances For
                    Dependency graph
                    Dependency graph
                    Dependency graph
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_lS_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (s : Bool) (p q : A), QClOn (QClTag.lS s) p qClSat σ (QClTag.lS s) p q) ReadsCur A (valS σ) (stS σ)
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_lT_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (s : Bool) (p q : A), QClOn (QClTag.lT s) p qClSat σ (QClTag.lT s) p q) ReadsCur A (valT σ) (stT σ)
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_lU_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (s : Bool) (p q : A), QClOn (QClTag.lU s) p qClSat σ (QClTag.lU s) p q) ∀ (m : A), IsMaxSV mbitE σ ReadsCur A (valP σ) (stU σ m)
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_lV_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (s : Bool) (p q : A), QClOn (QClTag.lV s) p qClSat σ (QClTag.lV s) p q) ∀ (m : A), IsMaxSV mbitE σ WritesNext A (valP σ) (stV σ m)
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_bE_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (s : Bool) (p q : A), QClOn (QClTag.bE s) p qClSat σ (QClTag.bE s) p q) ∀ (m : A), IsMaxSV m¬bitE σ ∀ (x : A), IsSV x → (stU σ m x stV σ m x)
                    Dependency graph
                    theorem DescriptiveComplexity.matrix_lev_iff {A : Type} [FirstOrder.Language.transSys.Structure A] [LinearOrder A] [Finite A] [Nonempty A] (σ : QM AProp) :
                    (∀ (b w s : Bool) (x : A), QClOn (QClTag.lev b w s) xClSat σ (QClTag.lev b w s) x) LevPart σ
                    Dependency graph
                    Dependency graph