Documentation

Trestle.Data.LitVar.Basic

Basic theorems about literals and variables.

theorem Trestle.LitVar.satisfies_iff {L : Type u} {ν : Type v} [LitVar L ν] {τ : Model.PropAssignment ν} {l : L} :
@[simp]
theorem Trestle.LitVar.toPropFun_lit_ne_bot {L : Type u} {ν : Type v} [LitVar L ν] (l : L) :
@[simp]
theorem Trestle.LitVar.bot_ne_toPropFun_lit {L : Type u} {ν : Type v} [LitVar L ν] (l : L) :
@[simp]
theorem Trestle.LitVar.toPropFun_lit_ne_top {L : Type u} {ν : Type v} [LitVar L ν] (l : L) :
@[simp]
theorem Trestle.LitVar.top_ne_toPropFun_lit {L : Type u} {ν : Type v} [LitVar L ν] (l : L) :
@[simp]
theorem Trestle.LitVar.mk_toPropForm {L : Type u} {ν : Type v} [LitVar L ν] (l : L) :
@[simp]
theorem Trestle.LitVar.vars_toPropForm {L : Type u} {ν : Type v} [LitVar L ν] [DecidableEq ν] (l : L) :
@[simp]
theorem Trestle.LitVar.semVars_toPropFun {L : Type u} {ν : Type v} [LitVar L ν] [DecidableEq ν] (l : L) :
@[simp]
theorem Trestle.LitVar.var_mkLit {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) (p : Bool) :
toVar (mkLit L x p) = x
@[simp]
theorem Trestle.LitVar.polarity_mkLit {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) (p : Bool) :
polarity (mkLit L x p) = p
@[simp]
theorem Trestle.LitVar.eta {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
mkLit L (toVar l) (polarity l) = l
@[simp]
theorem Trestle.LitVar.eta_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
(mkLit L (toVar l) !polarity l) = -l
theorem Trestle.LitVar.mkPos_or_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
l = mkPos (toVar l) l = mkNeg (toVar l)
theorem Trestle.LitVar.exists_mkPos_or_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
∃ (v : ν), l = mkPos v l = mkNeg v
@[simp]
theorem Trestle.LitVar.mkPos_ne_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {v₁ v₂ : ν} :
mkPos v₁ mkNeg v₂
@[simp]
theorem Trestle.LitVar.mkNeg_ne_mkPos {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {v₁ v₂ : ν} :
mkNeg v₁ mkPos v₂
@[simp]
theorem Trestle.LitVar.mkPos_inj {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {x y : ν} :
mkPos x = mkPos y x = y
@[simp]
theorem Trestle.LitVar.mkNeg_inj {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {x y : ν} :
mkNeg x = mkNeg y x = y
@[simp]
theorem Trestle.LitVar.toPropForm_mkPos {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
@[simp]
theorem Trestle.LitVar.toPropForm_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
@[simp]
theorem Trestle.LitVar.toPropFun_mkPos {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
@[simp]
theorem Trestle.LitVar.toPropFun_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
@[simp]
theorem Trestle.LitVar.toPropFun_mkLit_true {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {v : ν} :
@[simp]
theorem Trestle.LitVar.toPropFun_mkLit_false {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {v : ν} :
@[simp]
theorem Trestle.LitVar.toPropFun_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
theorem Trestle.LitVar.ext_iff {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l1 l2 : L) :
l1 = l2 toVar l1 = toVar l2 polarity l1 = polarity l2
@[simp]
theorem Trestle.LitVar.neg_eq_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l1 l2 : L) :
-l1 = -l2 l1 = l2
@[simp]
theorem Trestle.LitVar.neg_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (l : L) :
- -l = l
@[simp]
theorem Trestle.LitVar.neg_mkPos {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
@[simp]
theorem Trestle.LitVar.neg_mkNeg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] (x : ν) :
theorem Trestle.LitVar.neg_eq_iff_eq_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {x y : L} :
-x = y x = -y
theorem Trestle.LitVar.toVar_eq_iff {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {l₁ l₂ : L} :
toVar l₁ = toVar l₂ l₁ = l₂ l₁ = -l₂
theorem Trestle.LitVar.toVar_eq_iff' {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {l₁ l₂ : L} :
toVar l₁ = toVar l₂ l₁ = l₂ -l₁ = l₂
theorem Trestle.LitVar.satisfies_neg {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] {τ : Model.PropAssignment ν} {l : L} :
τ toPropFun (-l) (fun (M : Model.PropAssignment ν) (φ : Model.PropFun ν) => ¬M φ) τ (toPropFun l)
theorem Trestle.LitVar.satisfies_set {L : Type u} {ν : Type v} [LitVar L ν] [DecidableEq ν] (τ : Model.PropAssignment ν) (l : L) :
theorem Trestle.LitVar.eq_of_flip {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] [DecidableEq ν] {τ : Model.PropAssignment ν} {l : L} {x : ν} {p : Bool} :
(fun (M : Model.PropAssignment ν) (φ : Model.PropFun ν) => ¬M φ) τ (toPropFun l)τ.set x p toPropFun ll = mkLit L x p
theorem Trestle.LitVar.eq_of_flip' {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] [DecidableEq ν] {τ : Model.PropAssignment ν} {l : L} {x : ν} {p : Bool} :
τ toPropFun l(fun (M : Model.PropAssignment ν) (φ : Model.PropFun ν) => ¬M φ) (τ.set x p) (toPropFun l)l = mkLit L x !p
@[simp]
theorem Trestle.LitVar.toPropFun_lit_eq_lit_iff {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] [DecidableEq ν] {l₁ l₂ : L} :
toPropFun l₁ = toPropFun l₂ l₁ = l₂
@[simp]
theorem Trestle.LitVar.toPropFun_lit_eq_var_iff {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] [DecidableEq ν] (l : L) (v : ν) :
@[simp]
theorem Trestle.LitVar.var_eq_toPropFun_iff {L : Type u} {ν : Type v} [LitVar L ν] [LawfulLitVar L ν] [DecidableEq ν] (l : L) (v : ν) :

map #

@[simp]
theorem Trestle.LitVar.satisfies_map {L : Type u} {V : Type u_1} {L' : Type u_2} {V' : Type u_3} [LitVar L V] [LitVar L' V'] [LawfulLitVar L' V'] (f : VV') (l : L) (τ : Model.PropAssignment V') :
@[simp]
theorem Trestle.LitVar.toPropFun_map {L : Type u} {V : Type u_1} {L' : Type u_2} {V' : Type u_3} [LitVar L V] [LitVar L' V'] [LawfulLitVar L' V'] (f : VV') (l : L) :

Sums as valid literals #

instance Trestle.LitVar.instLawfulLitVarSum {L1 : Type u_1} {V1 : Type u_2} {L2 : Type u_3} {V2 : Type u_4} [LitVar L1 V1] [LitVar L2 V2] [LawfulLitVar L1 V1] [LawfulLitVar L2 V2] :
LawfulLitVar (L1 L2) (V1 V2)
@[simp]
theorem Trestle.LitVar.polarity_inl {L1 : Type u_2} {V1 : Type u_4} {L2 : Type u_1} {V2 : Type u_3} [LitVar L1 V1] [LitVar L2 V2] (l : L1) :
@[simp]
theorem Trestle.LitVar.polarity_inr {L1 : Type u_2} {V1 : Type u_4} {L2 : Type u_1} {V2 : Type u_3} [LitVar L1 V1] [LitVar L2 V2] (l : L2) :
@[simp]
theorem Trestle.LitVar.toVar_inl {L1 : Type u_4} {V1 : Type u_1} {L2 : Type u_3} {V2 : Type u_2} [LitVar L1 V1] [LitVar L2 V2] (l : L1) :
@[simp]
theorem Trestle.LitVar.toVar_inr {L1 : Type u_4} {V1 : Type u_1} {L2 : Type u_3} {V2 : Type u_2} [LitVar L1 V1] [LitVar L2 V2] (l : L2) :