Expand description
§Amari Automata
Cellular automata, inverse design, and self-assembly using geometric algebra. This crate implements the mathematical foundation for Cliffy-Alive’s self-assembling UI system, where geometric algebra provides natural composition rules for CA cells.
§Key Concepts
- Geometric CA: Cellular automata where cells contain multivectors
- Inverse Design: Finding seeds that produce target configurations using dual numbers
- Self-Assembly: Polyomino tiling with geometric algebra constraints
- Cayley Navigation: CA evolution as navigation in Cayley graphs
- Tropical Solving: Using max-plus algebra to linearize discrete constraints
§Architecture
The crate combines three mathematical frameworks:
- Geometric algebra for spatial relationships and rotations
- Dual numbers for automatic differentiation through time
- Tropical algebra for constraint solving and optimization
§Usage
use amari_automata::{GeometricCA, Evolvable};
use amari_core::Multivector;
// Create a 2D geometric cellular automaton
let mut ca = GeometricCA::<3, 0, 0>::new_2d(64, 64);
// Set initial configuration with multivector cells using 2D coordinates
ca.set_cell_2d(32, 32, Multivector::basis_vector(0)).unwrap();
// Evolve the system
ca.step().unwrap();Re-exports§
pub use cayley_navigation::CayleyGraph;pub use cayley_navigation::Generator;pub use cayley_navigation::GroupElement;pub use geometric_ca::CARule;pub use geometric_ca::CellState;pub use geometric_ca::GeometricCA;pub use geometric_ca::RuleType;pub use inverse_design::Configuration;pub use inverse_design::Target;pub use inverse_design::InverseCADesigner;pub use inverse_design::InverseDesigner;pub use inverse_design::Objective;pub use inverse_design::TargetPattern;pub use inverse_design::TropicalConstraint;pub use self_assembly::Assembly;pub use self_assembly::AssemblyConfig;pub use self_assembly::AssemblyConstraint;pub use self_assembly::AssemblyRule;pub use self_assembly::Component;pub use self_assembly::ComponentType;pub use self_assembly::Polyomino;pub use self_assembly::SelfAssembler;pub use self_assembly::SelfAssembly;pub use self_assembly::Shape;pub use self_assembly::TileSet;pub use self_assembly::UIComponentType;pub use self_assembly::WangTileSet;pub use tropical_solver::ConstraintType;pub use tropical_solver::SolverConfig;pub use tropical_solver::TropicalExpression;pub use tropical_solver::TropicalSolver;pub use tropical_solver::TropicalSystem;pub use ui_assembly::Layout;pub use ui_assembly::LayoutConstraint;pub use ui_assembly::UIAssembler;pub use ui_assembly::UIAssemblyConfig;pub use ui_assembly::UIComponent;pub use error::AutomataError;pub use error::AutomataResult;pub use traits::Evolvable;pub use traits::InverseDesignable;pub use traits::SelfAssembling;
Modules§
- cayley_
navigation - Cayley Graph Navigation for Cellular Automata
- error
- Error types for automata operations
- geometric_
ca - Geometric Cellular Automata
- inverse_
design - Inverse Design for Cellular Automata
- self_
assembly - Self-Assembly System using Geometric Algebra
- traits
- Core traits for automata operations
- tropical_
solver - Tropical Algebra Constraint Solver
- ui_
assembly - UI-Specific Self-Assembly
Structs§
- Bivector
- Bivector type - wrapper around Multivector with only grade 2
- Dual
Multivector - Multivector with dual number coefficients for automatic differentiation
- Multivector
- A multivector in a Clifford algebra Cl(P,Q,R)
- Tropical
Multivector - A geometric algebra multivector in tropical space
- Vector
- Vector type - wrapper around Multivector with only grade 1