Skip to main content

nullstellensatz_refutes_symmetric

Function nullstellensatz_refutes_symmetric 

Source
pub fn nullstellensatz_refutes_symmetric(
    num_vars: usize,
    clauses: &[Vec<Lit>],
    degree: usize,
    generators: &[Perm],
) -> bool
Expand description

Symmetry-reduced Nullstellensatz — the algebraic refutation collapsed by the formula’s symmetry. Full degree-d NS asks whether 1 lies in the GF(2)-span of the generators m·p_C, a Gaussian over up to C(n,≤d) monomial columns. When the formula has a symmetry group G, summing each generator’s G-orbit gives an invariant generator, and every invariant polynomial is constant on the monomial orbits (monomial_orbits) — so the same span check runs over just #orbits columns and #generator-orbits rows. For a symmetric family that is the difference between 2^Θ(n) and O(1).

Sound: each row is an honest GF(2)-sum of NS generators, so 1 in the reduced span is 1 in the full span — a real refutation, hence UNSAT. Incomplete (a refutation need not be G-invariant), and fail-closed: if a passed generator is not a genuine symmetry (an orbit step leaves the generator set) it declines rather than reduce unsoundly. generators must be automorphisms of clauses.