@[reducible, inline]
A clause in a CNF.
The literal (i, b) is satisfied if the assignment to i agrees with b.
Equations
Instances For
Evaluating a Clause with respect to an assignment a.
Equations
- Std.Sat.CNF.Clause.eval a c = List.any c fun (x : Std.Sat.Literal α) => match x with | (i, n) => a i == n
Instances For
Evaluating a CNF formula with respect to an assignment a.
Equations
- Std.Sat.CNF.eval a f = f.clauses.all fun (c : Std.Sat.CNF.Clause α) => Std.Sat.CNF.Clause.eval a c
Instances For
@[inline]
Instances For
@[inline]
Equations
- Std.Sat.CNF.emptyWithCapacity n = { clauses := Array.emptyWithCapacity n }
Instances For
@[implicit_reducible]
Equations
- Std.Sat.CNF.instAppend = { append := Std.Sat.CNF.append }
Equations
- Std.Sat.CNF.Sat a f = (Std.Sat.CNF.eval a f = true)
Instances For
@[implicit_reducible]
Equations
@[implicit_reducible]
instance
Std.Sat.CNF.instDecidableMemClauseOfDecidableEq
{α : Type u_1}
{c : Clause α}
{f : CNF α}
[DecidableEq α]
:
Equations
Variable v occurs in CNF formula f.
Equations
- Std.Sat.CNF.VarMem v f = ∃ (c : Std.Sat.CNF.Clause α), c ∈ f.clauses ∧ Std.Sat.CNF.Clause.Mem v c
Instances For
@[implicit_reducible]
instance
Std.Sat.CNF.instDecidableVarMemOfDecidableEq
{α : Type u_1}
{v : α}
{f : CNF α}
[DecidableEq α]
:
Equations
@[implicit_reducible]
instance
Std.Sat.CNF.instDecidableExistsVarMemOfDecidableEq
{α : Type u_1}
{f : CNF α}
[DecidableEq α]
:
Equations
- Std.Sat.CNF.instDecidableExistsVarMemOfDecidableEq = decidable_of_iff ((f.clauses.any fun (c : Std.Sat.CNF.Clause α) => !List.isEmpty c) = true) ⋯
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
@[simp]