Skip to main content

fractional_automorphism

Function fractional_automorphism 

Source
pub fn fractional_automorphism(
    num_vars: usize,
    clauses: &[Vec<Lit>],
) -> Vec<usize>
Expand description

A fractional automorphism of a formula: a doubly-stochastic matrix B commuting with the variable co-occurrence matrix A (BA = AB) — the LP relaxation of an automorphism (a permutation matrix commuting with A). The canonical one is block-averaging over the coarsest equitable partition ([equitable_partition_of]): B[u][v] = 1/|cell(u)| if u,v share a cell, else 0. By Tinhofer’s theorem it commutes with A iff the partition is equitable, and it is non-trivial (not a permutation) exactly when the partition is non-discrete — i.e. exactly when the formula has non-trivial 1-WL symmetry.

Returns the partition cell[v]. Its non-discreteness certifies a fractional automorphism; the commutation BA = AB is checked exactly (over integers, by clearing the 1/|cell| denominators) by is_fractional_automorphism.