Basic theorems about literals and variables.
Equations
Instances For
instance
Trestle.LitVar.instCoeHeadPropForm
{L : Type u}
{ν : Type v}
[LitVar L ν]
:
CoeHead L (Model.PropForm ν)
Equations
Equations
Instances For
instance
Trestle.LitVar.instCoeHeadPropFun
{L : Type u}
{ν : Type v}
[LitVar L ν]
:
CoeHead L (Model.PropFun ν)
Equations
@[simp]
@[simp]
theorem
Trestle.LitVar.vars_toPropForm
{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)
:
@[simp]
theorem
Trestle.LitVar.polarity_mkLit
{L : Type u}
{ν : Type v}
[LitVar L ν]
[LawfulLitVar L ν]
(x : ν)
(p : Bool)
:
@[simp]
@[simp]
theorem
Trestle.LitVar.mkPos_ne_mkNeg
{L : Type u}
{ν : Type v}
[LitVar L ν]
[LawfulLitVar L ν]
{v₁ v₂ : ν}
:
@[simp]
theorem
Trestle.LitVar.mkNeg_ne_mkPos
{L : Type u}
{ν : Type v}
[LitVar L ν]
[LawfulLitVar L ν]
{v₁ v₂ : ν}
:
@[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]
@[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.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 l → l = 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}
:
theorem
Trestle.LitVar.toPropFun.inj
{L : Type u}
{ν : Type v}
[LitVar L ν]
[LawfulLitVar L ν]
[DecidableEq ν]
:
@[simp]
theorem
Trestle.LitVar.toPropFun_lit_eq_lit_iff
{L : Type u}
{ν : Type v}
[LitVar L ν]
[LawfulLitVar L ν]
[DecidableEq ν]
{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 : V → V')
(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 : V → V')
(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)