Literal occurrences of a CNF structure, ordered #
Semantic layer shared by the reductions from SAT (to 3-colorability, to
3SAT…): literal occurrences of a Language.sat-structure, their traversal
along a linear order of the universe, and the truth of literals and of prefix
disjunctions under an assignment.
An occurrence of a clause c is a pair (x, s) with x an element and
s : Bool a sign, such that x occurs in c with sign s (OccIn).
Occurrences are ordered lexicographically (variable first, then sign,
false < true): occLt. On a finite universe every clause with at least one
occurrence has a first (MinOcc) and last (MaxOcc) occurrence, and every
occurrence that is not first has an immediate predecessor (SuccOcc,
exists_succOcc), which is unique in both directions. These are the facts
needed to thread a gadget chain (an OR-gadget chain for 3-colorability, a
clause-splitting chain for 3SAT) along the occurrences of each clause.
For chain-correctness arguments, LitTrue states that a literal is true under
an assignment, and PrefixOr/PrefixOrStrict state that some occurrence of a
clause up to (resp. strictly before) a given position is true; the lemmas
relating them to MinOcc/MaxOcc/SuccOcc implement the usual invariant of
chain constructions.
Everything in this file is first-order definable over
Language.sat.sum Language.order; the corresponding formulas and their
realization lemmas are in DescriptiveComplexity.OccurrenceFormulas.
c is a clause.
Equations
Instances For
Dependency graph
x occurs positively in c.
Equations
Instances For
Dependency graph
x occurs negatively in c.
Equations
Instances For
Dependency graph
The literal (x, s) occurs in the clause c (s = true for a positive
occurrence). Occurrences are restricted to actual clauses, so that stray
posIn/negIn facts on non-clause elements do not create gadgets.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
c is a clause with no literal: an unsatisfiable clause.
Equations
- DescriptiveComplexity.SatOcc.EmptyCl c = (DescriptiveComplexity.SatOcc.IsCl c ∧ ∀ (x : A) (s : Bool), ¬DescriptiveComplexity.SatOcc.OccIn c x s)
Instances For
Dependency graph
The literal (x, s) is true under the assignment ν.
Instances For
Dependency graph
Dependency graph
Strict lexicographic order on occurrence positions: variable first, then
sign (with false < true).
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Dependency graph
(x, s) is the first occurrence of the clause c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(x, s) is the last occurrence of the clause c.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(x, s) is an occurrence of c immediately preceded by the occurrence
(y, t).
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
(x, s) is an occurrence of c that is not the first one: an OR-gate of
the chain of c sits on it.
Equations
Instances For
Dependency graph
Dependency graph
Dependency graph
Dependency graph
Truth of prefix disjunctions #
Some occurrence of c strictly before (x, s) is true under ν.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Some occurrence of c up to (x, s) (inclusive) is true under ν.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
A non-first occurrence has an immediate predecessor.