pub trait ResGraphObject {
// Required methods
fn num_vertices(&self) -> usize;
fn object_name(&self) -> &'static str;
// Provided methods
fn has_adjacency(&self) -> bool { ... }
fn is_adjacent(&self, _v1: usize, _v2: usize) -> bool { ... }
}Expand description
Trait for objects in the ResGraph category
An object in ResGraph is a resonance graph with:
- A fixed number of vertices (roots for groups, vertices for Atlas)
- An underlying graph structure
- Compatibility with E₈ resonance structure
§Design Note
This trait is minimal: it only requires num_vertices() and object_name().
The adjacency structure is implicit via the E₈ embedding for most objects.
For the Atlas, which is a concrete graph, we can query adjacency directly.
For exceptional groups (G₂, F₄, E₆, E₇, E₈), adjacency is determined by
their root systems (roots with inner product -1 are adjacent).
Morphisms in ResGraph preserve this structure, but the verification of
structure preservation is done via the E₈ embedding, not by checking
adjacency for every pair of vertices.
Required Methods§
Sourcefn num_vertices(&self) -> usize
fn num_vertices(&self) -> usize
Get the number of vertices (or roots) in this object
For Atlas: 96 vertices For G₂: 12 roots For F₄: 48 roots For E₆: 72 roots For E₇: 126 roots For E₈: 240 roots
Sourcefn object_name(&self) -> &'static str
fn object_name(&self) -> &'static str
Get a human-readable name for this object
Provided Methods§
Sourcefn has_adjacency(&self) -> bool
fn has_adjacency(&self) -> bool
Check if this object has explicit adjacency information
Default: false (most groups don’t store full adjacency)