Documentation

Std.Sat.CNF.Relabel

def Std.Sat.CNF.Clause.relabel {α : Type u_1} {β : Type u_2} (r : α → β) (c : Std.Sat.CNF.Clause α) :

Change the literal type in a Clause from α to β by using r.

Equations
Instances For
    @[simp]
    theorem Std.Sat.CNF.Clause.eval_relabel {α : Type u_1} {β : Type u_2} {r : α → β} {a : β → Bool} {c : Std.Sat.CNF.Clause α} :
    theorem Std.Sat.CNF.Clause.relabel_congr {α : Type u_1} {β : Type u_2} {c : Std.Sat.CNF.Clause α} {r1 : α → β} {r2 : α → β} (hw : ∀ (v : α), Std.Sat.CNF.Clause.Mem v c → r1 v = r2 v) :
    @[simp]
    theorem Std.Sat.CNF.Clause.relabel_relabel' :
    ∀ {α : Type u_1} {α_1 : Type u_2} {r1 : α → α_1} {α_2 : Type u_3} {r2 : α_2 → α}, Std.Sat.CNF.Clause.relabel r1 ∘ Std.Sat.CNF.Clause.relabel r2 = Std.Sat.CNF.Clause.relabel (r1 ∘ r2)

    Relabelling #

    It is convenient to be able to construct a CNF using a more complicated literal type, but eventually we need to embed in Nat.

    def Std.Sat.CNF.relabel {α : Type u_1} {β : Type u_2} (r : α → β) (f : Std.Sat.CNF α) :

    Change the literal type in a CNF formula from α to β by using r.

    Equations
    Instances For
      @[simp]
      theorem Std.Sat.CNF.relabel_nil {α : Type u_1} {β : Type u_2} {r : α → β} :
      @[simp]
      theorem Std.Sat.CNF.relabel_cons {α : Type u_1} {β : Type u_2} {c : Std.Sat.CNF.Clause α} {f : List (Std.Sat.CNF.Clause α)} {r : α → β} :
      @[simp]
      theorem Std.Sat.CNF.eval_relabel {α : Type u_1} {β : Type u_2} (r : α → β) (a : β → Bool) (f : Std.Sat.CNF α) :
      @[simp]
      theorem Std.Sat.CNF.relabel_append :
      ∀ {α : Type u_1} {α_1 : Type u_2} {r : α → α_1} {f1 f2 : Std.Sat.CNF α}, Std.Sat.CNF.relabel r (f1 ++ f2) = Std.Sat.CNF.relabel r f1 ++ Std.Sat.CNF.relabel r f2
      @[simp]
      theorem Std.Sat.CNF.relabel_relabel :
      ∀ {α : Type u_1} {α_1 : Type u_2} {r1 : α → α_1} {α_2 : Type u_3} {r2 : α_2 → α} {f : Std.Sat.CNF α_2}, Std.Sat.CNF.relabel r1 (Std.Sat.CNF.relabel r2 f) = Std.Sat.CNF.relabel (r1 ∘ r2) f
      @[simp]
      theorem Std.Sat.CNF.relabel_id :
      ∀ {α : Type u_1} {x : Std.Sat.CNF α}, Std.Sat.CNF.relabel id x = x
      theorem Std.Sat.CNF.relabel_congr {α : Type u_1} {β : Type u_2} {f : Std.Sat.CNF α} {r1 : α → β} {r2 : α → β} (hw : ∀ (v : α), Std.Sat.CNF.Mem v f → r1 v = r2 v) :
      theorem Std.Sat.CNF.sat_relabel {α : Type u_1} :
      ∀ {β : Type u_2} {r1 : β → Bool} {r2 : α → β} {f : Std.Sat.CNF α}, Std.Sat.CNF.Sat (r1 ∘ r2) f → Std.Sat.CNF.Sat r1 (Std.Sat.CNF.relabel r2 f)
      theorem Std.Sat.CNF.unsat_relabel {α : Type u_1} {β : Type u_2} {f : Std.Sat.CNF α} (r : α → β) (h : f.Unsat) :
      theorem Std.Sat.CNF.nonempty_or_impossible {α : Type u_1} (f : Std.Sat.CNF α) :
      Nonempty α ∨ ∃ (n : Nat), f = List.replicate n []
      theorem Std.Sat.CNF.unsat_relabel_iff {α : Type u_1} {β : Type u_2} {f : Std.Sat.CNF α} {r : α → β} (hw : ∀ {v1 v2 : α}, Std.Sat.CNF.Mem v1 f → Std.Sat.CNF.Mem v2 f → r v1 = r v2 → v1 = v2) :
      (Std.Sat.CNF.relabel r f).Unsat ↔ f.Unsat