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
x occurs positively in c.
Equations
Instances For
x occurs negatively in c.
Equations
Instances For
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
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
Bridge from the Satisfiable form of clause satisfaction to the
occurrence form.
Strict lexicographic order on occurrence positions: variable first, then
sign (with false < true).
Instances For
(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
(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
(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
(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
If (x, s) is both the first and last occurrence of c, it is the only
one.
Occurrences up to the immediate predecessor (y, t) of (x, s) are
exactly the occurrences strictly before (x, s).
The successor of a given occurrence is unique.
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
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
A clause with an occurrence has a first occurrence.
A clause with an occurrence has a last occurrence.
A non-first occurrence has an immediate predecessor.
An occurrence with a later occurrence has an immediate successor.