pub struct SymmetryProfile {Show 30 fields
pub order: u128,
pub generators: usize,
pub num_orbits: usize,
pub rank: usize,
pub transitivity: usize,
pub primitive: bool,
pub blocks: Option<usize>,
pub abelian: bool,
pub solvable: Option<bool>,
pub nilpotent: Option<bool>,
pub derived_length: Option<usize>,
pub nilpotency_class: Option<usize>,
pub derived_order: u128,
pub conjugacy_classes: Option<usize>,
pub center_order: Option<u128>,
pub exponent: Option<u128>,
pub assignment_orbits: Option<u128>,
pub abelianization: Option<(u128, u128)>,
pub subgroups: Option<usize>,
pub simple: Option<bool>,
pub composition_factors: Option<Vec<u128>>,
pub sylow: Option<Vec<(u128, usize)>>,
pub real_classes: Option<usize>,
pub rational_classes: Option<usize>,
pub irreducible_degrees: Option<Vec<u128>>,
pub frobenius_schur: Option<Vec<i8>>,
pub isotypic_multiplicities: Option<Vec<u128>>,
pub automorphism_order: Option<u128>,
pub outer_automorphism_order: Option<u128>,
pub coherent_rank: Option<usize>,
}Expand description
The structural profile of a formula’s variable-symmetry group — |Aut|, the orbit/rank/transitivity
ladder, primitivity, and block structure. The data a surfacing layer (e.g. a Studio panel) needs to
explain why an instance is symmetric.
Fields§
§order: u128|Aut| of the phase-free variable-symmetry group (1 when there is no symmetry).
generators: usizeNumber of detected generators.
num_orbits: usizeVariable orbits (points moved together).
rank: usizeRank — orbits on ordered pairs (2 iff 2-transitive); 0 when not computed (group too large).
transitivity: usizeTransitivity degree, capped (1 = transitive, 2 = 2-transitive, …).
primitive: boolWhether the (transitive) group is primitive.
blocks: Option<usize>The number of minimal blocks when the group is transitive and imprimitive, else None.
abelian: boolWhether the group is abelian.
solvable: Option<bool>Whether the group is solvable (its derived series reaches the trivial group); None when not
computed (group too large for the derived-series walk).
nilpotent: Option<bool>Whether the group is nilpotent (its lower central series reaches the trivial group); strictly
stronger than solvable. None when not computed.
derived_length: Option<usize>Derived length (solvability class) — the depth of the derived series; None if unsolvable / not
computed.
nilpotency_class: Option<usize>Nilpotency class — the depth of the lower central series; None if not nilpotent / not computed.
derived_order: u128Order of the derived (commutator) subgroup [G, G]; 0 when not computed.
conjugacy_classes: Option<usize>Number of conjugacy classes (= number of irreducible representations); None when the group is too
large to enumerate.
center_order: Option<u128>Order of the centre Z(G); None when too large to enumerate.
exponent: Option<u128>The exponent — lcm of element orders (smallest e with gᵉ = id for all g); None when too
large to enumerate.
assignment_orbits: Option<u128>The number of distinct {0,1} assignments to the variables up to symmetry (Pólya with 2 colours) —
the symmetry-reduced size of the search space; None when too large to enumerate.
abelianization: Option<(u128, u128)>The abelianisation G/[G,G] as (order, exponent) — the largest abelian quotient; None when too
large to enumerate.
subgroups: Option<usize>The number of subgroups (size of the subgroup lattice); None for larger groups (the lattice walk
is gated more tightly than the other invariants).
simple: Option<bool>Whether the group is simple (non-trivial, no normal subgroup but itself and {id}); None when too
large to enumerate.
composition_factors: Option<Vec<u128>>The composition factors (Jordan–Hölder) as the sorted multiset of their orders; their product is
|G|. None when the lattice walk is out of range.
sylow: Option<Vec<(u128, usize)>>The Sylow structure as (p, n_p) pairs — the number of Sylow p-subgroups per prime; None when
the lattice walk is out of range.
real_classes: Option<usize>The number of real conjugacy classes (= number of real irreducible characters); None when too
large to enumerate.
rational_classes: Option<usize>The number of rational conjugacy classes (= number of rational-valued irreducible characters) —
the singleton Galois orbits. Strictly refines Self::real_classes (rational ≤ real); they differ
exactly when a character is real but irrational. None when too large to enumerate.
irreducible_degrees: Option<Vec<u128>>The irreducible-representation degrees χ_s(1) (sorted, Σ dᵢ² = |G|) from the Burnside–Dixon
character table — the complete representation-theoretic fingerprint of the symmetry; None when the
character table is out of range.
frobenius_schur: Option<Vec<i8>>The Frobenius–Schur indicators (one per irreducible, aligned with the character table): +1 real,
0 complex, −1 quaternionic. Refines Self::real_classes and separates groups with identical
character tables (D₄ vs Q₈). None when the character table is out of range.
isotypic_multiplicities: Option<Vec<u128>>The isotypic decomposition of the variable-permutation representation: the multiplicity m_s of each
irreducible in π = Σ_s m_s χ_s (aligned with the character table). Bridges the action and the linear
theory — m_trivial = num_orbits, Σ m_s² = rank, Σ m_s·d_s = num_vars. None when out of range.
automorphism_order: Option<u128>The order of Aut(G) — the automorphism group of the symmetry group itself. The intrinsic symmetry of
G as an abstract group. None when out of range. Separates groups indistinguishable by character
table / Frobenius–Schur / rationality (e.g. |Aut(D₄)|=8 vs |Aut(Q₈)|=24).
outer_automorphism_order: Option<u128>The order of Out(G) = Aut(G)/Inn(G) — the outer automorphisms (those not realised by conjugation).
None when out of range.
coherent_rank: Option<usize>The coherent (association-scheme) rank — the number of relations in the coherent configuration
that 2-WL stabilizes to (= two_wl_pair_cells), the combinatorial analog of the orbital rank. It is
≤ rank (2-WL can only be coarser than the true orbitals), so a value below rank witnesses that the
polynomial pre-filter cannot resolve the full pair structure. Clause-derived: Some only from
symmetry_structure (None for the pseudo-Boolean coefficient profile, which has no clauses).
Trait Implementations§
Source§impl Clone for SymmetryProfile
impl Clone for SymmetryProfile
Source§fn clone(&self) -> SymmetryProfile
fn clone(&self) -> SymmetryProfile
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SymmetryProfile
impl Debug for SymmetryProfile
Source§impl PartialEq for SymmetryProfile
impl PartialEq for SymmetryProfile
Source§fn eq(&self, other: &SymmetryProfile) -> bool
fn eq(&self, other: &SymmetryProfile) -> bool
self and other values to be equal, and is used by ==.