0-1 integer programming is in NP #
The certificate guesses the 0-1 vector and, for each row, a ripple-carry
walk along the columns:
x j, the columns set to1;ps r j p, the bits of the running total of the rowrover the chosen columns up toj;cy r j p, the carries of the step appendingjto that total,
and the kernel asks that each row's walk be a ripple-carry addition ending on
that row's right-hand side. It is Knapsack's certificate
(DescriptiveComplexity.Problems.Knapsack.Membership) with a row argument
threaded through the two arithmetic relations and a guard row r in front of
every clause: the rows do not interact, so the walks are independent and the
semantic work is DescriptiveComplexity.chain_sound and
DescriptiveComplexity.exists_chain (DescriptiveComplexity.Problems.Knapsack.Chain)
applied once per row – the reason those two are stated over an arbitrary walk
order and item predicate rather than over one vocabulary.
Unlike Partition, the walks run on the instance's own positions: each row's total is its right-hand side, which is written there, so it fits.
The single existential block of the Σ₁ definition of 0-1 integer
programming: the columns set to 1 (unary), and the running partial sums and
the carries (ternary: a row, a column and a bit position).
Equations
Instances For
Dependency graph
The symbol of the chosen-columns relation variable.
Instances For
Dependency graph
The symbol of the partial-sum relation variable.
Instances For
Dependency graph
The symbol of the carry relation variable.
Instances For
Dependency graph
The vocabulary of the kernel.
Equations
Instances For
Dependency graph
The column symbol in the kernel's vocabulary.
Instances For
Dependency graph
The row symbol in the kernel's vocabulary.
Instances For
Dependency graph
The position symbol in the kernel's vocabulary.
Instances For
Dependency graph
The entry symbol in the kernel's vocabulary.
Instances For
Dependency graph
The right-hand-side symbol in the kernel's vocabulary.
Instances For
Dependency graph
The order symbol in the kernel's vocabulary.
Instances For
Dependency graph
The chosen-columns symbol in the kernel's vocabulary.
Instances For
Dependency graph
The partial-sum symbol in the kernel's vocabulary.
Instances For
Dependency graph
The carry symbol in the kernel's vocabulary.
Instances For
Dependency graph
Formula builders #
x is a column, as a formula.
Equations
Instances For
Dependency graph
x is a row, as a formula.
Equations
Instances For
Dependency graph
x is a bit position, as a formula.
Equations
Instances For
Dependency graph
The entry of the row r in the column j has bit 1 at p, as a
formula.
Equations
Instances For
Dependency graph
The right-hand side of the row r has bit 1 at p, as a formula.
Equations
Instances For
Dependency graph
x ≤ y, as a formula.
Equations
Instances For
Dependency graph
x = y, as a formula.
Equations
Instances For
Dependency graph
The column x is set to 1, as a formula.
Equations
Instances For
Dependency graph
Bit p of the running total of the row r at the column j, as a
formula.
Equations
Instances For
Dependency graph
The carry at p of the step appending the column j to the total of the
row r, as a formula.
Equations
Instances For
Dependency graph
The bit that the column j contributes to the row r at p: the entry's
bit, if the column is set to 1.
Equations
Instances For
Dependency graph
The exclusive or of three formulas, as x ↔ (y ↔ z).
Equations
- DescriptiveComplexity.zoXor3F x y z = x.iff (y.iff z)
Instances For
Dependency graph
The majority of three formulas.
Equations
- DescriptiveComplexity.zoMaj3F x y z = x ⊓ y ⊔ (x ⊓ z ⊔ y ⊓ z)
Instances For
Dependency graph
j is the first column, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
j is the last column, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
j is the column right after i, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
p is the lowest position, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
p is the highest position, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
q is the position right above p, as a formula.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
The clauses #
Every clause of a walk is guarded by row r: the rows do not interact, so the
kernel is Knapsack's read once per row.
The first-order kernel of the Σ₁ definition of 0-1 integer
programming.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Dependency graph
Realization #
The columns set to 1, read off an assignment of the block.
Equations
- DescriptiveComplexity.ZX ρ j = ρ none ![j]
Instances For
Dependency graph
The running total of a row, read off an assignment of the block.
Instances For
Dependency graph
The carries of a row, read off an assignment of the block.
Instances For
Dependency graph
Membership #
0-1 integer programming is Σ₁-definable: guess the 0-1 vector and,
for each row, the running totals and the carries of a ripple-carry addition,
and check first-order that every row's walk ends on that row's right-hand
side. Since NP is defined as Σ₁-definability, this is the membership half of
the NP-completeness of 0-1 integer programming.