Documentation

DescriptiveComplexity.SecondOrderNewExpPull

The block a problem over an expansion is guessed in #

NEXPTIME ⊆ ∃SO[new, exp c d] rewrites a Σ₁ definition over an exponential expansion as a Σ₁ definition with value invention. Everything the rewritten sentence guesses goes into one second-order block, and this file is where that block is fixed and its symbols named:

What the file proves is that an assignment of that block reads as the data the translations of DescriptiveComplexity.SecondOrderNewRead and DescriptiveComplexity.SecondOrderNewPoint ask for (DescriptiveComplexity.pullPointOn), given only that its order part is a linear order of the original elements.

The block #

@[reducible, inline]

The expansion's block with one nullary variable per tag: what an invented value has to stand for is an assignment of this, the tag included.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    Everything the sentence guesses besides the order: the meanings of the tagged block, and the source problem's own block.

    Equations
    Instances For
      Dependency graph
      @[reducible, inline]

      The block: the order variable, the meanings, and the source problem's block.

      Equations
      Instances For
        Dependency graph
        @[reducible, inline]

        The vocabulary the guessed sentence is written in.

        Equations
        Instances For
          Dependency graph

          The symbols #

          The meaning relation of a variable of the expansion's block.

          Equations
          Instances For
            Dependency graph

            The meaning relation of a tag: unary, the tag being a nullary variable.

            Equations
            Instances For
              Dependency graph

              A variable of the source problem's own block.

              Equations
              Instances For
                Dependency graph

                The symbols the translations of a defining sentence use.

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

                  The symbols the point formulas use.

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

                    What an assignment of the block reads as #

                    def DescriptiveComplexity.pullMeans {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (v : A Fin m) :

                    The assignment of the expansion's block that an invented value means.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      Dependency graph
                      def DescriptiveComplexity.pullTags {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (v : A Fin m) (t : X.Tag) :

                      The tags an invented value carries.

                      Equations
                      Instances For
                        Dependency graph
                        def DescriptiveComplexity.pullLe {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (a b : A) :

                        The order the order variable carries, as a relation on the instance.

                        Equations
                        Instances For
                          Dependency graph
                          @[instance_reducible]
                          noncomputable def DescriptiveComplexity.pullLinearOrder {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (hrefl : ∀ (a : A), pullLe ρ a a) (htrans : ∀ (a b c : A), pullLe ρ a bpullLe ρ b cpullLe ρ a c) (hanti : ∀ (a b : A), pullLe ρ a bpullLe ρ b aa = b) (htotal : ∀ (a b : A), pullLe ρ a b pullLe ρ b a) :

                          The linear order the guard's order variable carries.

                          Equations
                          Instances For
                            Dependency graph
                            theorem DescriptiveComplexity.pullPointOn {L : FirstOrder.Language} [L.IsRelational] {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) [LinearOrder A] (hle : ∀ (a b : A), a b pullLe ρ a b) :

                            An assignment of the block reads as the data the translations ask for: its meaning variables give each invented value an assignment of the expansion's block, its tag variables the tags it carries, and its order variable the order of the instance – the last being a hypothesis, since which linear order the instance carries is the caller's to fix.

                            Dependency graph

                            The kernel #

                            The formulas interpreting the source problem's vocabulary – the expanded one together with its own block – over the extended universe: an atom of the expansion is DescriptiveComplexity.pointRelF, an atom of the block is the block variable itself.

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

                              The domain formula: the value is a point of the expanded universe.

                              Equations
                              Instances For
                                Dependency graph
                                def DescriptiveComplexity.pullCert {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (e : X.Map AA Fin m) :
                                C.Assignment (X.Map A)

                                The assignment of the source problem's block that the guess carries, read at the points.

                                Equations
                                Instances For
                                  Dependency graph
                                  structure DescriptiveComplexity.PointRep {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (e : X.Map AA Fin m) :

                                  What names the points: an injection of the expanded universe into the invented values, whose image is exactly the values that are points, sending a point to a value that means its assignment and carries its tag and no other.

                                  Instances For
                                    Dependency graph
                                    theorem DescriptiveComplexity.pullSubst_rel {L : FirstOrder.Language} [L.IsRelational] {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (h : PointOn (pullPointSyms X C) Sum.inl (pullMeans ρ) (pullTags ρ)) {e : X.Map AA Fin m} (hr : PointRep ρ e) {n : } (r : (X.E.sum C.lang).Relations n) (ts : Fin nX.Map A) :

                                    The structure the kernel's formulas define on the points is the one the source problem is read in: the expansion's own structure, and the source problem's block read at the values naming the points.

                                    Dependency graph
                                    noncomputable def DescriptiveComplexity.pullSubstEquiv {L : FirstOrder.Language} [L.IsRelational] {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (h : PointOn (pullPointSyms X C) Sum.inl (pullMeans ρ) (pullTags ρ)) {e : X.Map AA Fin m} (hr : PointRep ρ e) :
                                    (X.E.sum C.lang).Equiv (X.Map A) (X.Map A)

                                    The structure identification of DescriptiveComplexity.pullSubst_rel, as an isomorphism.

                                    Equations
                                    Instances For
                                      Dependency graph
                                      theorem DescriptiveComplexity.realize_pullKernel {L : FirstOrder.Language} [L.IsRelational] {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (h : PointOn (pullPointSyms X C) Sum.inl (pullMeans ρ) (pullTags ρ)) {e : X.Map AA Fin m} (hr : PointRep ρ e) (φ : (X.E.sum C.lang).Sentence) :
                                      (A Fin m) (pullSubst X C).substSentence (pullDom X C) φ X.Map A φ

                                      The kernel, translated: the source problem's first-order kernel, with DescriptiveComplexity.pointRelF for the atoms of the expanded vocabulary, its own block variables for its own, and “is a point” as the domain formula, holds in the extended universe exactly when the kernel holds over the expansion.

                                      Dependency graph

                                      Naming the points #

                                      The meaning block sits inside the whole block.

                                      Equations
                                      Instances For
                                        Dependency graph
                                        Dependency graph

                                        The meaning guard, in the vocabulary of the whole block.

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

                                          The meaning part of an assignment of the whole block.

                                          Equations
                                          Instances For
                                            Dependency graph

                                            The meaning guard, read in the whole block: it says of the meaning part what DescriptiveComplexity.meanGuardB says.

                                            Dependency graph

                                            The assignment of the tagged block a point stands for: its own assignment, and the tag bit of its tag alone.

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

                                              Distinct points have distinct assignments: the assignment holds the point's own, and its tag in the tag bits.

                                              Dependency graph
                                              theorem DescriptiveComplexity.pullTags_meaning {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (v : A Fin m) (t : X.Tag) (ts : Fin ((taggedBlock X).arity (Sum.inr t))A Fin m) :

                                              A tag atom is the meaning relation of a nullary variable.

                                              Dependency graph
                                              theorem DescriptiveComplexity.pullMeans_inr {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (k : Fin m) (i : X.B.ι) (ts : Fin (X.B.arity i)A) :
                                              Dependency graph
                                              theorem DescriptiveComplexity.pullTags_inr {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (k : Fin m) (t : X.Tag) (ts : Fin ((taggedBlock X).arity (Sum.inr t))A) :
                                              Dependency graph
                                              noncomputable def DescriptiveComplexity.pullName {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] [Finite A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (hbij : Function.Bijective (meanAtB (pullMeanPart ρ))) (p : X.Map A) :
                                              A Fin m

                                              The value naming a point: the one whose meaning is the point's assignment, tag bit included.

                                              Equations
                                              Instances For
                                                Dependency graph
                                                theorem DescriptiveComplexity.meanAtB_symm {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} [Finite A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (hbij : Function.Bijective (meanAtB (pullMeanPart ρ))) (α : (taggedBlock X).Assignment A) (i : (taggedBlock X).ι) (ts : Fin ((taggedBlock X).arity i)A) :
                                                meanAtB (pullMeanPart ρ) ((meanAssignEquiv (pullMeanPart ρ) hbij).symm α) i, ts α i ts
                                                Dependency graph
                                                theorem DescriptiveComplexity.pullPointRep {L : FirstOrder.Language} {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [LinearOrder A] [Finite A] {m : } (ρ : (pullBlock X C).Assignment (A Fin m)) (hbij : Function.Bijective (meanAtB (pullMeanPart ρ))) (hshaped : ∀ (i : (taggedBlock X).ι) (v : A Fin m) (w : Fin ((taggedBlock X).arity i)A Fin m), meaningOfB (pullMeanPart ρ) i v w¬IsOld v ∀ (j : Fin ((taggedBlock X).arity i)), IsOld (w j)) :
                                                PointRep ρ (pullName ρ hbij)

                                                The naming is a representation: it is injective, a point's value means its assignment and carries its tag alone, and – given that a meaning relates an invented value to original elements only – every value that is a point is named.

                                                Dependency graph

                                                The sentence, and what an assignment satisfying it gives #

                                                The sentence: the order guard, the meaning guard, and the translated kernel.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  Dependency graph
                                                  theorem DescriptiveComplexity.pullSentence_back {L : FirstOrder.Language} [L.IsRelational] {X : ExpExpansion L} {C : SOBlock} {A : Type} [L.Structure A] [Finite A] {m : } (φ : (X.E.sum C.lang).Sentence) (ρ : (pullBlock X C).Assignment (A Fin m)) ( : (A Fin m) pullSentence X C φ) :
                                                  ∃ (inst : LinearOrder A) (σ : C.Assignment (X.Map A)), X.Map A φ

                                                  From an assignment to the expansion: an assignment satisfying the sentence carries a linear order of the instance and an assignment of the source problem's block over the expansion at that order, for which the source kernel holds.

                                                  Dependency graph