Documentation

DescriptiveComplexity.Problems.Epr.Membership

EPR is in NEXPTIME #

The membership half. Read over the expansion whose points are the relations on the instance (DescriptiveComplexity.Epr.eprExp), the whole of EPR is one Σ₁ sentence:

guess a relation I between the symbols and the assignments; check that it is local, that the instance is well-formed, and that some assignment of the existential variables makes every clause true at every assignment of the universal variables.

Both quantifiers over assignments are first-order there, an assignment being a point, so the sentence has one second-order block and NEXPTIME is NP.exp.

The two layers #

The kernel is written once as formulas over an arbitrary index of free variables, and read back in two steps: a semantic reading at arbitrary points (DescriptiveComplexity.Epr.MemPt and its siblings), and then a computation of those predicates at the three kinds of point, which is where DescriptiveComplexity.Epr.realize_memP and the rest of the expansion's API is used. Splitting the two keeps the formula layer free of case analysis.

The guess and its vocabulary #

@[reducible]

The block the Σ₁ definition guesses: one binary relation variable, read as “the symbol s holds of the assignment w”.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    The vocabulary of the kernel: the points, together with the guess.

    Equations
    Instances For
      Dependency graph
      @[reducible, inline]

      A unary symbol of the points, in the kernel's vocabulary.

      Equations
      Instances For
        Dependency graph
        @[reducible, inline]

        A binary symbol of the points, in the kernel's vocabulary.

        Equations
        Instances For
          Dependency graph
          Dependency graph

          The atoms #

          A unary symbol of the points, as a formula.

          Equations
          Instances For
            Dependency graph

            A binary symbol of the points, as a formula.

            Equations
            Instances For
              Dependency graph
              noncomputable def DescriptiveComplexity.Epr.ivF {γ : Type} (s w : γ) :

              The guessed symbol, as a formula.

              Equations
              Instances For
                Dependency graph
                noncomputable def DescriptiveComplexity.Epr.ptEqF {γ : Type} (x y : γ) :

                Equality of two points.

                Equations
                Instances For
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  Dependency graph
                  @[simp]
                  theorem DescriptiveComplexity.Epr.realize_ivF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (s w : γ) :
                  (ivF s w).Realize v ρ () ![v s, v w]
                  Dependency graph
                  @[simp]
                  theorem DescriptiveComplexity.Epr.realize_ptEqF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (x y : γ) :
                  (ptEqF x y).Realize v v x = v y
                  Dependency graph

                  The semantic reading, at arbitrary points #

                  Dependency graph
                  Dependency graph
                  Dependency graph

                  The point q is the pair of x and y.

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

                    The assignment w sends x to y.

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

                      The literal l names the variable x at the position p.

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

                        The assignment w of the argument positions matches the environment on the arguments the literal declares.

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

                          The environment w is the one two assignments make.

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

                            Every element is sent somewhere by the assignment.

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

                              And to one place only.

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

                                The literal l is true at the environment vv, under the guess ρ.

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

                                  The guess is local: the value of a symbol is decided by the arguments its signature declares.

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

                                    The instance is well-formed, read at the points.

                                    Equations
                                    • One or more equations did not get rendered due to their size.
                                    Instances For
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      @[simp]
                                      theorem DescriptiveComplexity.Epr.memPt_iff {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (R : AAProp) (x y : A) :
                                      MemPt (asgPt R) (eltPt x) (eltPt y) R x y
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph
                                      Dependency graph

                                      The formulas of the kernel #

                                      noncomputable def DescriptiveComplexity.Epr.pairOfF {γ : Type} (q x y : γ) :

                                      q is the pair of x and y.

                                      Equations
                                      • One or more equations did not get rendered due to their size.
                                      Instances For
                                        Dependency graph
                                        noncomputable def DescriptiveComplexity.Epr.memF {γ : Type} (w x y : γ) :

                                        The assignment w sends x to y.

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          Dependency graph
                                          noncomputable def DescriptiveComplexity.Epr.argF {γ : Type} (l p x : γ) :

                                          The literal l names the variable x at the position p.

                                          Equations
                                          • One or more equations did not get rendered due to their size.
                                          Instances For
                                            Dependency graph
                                            noncomputable def DescriptiveComplexity.Epr.totalF {γ : Type} (w : γ) :

                                            Every element is sent somewhere by w.

                                            Equations
                                            • One or more equations did not get rendered due to their size.
                                            Instances For
                                              Dependency graph
                                              noncomputable def DescriptiveComplexity.Epr.funcF {γ : Type} (w : γ) :

                                              And to one place only.

                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              Instances For
                                                Dependency graph
                                                @[simp]
                                                theorem DescriptiveComplexity.Epr.realize_pairOfF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (q x y : γ) :
                                                (pairOfF q x y).Realize v PairOfPt (v q) (v x) (v y)
                                                Dependency graph
                                                @[simp]
                                                theorem DescriptiveComplexity.Epr.realize_memF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (w x y : γ) :
                                                (memF w x y).Realize v MemPt (v w) (v x) (v y)
                                                Dependency graph
                                                @[simp]
                                                theorem DescriptiveComplexity.Epr.realize_argF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (l p x : γ) :
                                                (argF l p x).Realize v ArgPt (v l) (v p) (v x)
                                                Dependency graph
                                                Dependency graph
                                                Dependency graph

                                                The clauses of the kernel #

                                                noncomputable def DescriptiveComplexity.Epr.combF {γ : Type} (e u w : γ) :

                                                The environment w is the one the two assignments make: the witness at an existential variable, the assignment being tested elsewhere.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  Dependency graph
                                                  noncomputable def DescriptiveComplexity.Epr.matchF {γ : Type} (l v w : γ) :

                                                  The assignment w of the argument positions matches the environment v on the arguments the literal l declares.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    Dependency graph
                                                    noncomputable def DescriptiveComplexity.Epr.litTrueF {γ : Type} (l v : γ) :

                                                    The literal l is true at the environment v.

                                                    Equations
                                                    • One or more equations did not get rendered due to their size.
                                                    Instances For
                                                      Dependency graph
                                                      noncomputable def DescriptiveComplexity.Epr.matrixF {γ : Type} (e : γ) :

                                                      Every clause is true at every assignment of the universal variables.

                                                      Equations
                                                      • One or more equations did not get rendered due to their size.
                                                      Instances For
                                                        Dependency graph
                                                        @[simp]
                                                        theorem DescriptiveComplexity.Epr.realize_combF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (e u w : γ) :
                                                        (combF e u w).Realize v CombPt (v e) (v u) (v w)
                                                        Dependency graph
                                                        @[simp]
                                                        theorem DescriptiveComplexity.Epr.realize_matchF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (l vv w : γ) :
                                                        (matchF l vv w).Realize v MatchPt (v l) (v vv) (v w)
                                                        Dependency graph
                                                        @[simp]
                                                        theorem DescriptiveComplexity.Epr.realize_litTrueF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (l vv : γ) :
                                                        (litTrueF l vv).Realize v LitTruePt ρ (v l) (v vv)
                                                        Dependency graph
                                                        @[simp]
                                                        theorem DescriptiveComplexity.Epr.realize_matrixF {γ A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) {v : γeprExp.Map A} (e : γ) :
                                                        (matrixF e).Realize v ∀ (u w : eprExp.Map A), IsAsgPt uTotalPt uFuncPt uIsAsgPt wCombPt (v e) u w∀ (c : eprExp.Map A), IsEltPt cClPt c∃ (l : eprExp.Map A), IsEltPt l InClPt c l LitTruePt ρ l w
                                                        Dependency graph

                                                        The kernel #

                                                        The guess is local.

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

                                                          The instance is well-formed: an atom names one variable at each position of its symbol's signature, and names one at each.

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

                                                            The kernel of the Σ₁ definition: the instance is well-formed, the guess is local, and some assignment of the existential variables satisfies every clause at every assignment of the universal ones.

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

                                                              Splitting a conjunction of sentences, kept at the level of Sentence.Realize so that the clause lemmas still apply to the parts.

                                                              Dependency graph
                                                              Dependency graph
                                                              Dependency graph
                                                              @[simp]
                                                              theorem DescriptiveComplexity.Epr.realize_eprKernel {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (ρ : ivBlock.Assignment (eprExp.Map A)) :
                                                              eprExp.Map A eprKernel WFPt A LocalPt ρ ∃ (e : eprExp.Map A), (IsAsgPt e TotalPt e FuncPt e) ∀ (u w : eprExp.Map A), IsAsgPt uTotalPt uFuncPt uIsAsgPt wCombPt e u w∀ (c : eprExp.Map A), IsEltPt cClPt c∃ (l : eprExp.Map A), IsEltPt l InClPt c l LitTruePt ρ l w
                                                              Dependency graph

                                                              The points a model is made of #

                                                              The point a function is: its graph.

                                                              Equations
                                                              Instances For
                                                                Dependency graph
                                                                Dependency graph
                                                                @[simp]
                                                                theorem DescriptiveComplexity.Epr.memPt_funPt {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (f : AA) (x y : A) :
                                                                MemPt (funPt f) (eltPt x) (eltPt y) f x = y
                                                                Dependency graph
                                                                Dependency graph
                                                                Dependency graph
                                                                theorem DescriptiveComplexity.Epr.exists_funPt {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] {w : eprExp.Map A} (hw : IsAsgPt w) (ht : TotalPt w) (hf : FuncPt w) :
                                                                ∃ (f : AA), w = funPt f

                                                                A total functional assignment is the graph of a function.

                                                                Dependency graph

                                                                The agreement #

                                                                Well-formedness read at the points is well-formedness.

                                                                Dependency graph

                                                                The guess a model is: a symbol holds of an assignment when the interpretation holds of a function the assignment agrees with on the signature positions.

                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For
                                                                  Dependency graph
                                                                  theorem DescriptiveComplexity.Epr.modelGuess_funPt {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] {I : A(AA)Prop} (hlocal : Local I) (x : A) (f : AA) :
                                                                  Dependency graph

                                                                  The environment two assignments make, as a point.

                                                                  Dependency graph
                                                                  theorem DescriptiveComplexity.Epr.selfModel_iff_kernel {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] :
                                                                  SelfModel A ∃ (ρ : ivBlock.Assignment (eprExp.Map A)), LocalPt ρ ∃ (e : eprExp.Map A), (IsAsgPt e TotalPt e FuncPt e) ∀ (u w : eprExp.Map A), IsAsgPt uTotalPt uFuncPt uIsAsgPt wCombPt e u w∀ (c : eprExp.Map A), IsEltPt cClPt c∃ (l : eprExp.Map A), IsEltPt l InClPt c l LitTruePt ρ l w

                                                                  A model on the instance is a guess the kernel accepts, and back.

                                                                  Dependency graph

                                                                  The membership #

                                                                  Dependency graph

                                                                  EPR is in NEXPTIME. The expansion's points are the relations on the instance, so an assignment of the universal variables is one of them and the that makes the problem exponential is first-order there; what is guessed is one relation between the symbols and the assignments, which is one Σ₁ block.

                                                                  Dependency graph