Clause sets, subcubes, isolation and the PPZ decoder -- definitions #
A clause set over N variables is a finite set of clauses, each a finite set of literals
(ClauseSet N). It is the set-based form of Complexity.CNF, used by the
satisfiability-coding lemma of Paturi, Pudlák and Zane and by the sparsification lemma of
Impagliazzo, Paturi and Zane. CNF.toClauseSet converts a CNF, preserving its semantics
(CNF.eval) and not increasing its width.
Main definitions #
ClauseSet.Sat,ClauseSet.solutions: satisfaction and the solution set.ClauseSet.toCNF,CNF.occurrences: a CNF listing the clauses of a clause set, and the number of clauses of a CNF that mention a variable.ClauseSet.occurrences,ClauseSet.neighbors: the number of clauses mentioning a variable, and the neighbours of a variable in the co-occurrence graph (two distinct variables are adjacent when some clause mentions both).BitString.flipOn x T: the pointx ⊕ e_T, flipping the coordinates inT.ContainsSubcube S d:Scontains a subcube{a ⊕ e_T : T ⊆ J}with|J| = d.isolatedDirections S x: the directionsiwithx ⊕ e_i ∉ S.ClauseSet.forced ψ σ x: for an orderσof the variables (a permutation: variablevis placed at positionσ v), the variables at which the first rule of the PPZ decoder fires on inputx: some clause has a literal onv, and all its other literals are on variables placed beforevand are false underx.ClauseSet.decode ψ σ y: the PPZ decoder. It processes the variables in the orderσ; atv, if the first rule fires on the values already decoded, it setsvto satisfy a forcing literal, and otherwise it copiesy v.
There are 2 N literals over N variables.
A clause set over N variables: a finite set of clauses, each a finite set of literals.
A clause is satisfied when one of its literals is true; a clause set when all its clauses
are.
Equations
Instances For
Equations
The solution set of a clause set.
Equations
Instances For
The neighbours of u in the co-occurrence graph of ψ: the variables w ≠ u such that some
clause of ψ mentions both u and w.
Instances For
The clause set of a CNF: each clause becomes the set of its literals.
Equations
Instances For
A CNF with the clauses of a clause set, listed in some order.
Equations
- ψ.toCNF = { clauses := List.map Finset.toList (Finset.toList ψ) }
Instances For
The number of clauses of a CNF (counted with multiplicity) that mention the variable v.
Equations
- φ.occurrences v = List.countP (fun (clause : List (Complexity.Literal N)) => decide (∃ l ∈ clause, l.var = v)) φ.clauses
Instances For
S contains a subcube of dimension d: some base point a and some set J of d
coordinates have a ⊕ e_T ∈ S for every T ⊆ J.
Equations
- Complexity.ContainsSubcube S d = ∃ (a : Complexity.BitString N) (J : Finset (Fin N)), J.card = d ∧ ∀ T ⊆ J, a.flipOn T ∈ S
Instances For
The variables forced on input x for the order σ: those at which the first rule of the
decoder fires when the earlier variables carry the values of x.
Equations
Instances For
The value the decoder gives to v on the partial assignment z with default bit b: the
polarity of a forcing literal if the first rule fires (true if some forcing literal is
positive), and b otherwise.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The decoder after processing the first p positions of σ: positions < p carry decoded
values and the others still carry the input y.
Equations
- One or more equations did not get rendered due to their size.
- ψ.decodeUpTo σ y 0 = y
Instances For
The PPZ decoder for the order σ, run on the input y.
Equations
- ψ.decode σ y = ψ.decodeUpTo σ y N