Not-all-equal semantics #
CNF.evalNAE requires a true and a false literal in every clause, using the existing signed
CNF representation. Empty and singleton clauses are false; the empty formula is true.
Main definitions #
CNF.evalNAE,CNF.NAESatisfiable: not-all-equal evaluation and satisfiability.
Main results #
CNF.evalNAE_complement: complementing all variables preserves evaluation.CNF.naeSatisfiable_relabel: injective variable renaming preserves satisfiability.
Some assignment makes every clause not all equal.
Instances For
theorem Cslib.Logic.PL.CNF.naeSatisfiable_relabel {V : Type u_1} {W : Type u_2} {f : V → W} (hf : Function.Injective f) (φ : CNF V) :
Injective renaming preserves not-all-equal satisfiability.
An exact-one triple is encoded by four not-all-equal triples and a true reference literal.
Instances For
theorem Cslib.Logic.PL.Clause.eval_oneNAEEncoding {V : Type u_1} (σ : V → Bool) (t a b c : Literal V) (ht : Literal.eval σ t = true) :
With a true reference literal, the four NAE clauses express exactly one true position.