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
                  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
                      theorem DescriptiveComplexity.GameHard.pt_cases {A : Type} (p : gameInterp.Map A) :
                      (∃ (x : A), p = varPt x) ∃ (c : A), p = clPt c

                      Every node is a variable node or a clause node.

                      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

                        Soundness: a winning node is forced, and a winning clause node has all its negative literals forced.

                        Dependency graph

                        A clause node with all its negative literals winning is winning: the opponent's every challenge is answered, and a clause with nothing to challenge wins outright.

                        Dependency graph

                        Completeness: a forced variable wins.

                        Dependency graph
                        Dependency graph

                        The game is won exactly on the no-instances #

                        Dependency graph

                        The reduction is correct: the game is won exactly on the instances that are not yes-instances of HORN-SAT.

                        Dependency graph

                        The complement of HORN-SAT reduces to GAME: unit propagation, read as a game.

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

                          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.

                          Dependency graph