pub struct NsCertificate { /* private fields */ }Expand description
A constructive Nullstellensatz certificate over the multilinear GF(2) ring: one coefficient
polynomial g_C per input clause such that Σ_C p_C · g_C = 1, where p_C = clause_polynomial(C) is the
clause’s false-indicator. The identity is a re-checkable proof of UNSAT — evaluate it at any assignment
a: the right side is 1, so some p_C(a) = 1, i.e. every assignment falsifies some clause. Where
nullstellensatz_refutes only decides whether such a certificate exists, this one carries the witness.
Implementations§
Source§impl NsCertificate
impl NsCertificate
Sourcepub fn degree(&self) -> usize
pub fn degree(&self) -> usize
The maximum monomial degree among the coefficient polynomials. Multilinear over num_vars
variables, so ≤ num_vars unconditionally — the content is not this (trivial for a multilinear
certificate) but that the certificate exists and is built by one uniform construction at every n.
Sourcepub fn verify(&self, clauses: &[Vec<Lit>]) -> bool
pub fn verify(&self, clauses: &[Vec<Lit>]) -> bool
Re-check against the original clauses (zero trust in the producer): recompute
Σ_C clause_polynomial(C) · g_C and confirm it is the constant 1 (the empty monomial). A true
verdict is an independent proof that clauses is unsatisfiable; it fails closed if the certificate’s
clause count does not match the formula it is checked against.
Trait Implementations§
Source§impl Clone for NsCertificate
impl Clone for NsCertificate
Source§fn clone(&self) -> NsCertificate
fn clone(&self) -> NsCertificate
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more