Documentation

DescriptiveComplexity.Problems.Steiner.Membership

Steiner Tree is existential second-order definable #

The membership half of its NP-completeness (DescriptiveComplexity.steinerTree_sigmaSODefinable). The existential block guesses four relations – the chosen set, a root, a strict partial order certifying connectivity, and an injection of the chosen non-terminals into the marked set – and the first-order kernel checks the eight conditions of DescriptiveComplexity.steinerOn_iff_certificate.

The interesting one is connectivity, which is a transitive-closure condition and hence not first-order. What is guessed instead is a root – as a relation constrained to hold of at most one element, since the empty set is connected and has no root – together with an order in which every other chosen vertex has a chosen neighbour strictly below it. Walking down the order reaches the root; that is the same certificate idea as for acyclicity in DescriptiveComplexity.Problems.Feedback, run in the opposite direction.

The four relation variables guessed by the Σ₁ definition of Steiner Tree.

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

    The single existential block of the Σ₁ definition of Steiner Tree.

    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
      @[reducible, inline]

      The adjacency symbol in the kernel's vocabulary.

      Equations
      Instances For
        Dependency graph
        @[reducible, inline]

        The terminal symbol in the kernel's vocabulary.

        Equations
        Instances For
          Dependency graph
          @[reducible, inline]

          The mark symbol in the kernel's vocabulary.

          Equations
          Instances For
            Dependency graph
            @[reducible, inline]

            The chosen-set symbol in the kernel's vocabulary.

            Equations
            Instances For
              Dependency graph
              @[reducible, inline]

              The root symbol in the kernel's vocabulary.

              Equations
              Instances For
                Dependency graph
                @[reducible, inline]

                The order symbol in the kernel's vocabulary.

                Equations
                Instances For
                  Dependency graph
                  @[reducible, inline]

                  The injection symbol in the kernel's vocabulary.

                  Equations
                  Instances For
                    Dependency graph

                    The clauses #

                    The first-order kernel of the Σ₁ definition of Steiner Tree.

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

                      Realization #

                      Steiner Tree is Σ₁-definable: guess the chosen set, its root, an order certifying that it is connected, and an injection of its non-terminals into the marked set, then check the eight conditions first-order.

                      Dependency graph

                      The edge-weighted variant #

                      The same certificate, plus the edge set itself, and with the threshold injection mapping pairs to elements – hence a ternary relation variable, for which DescriptiveComplexity.realize_rel₃ (DescriptiveComplexity.Interpretation) plays the role Mathlib's Formula.realize_rel₁/ play at lower arity.

                      The five relation variables guessed by the Σ₁ definition of the edge-weighted Steiner tree.

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

                        The single existential block of the Σ₁ definition of the edge-weighted Steiner tree.

                        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
                          @[reducible, inline]

                          The adjacency symbol in the edge-weighted kernel's vocabulary.

                          Equations
                          Instances For
                            Dependency graph
                            @[reducible, inline]

                            The terminal symbol in the edge-weighted kernel's vocabulary.

                            Equations
                            Instances For
                              Dependency graph
                              @[reducible, inline]

                              The mark symbol in the edge-weighted kernel's vocabulary.

                              Equations
                              Instances For
                                Dependency graph
                                @[reducible, inline]

                                The edge-set symbol in the edge-weighted kernel's vocabulary.

                                Equations
                                Instances For
                                  Dependency graph
                                  @[reducible, inline]

                                  The chosen-set symbol in the edge-weighted kernel's vocabulary.

                                  Equations
                                  Instances For
                                    Dependency graph
                                    @[reducible, inline]

                                    The root symbol in the edge-weighted kernel's vocabulary.

                                    Equations
                                    Instances For
                                      Dependency graph
                                      @[reducible, inline]

                                      The order symbol in the edge-weighted kernel's vocabulary.

                                      Equations
                                      Instances For
                                        Dependency graph
                                        @[reducible, inline]

                                        The injection symbol in the edge-weighted kernel's vocabulary.

                                        Equations
                                        Instances For
                                          Dependency graph

                                          The first-order kernel of the Σ₁ definition of the edge-weighted Steiner tree.

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

                                            The edge-weighted Steiner Tree is Σ₁-definable: guess the edge set, the vertices it spans, a root, an order certifying connectivity, and an injection of the chosen edges into the marked set.

                                            Dependency graph