Skip to main content

Crate amari_automata

Crate amari_automata 

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

  1. Geometric algebra for spatial relationships and rotations
  2. Dual numbers for automatic differentiation through time
  3. 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::CayleyGraphNavigator;
pub use cayley_navigation::CayleyNavigator;
pub use cayley_navigation::DefaultCayleyNavigator;
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
DualMultivector
Multivector with dual number coefficients for automatic differentiation
Multivector
A multivector in a Clifford algebra Cl(P,Q,R)
TropicalMultivector
A geometric algebra multivector in tropical space
Vector
Vector type - wrapper around Multivector with only grade 1