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
                                      @[simp]
                                      theorem DescriptiveComplexity.Epr.memPt_iff {A : Type} [FirstOrder.Language.epr.Structure A] [LinearOrder A] (R : A → A → Prop) (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 u → TotalPt u → FuncPt u → IsAsgPt w → CombPt (v e) u w → ∀ (c : eprExp.Map A), IsEltPt c → ClPt 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
                                                              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 u → TotalPt u → FuncPt u → IsAsgPt w → CombPt e u w → ∀ (c : eprExp.Map A), IsEltPt c → ClPt 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 : A → A) (x y : A) :
                                                                MemPt (funPt f) (eltPt x) (eltPt y) ↔ f x = y
                                                                Dependency graph

                                                                The agreement #

                                                                The membership #

                                                                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