Skip to main content

backdoor_branch_orbit_count

Function backdoor_branch_orbit_count 

Source
pub fn backdoor_branch_orbit_count(
    backdoor: &[usize],
    generators: &[Perm],
) -> u64
Expand description

Symmetry breaking for speed. Count the orbits of the 2^{|U|} backdoor branches (assignments to U) under the generators that preserve U setwise. A symmetry-aware solver inspects one branch per orbit instead of all 2^{|U|} — fewer poly-time solves for the same verdict. Generators that move U off itself do not act on the branches and are skipped; each kept generator induces a permutation-with-flips on the backdoor positions.