1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
//! Binary Graph Universe — ARCO's validation substrate.
//!
//! This module implements the Information Universe traits for
//! directed graphs with binary vertex labels and binary edge
//! labels. This is the first substrate built for ARCO and
//! served as the validation case for the measurement apparatus.
//!
//! # Components
//!
//! - **State**: [`BinaryGraphState`] — a directed graph with n
//! vertices, each labeled {0, 1}, each edge labeled {0, 1}.
//! - **Rules**: [`RewriteRule`] — local graph rewrite rules with
//! pattern matching via [`MatchInfo`]. Includes 16 structured
//! rules (logic gates, transport, identity) and 8 destructive
//! rules (scramblers, constants).
//! - **Observation**: Single-state and windowed observers at
//! varying granularities (full state, labels only, edges only,
//! scalar aggregates).
//! - **Schedule**: [`AllVerticesSchedule`] — asynchronous
//! exhaustive update: every vertex visited once per timestep
//! in random order, first matching rule fires.
//! - **Universe**: [`BinaryGraphUniverse`] — bundles all components
//! and implements [`InformationUniverse`].
//! - **Hypotheses**: Standard hypothesis set including the
//! Transport Law (H5) and the Structure-Storage Gradient.
//! - **Validation**: Boolean function verification for NAND, AND,
//! OR, NOR, and XOR under stochastic scheduling.
//!
//! # Usage
//!
//! ```rust,no_run
//! use arco::cycle::{CycleConfig, run_cycle};
//! use arco::substrates::graph::{BinaryGraphUniverse, generate_standard_hypotheses};
//! use rand::SeedableRng;
//! use rand::rngs::StdRng;
//!
//!
//! let mut rng = StdRng::seed_from_u64(42);
//! let config = CycleConfig::default();
//! let universe = BinaryGraphUniverse::new(3, "compound", &mut rng, config.n_train + config.n_test);
//!
//! let mut hypotheses = generate_standard_hypotheses();
//! let record = run_cycle(&universe, &config, &mut hypotheses, None);
//!
//! println!("{}", record.summary());
//! ```
// Re-export commonly used types
pub use generate_standard_hypotheses;
pub use observe_compound;
pub use ;
pub use AllVerticesSchedule;
pub use BinaryGraphState;
pub use BinaryGraphUniverse;
pub use ;