use minuet::prelude::*;
type Algebra = ProductCliffordAlgebra<64>;
fn main() -> MinuetResult<()> {
println!("=== Simple Holographic Memory Demo ===\n");
let memory = SimpleMemory::<Algebra>::new();
println!("Storing country-capital associations...");
memory.store_symbols("france", "paris")?;
memory.store_symbols("germany", "berlin")?;
memory.store_symbols("spain", "madrid")?;
memory.store_symbols("italy", "rome")?;
println!("Stored {} associations\n", memory.item_count());
println!("Recalling capitals:");
for country in &["france", "germany", "spain", "italy"] {
if let Some((capital, confidence)) = memory.recall(country)? {
println!(
" {} -> {} (confidence: {:.3})",
country, capital, confidence
);
}
}
println!(
"\nSymbol codebook contains {} symbols",
memory.symbol_count()
);
let info = memory.capacity_info();
println!("\nCapacity info:");
println!(" Total items: {}", info.total_items);
println!(" Theoretical capacity: {}", info.theoretical_capacity);
println!(" Estimated SNR: {:.2}", info.estimated_snr);
println!(" Utilization: {:.1}%", info.utilization * 100.0);
println!("\n=== Demo Complete ===");
Ok(())
}