Documentation

DescriptiveComplexity.Problems.Game.Hardness

HORN-SAT to GAME: unit propagation is a game #

The hardness half of DescriptiveComplexity.GAME. The AND/OR graph drawn inside a Language.sat-instance is unit propagation read as a game:

So the existential player wins exactly when some goal clause has all its negative literals forced, which on a Horn formula is exactly unsatisfiability (DescriptiveComplexity.exists_goalClause in one direction, DescriptiveComplexity.forced_subset_model in the other).

Reducing from the complement #

The game computes a least fixed point, so what it decides is Horn unsatisfiability; a game deciding satisfiability would have to negate the propagation. That costs nothing, since polynomial time is closed under complement (DescriptiveComplexity.piP_zero_eq), and the last step is the same one DescriptiveComplexity.Problems.Cvp.Hardness takes.

The non-Horn escape #

DescriptiveComplexity.HORNSAT folds the promise “at most one positive literal per clause” into its yes-instances, so its complement holds outright on an instance that is not Horn. The interpretation therefore marks every node both start and won when the instance fails the promise (DescriptiveComplexity.GameHard.nonHornG, a sentence, hence available to every defining formula), which makes such an instance a yes-instance of GAME with no propagation at all.

@[reducible, inline]

The ordered expansion of the vocabulary of CNF formulas.

Equations
Instances For
    Dependency graph
    @[reducible, inline]

    The clause symbol in the ordered expansion.

    Equations
    Instances For
      Dependency graph
      @[reducible, inline]

      The positive-occurrence symbol in the ordered expansion.

      Equations
      Instances For
        Dependency graph
        @[reducible, inline]

        The negative-occurrence symbol in the ordered expansion.

        Equations
        Instances For
          Dependency graph

          The two sorts of node the interpretation draws.

          • var : GTag

            A propositional variable.

          • cl : GTag

            A clause.

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

            The guards #

            Dependency graph
            noncomputable def DescriptiveComplexity.GameHard.posInG {γ : Type} (c x : γ) :

            x occurs positively in the clause c, as a guard.

            Equations
            Instances For
              Dependency graph
              noncomputable def DescriptiveComplexity.GameHard.negInG {γ : Type} (c x : γ) :

              x occurs negatively in the clause c, as a guard.

              Equations
              Instances For
                Dependency graph

                The instance is not Horn: some clause has two distinct positive literals. A sentence, so every defining formula may use it.

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

                  The interpretation #

                  The AND/OR graph of unit propagation: variables are existential nodes, clauses universal ones, a clause with no negative literal wins outright, and the goal clauses are the marked starts.

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

                    The points #

                    The node of a propositional variable.

                    Equations
                    Instances For
                      Dependency graph
                      Dependency graph

                      Reading the drawn graph #

                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph
                      Dependency graph

                      Winning is being forced #

                      What winning says at each of the two sorts of node.

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

                        The game is won exactly on the no-instances #

                        GAME is PTIME-hard: every SO-Horn definable problem reduces to it. The route is the Horn discharge applied to the complement of the problem, complemented back – which is available because polynomial time is closed under complement.

                        Dependency graph

                        GAME is PTIME-complete. Membership is DescriptiveComplexity.game_mem_PTIME, the least fixed point with its scan of the order; hardness is unit propagation read as a game. Registered in the Lax archive as Lax535992.GamePTIMEComplete.game_PTIME_complete.

                        Dependency graph