pub struct EmergenceDetector;Expand description
H¹ Cohomology emergence detector
§Mathematical basis
For a cellular complex with V vertices and E edges:
- H⁰_dim = number of connected components (C)
- H¹_dim = E - V + H⁰_dim (Betti number β₁, number of independent cycles)
H¹_dim > 0 means the constraint graph has non-trivial topology — redundant constraint paths that create emergent behavior.
§Bloom pre-filter
XOR fingerprint skips expensive H¹ computation for obvious cases:
- Disconnected: E < V-1 → no emergence possible
- Massively over-connected: E > V*(V-1)/4 → definitely emergence
- Laman-rigid: E ≈ 2V-3 → skip (no overconstraint)
Implementations§
Source§impl EmergenceDetector
impl EmergenceDetector
Sourcepub fn preliminary_screen(V: usize, E: usize) -> bool
pub fn preliminary_screen(V: usize, E: usize) -> bool
HDC bloom pre-filter — skip H¹ if answer is obvious.
Returns true if H¹ computation is definitely needed.
Returns false if answer is obvious:
- Disconnected (E < V-1) → no emergence possible
- Massively over-connected (E > V*(V-1)/4) → definitely emergence
- Laman-rigid (E ≈ 2V-3 ± 10%) → no overconstraint
Inspired by FM’s “HDC bloom: bypasses 80-90% of constraint checks”.
Sourcepub fn detect(
n_vertices: usize,
n_edges: usize,
n_components: usize,
) -> EmergenceResult
pub fn detect( n_vertices: usize, n_edges: usize, n_components: usize, ) -> EmergenceResult
Detect emergence via H¹ cohomology
n_vertices: Number of agents in the fleet (V)n_edges: Number of communication/trust edges (E)n_components: Number of connected components (C, usually 1)
Sourcepub fn detect_graph<V: Into<usize>, E: Into<usize>>(
V: V,
E: E,
) -> EmergenceResult
pub fn detect_graph<V: Into<usize>, E: Into<usize>>( V: V, E: E, ) -> EmergenceResult
Detect from a fleet graph
Sourcepub fn detect_beta(n_vertices: usize, n_edges: usize) -> EmergenceResult
pub fn detect_beta(n_vertices: usize, n_edges: usize) -> EmergenceResult
Beta version: detect with beta coefficient β₁ > 0 is the emergence condition (first Betti number)
Trait Implementations§
Source§impl Clone for EmergenceDetector
impl Clone for EmergenceDetector
Source§fn clone(&self) -> EmergenceDetector
fn clone(&self) -> EmergenceDetector
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreAuto Trait Implementations§
impl Freeze for EmergenceDetector
impl RefUnwindSafe for EmergenceDetector
impl Send for EmergenceDetector
impl Sync for EmergenceDetector
impl Unpin for EmergenceDetector
impl UnsafeUnpin for EmergenceDetector
impl UnwindSafe for EmergenceDetector
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more