ResGraphObject

Trait ResGraphObject 

Source
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§

Source

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

Source

fn object_name(&self) -> &'static str

Get a human-readable name for this object

Provided Methods§

Source

fn has_adjacency(&self) -> bool

Check if this object has explicit adjacency information

Default: false (most groups don’t store full adjacency)

Source

fn is_adjacent(&self, _v1: usize, _v2: usize) -> bool

Check if two vertices are adjacent (if adjacency information available)

Default implementation returns false. Objects with explicit adjacency (like Atlas) should override this.

§Arguments
  • v1, v2 - Vertex indices
§Returns

true if v1 and v2 are adjacent (requires has_adjacency() == true)

Implementors§