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
//! Cellular Automaton substrate.
//!
//! This module implements the Information Universe traits for 1D
//! binary cellular automata with periodic boundary conditions.
//!
//! # Type parameters
//!
//! The CA substrate uses const generics for flexibility:
//! - `N`: Number of cells (state space = 2^N)
//! - `R`: Neighborhood radius (default 1 for elementary CA)
//!
//! # Components
//!
//! - **State**: [`CAState<N, R>`] — N cells with periodic boundaries.
//! - **Rules**: [`CARule<N, R>`] — lookup-table-based rule with
//! measurable properties for hypothesis generation.
//! - **Observation**: Full state, density, and parity observers.
//! - **Schedule**: [`SynchronousCASchedule`] — all cells update
//! simultaneously.
//!
//! # Usage
//!
//! ```rust,no_run
//! use arco::substrates::ca::CAUniverse;
//! use arco::cycle::{CycleConfig, run_cycle};
//! use rand::{rngs::StdRng, SeedableRng};
//!
//! let mut rng = StdRng::seed_from_u64(42);
//! let config = CycleConfig::default();
//! let universe = CAUniverse::<8, 1>::new("full_state", &mut rng, config.n_train + config.n_test);
//! let mut hypotheses = vec![];
//! let record = run_cycle(&universe, &config, &mut hypotheses, None);
//! ```
// Re-export commonly used types
pub use generate_ca_hypotheses;
pub use ;
pub use CARule;
pub use SynchronousCASchedule;
pub use CAState;
pub use CAUniverse;