Documentation

Std.Sat.CNF.Basic

@[reducible, inline]
abbrev Std.Sat.CNF.Clause (α : Type u) :

A clause in a CNF.

The literal (i, b) is satisfied if the assignment to i agrees with b.

Equations
Instances For
    structure Std.Sat.CNF (α : Type u) :

    A CNF formula.

    Literals are identified by members of α.

    Instances For
      def Std.Sat.CNF.Clause.eval {α : Type u_1} (a : αBool) (c : Clause α) :

      Evaluating a Clause with respect to an assignment a.

      Equations
      Instances For
        @[simp]
        theorem Std.Sat.CNF.Clause.eval_nil {α : Type u_1} (a : αBool) :
        @[simp]
        theorem Std.Sat.CNF.Clause.eval_cons {α : Type u_1} {i : Literal α} {c : List (Literal α)} (a : αBool) :
        eval a (i :: c) = (a i.fst == i.snd || eval a c)
        def Std.Sat.CNF.eval {α : Type u_1} (a : αBool) (f : CNF α) :

        Evaluating a CNF formula with respect to an assignment a.

        Equations
        Instances For
          @[inline]
          def Std.Sat.CNF.empty {α : Type u_1} :
          CNF α
          Equations
          Instances For
            @[inline]
            def Std.Sat.CNF.emptyWithCapacity {α : Type u_1} (n : Nat) :
            CNF α
            Equations
            Instances For
              @[inline]
              def Std.Sat.CNF.add {α : Type u_1} (c : Clause α) (f : CNF α) :
              CNF α
              Equations
              Instances For
                @[inline]
                def Std.Sat.CNF.append {α : Type u_1} (f1 f2 : CNF α) :
                CNF α
                Equations
                Instances For
                  @[implicit_reducible]
                  instance Std.Sat.CNF.instAppend {α : Type u_1} :
                  Append (CNF α)
                  Equations
                  @[simp]
                  theorem Std.Sat.CNF.eval_empty {α : Type u_1} (a : αBool) :
                  @[simp]
                  theorem Std.Sat.CNF.eval_add {α : Type u_1} {f : CNF α} {c : Clause α} (a : αBool) :
                  eval a (add c f) = (Clause.eval a c && eval a f)
                  @[simp]
                  theorem Std.Sat.CNF.eval_append {α : Type u_1} (a : αBool) (f1 f2 : CNF α) :
                  eval a (f1 ++ f2) = (eval a f1 && eval a f2)
                  def Std.Sat.CNF.Sat {α : Type u_1} (a : αBool) (f : CNF α) :
                  Equations
                  Instances For
                    def Std.Sat.CNF.Unsat {α : Type u_1} (f : CNF α) :
                    Equations
                    Instances For
                      theorem Std.Sat.CNF.sat_def {α : Type u_1} (a : αBool) (f : CNF α) :
                      Sat a f eval a f = true
                      theorem Std.Sat.CNF.unsat_def {α : Type u_1} (f : CNF α) :
                      f.Unsat ∀ (a : αBool), eval a f = false
                      @[simp]
                      theorem Std.Sat.CNF.sat_empty {α : Type u_1} {assign : αBool} :
                      Sat assign empty
                      @[simp]
                      theorem Std.Sat.CNF.unsat_add_nil {α : Type u_1} {g : CNF α} :
                      def Std.Sat.CNF.Clause.Mem {α : Type u_1} (v : α) (c : Clause α) :

                      Variable v occurs in Clause c.

                      Equations
                      Instances For
                        @[simp]
                        theorem Std.Sat.CNF.Clause.not_mem_nil {α : Type u_1} {v : α} :
                        @[simp]
                        theorem Std.Sat.CNF.Clause.mem_cons {α : Type u_1} {l : Literal α} {c : List (Literal α)} {v : α} :
                        Mem v (l :: c) v = l.fst Mem v c
                        theorem Std.Sat.CNF.Clause.mem_of {α✝ : Type u_1} {c : Clause α✝} {v : α✝} {p : Bool} (h : (v, p) c) :
                        Mem v c
                        theorem Std.Sat.CNF.Clause.eval_congr {α : Type u_1} (a1 a2 : αBool) (c : Clause α) (hw : ∀ (i : α), Mem i ca1 i = a2 i) :
                        eval a1 c = eval a2 c
                        def Std.Sat.CNF.Mem {α : Type u_1} (f : CNF α) (c : Clause α) :

                        Clause c occurs in CNF formula f.

                        Equations
                        Instances For
                          @[implicit_reducible]
                          Equations
                          def Std.Sat.CNF.VarMem {α : Type u_1} (v : α) (f : CNF α) :

                          Variable v occurs in CNF formula f.

                          Equations
                          Instances For
                            theorem Std.Sat.CNF.not_VarMem_empty {α : Type u_1} {v : α} :
                            theorem Std.Sat.CNF.VarMem_add {α : Type u_1} {v : α} {c : Clause α} {f : CNF α} :
                            VarMem v (add c f) Clause.Mem v c VarMem v f
                            theorem Std.Sat.CNF.VarMem_of {α✝ : Type u_1} {f : CNF α✝} {c : Clause α✝} {v : α✝} (h : c f) (w : Clause.Mem v c) :
                            VarMem v f
                            theorem Std.Sat.CNF.Internal.mem_iff {α : Type u_1} {c : Clause α} {f : CNF α} :
                            c f c f.clauses
                            theorem Std.Sat.CNF.Internal.clauses_append {α : Type u_1} {f1 f2 : CNF α} :
                            (f1 ++ f2).clauses = f1.clauses ++ f2.clauses
                            theorem Std.Sat.CNF.Internal.ext_iff {α : Type u_1} {f1 f2 : CNF α} :
                            f1 = f2 f1.clauses = f2.clauses
                            @[simp]
                            theorem Std.Sat.CNF.VarMem_append {α : Type u_1} {v : α} {f1 f2 : CNF α} :
                            VarMem v (f1 ++ f2) VarMem v f1 VarMem v f2
                            theorem Std.Sat.CNF.eval_congr {α : Type u_1} (a1 a2 : αBool) (f : CNF α) (hw : ∀ (v : α), VarMem v fa1 v = a2 v) :
                            eval a1 f = eval a2 f