pub struct Reduction {
pub image: Vec<Lit>,
pub target_num_vars: usize,
}Expand description
A reduction ρ: F' → F — a sign-respecting variable→literal map. It acts on clauses, on
substitution witnesses (by conjugation ρσρ⁻¹), and hence on whole refutations. When ρ(F') ⊆ F
(the source embeds into the target), ρ carries any refutation of F' to one of F. This is the
morphism along which the transfer functor moves collapses between problems.
Fields§
§image: Vec<Lit>image[v] = ρ(+v), a literal over the target’s variables.
target_num_vars: usizeImplementations§
Source§impl Reduction
impl Reduction
Sourcepub fn is_bijective(&self) -> bool
pub fn is_bijective(&self) -> bool
Is ρ an isomorphism (a bijective, sign-respecting variable renaming)? Such reductions are
the invertible 1-morphisms — they make problems-and-reductions a groupoid.
Sourcepub fn compose(&self, other: &Reduction) -> Reduction
pub fn compose(&self, other: &Reduction) -> Reduction
Composition self ∘ other (apply other then self).
Sourcepub fn is_identity(&self) -> bool
pub fn is_identity(&self) -> bool
Is ρ the identity reduction?
Sourcepub fn is_loop_at(&self, formula: &[Vec<Lit>]) -> bool
pub fn is_loop_at(&self, formula: &[Vec<Lit>]) -> bool
Is ρ a loop at F — an isomorphism F → F carrying the clause set onto itself? A loop is
exactly an automorphism of F. The loops at F are π₁(F) of the groupoid, and they form
the symmetry group of F.