use ppflib::prelude::*;
use ppflib::core::StateSpaceError;
fn main() -> Result<(), StateSpaceError> {
println!("=== Basic PPF Factorization Example ===\n");
println!("1. Classical State Spaces:");
let s6 = FactorizationStateSpace::new(6)?;
let s12 = FactorizationStateSpace::new(12)?;
println!("S(6) has {} factorizations:", s6.size());
for (i, factorization) in s6.factorizations().iter().enumerate() {
println!(" {}: {}", i + 1, factorization);
}
println!("\nS(12) has {} factorizations:", s12.size());
for (i, factorization) in s12.factorizations().iter().enumerate() {
println!(" {}: {}", i + 1, factorization);
}
println!("\n2. Quantum State Spaces:");
let s_neg6 = FactorizationStateSpace::new(-6)?;
let s_neg12 = FactorizationStateSpace::new(-12)?;
println!("S(-6) has {} factorizations:", s_neg6.size());
for (i, factorization) in s_neg6.factorizations().iter().enumerate() {
println!(" {}: {}", i + 1, factorization);
}
println!("\nS(-12) has {} factorizations:", s_neg12.size());
for (i, factorization) in s_neg12.factorizations().iter().enumerate() {
println!(" {}: {}", i + 1, factorization);
}
println!("\n3. Quantum Collapse Demonstration:");
let s_neg2 = FactorizationStateSpace::new(-2)?;
let s_neg3 = FactorizationStateSpace::new(-3)?;
println!("Before multiplication:");
println!("S(-2) has {} factorizations", s_neg2.size());
println!("S(-3) has {} factorizations", s_neg3.size());
let result = StateSpaceOperations::multiply(&s_neg2, &s_neg3)?;
println!("\nAfter multiplication: S(-2) × S(-3)");
println!("Result has {} factorizations", result.result_space.size());
println!("Quantum collapse occurred: {}", result.collapse_info.collapsed);
println!("Input sizes: {:?}", result.collapse_info.input_sizes);
println!("Output size: {}", result.collapse_info.output_size);
println!("Operation type: {:?}", result.collapse_info.operation_type);
if result.collapse_info.collapsed {
println!("✓ Quantum collapse: (-2) × (-3) → 6");
println!("The negative factors combined and collapsed to classical state!");
}
println!("\n4. Classical vs Quantum Multiplication:");
let s2 = FactorizationStateSpace::new(2)?;
let s3 = FactorizationStateSpace::new(3)?;
let classical_result = StateSpaceOperations::multiply(&s2, &s3)?;
println!("Classical: S(2) × S(3)");
println!("Result has {} factorizations", classical_result.result_space.size());
println!("Collapse occurred: {}", classical_result.collapse_info.collapsed);
println!("Operation type: {:?}", classical_result.collapse_info.operation_type);
println!("\n5. Sign Prime (-1) Analysis:");
let s_neg1 = FactorizationStateSpace::new(-1)?;
println!("S(-1) has {} factorizations:", s_neg1.size());
for factorization in s_neg1.factorizations() {
println!(" {}", factorization);
println!(" Product: {}", factorization.value());
println!(" Has sign prime: {}", factorization.has_sign_prime());
}
println!("\n6. Factorization Analysis:");
println!("Analyzing S(6) factorizations:");
for (i, factorization) in s6.factorizations().iter().enumerate() {
println!(" Factorization {}: {}", i + 1, factorization);
println!(" Value: {}", factorization.value());
println!(" Has sign prime: {}", factorization.has_sign_prime());
println!(" Distinct primes: {}", factorization.distinct_prime_count());
println!(" Total factors: {}", factorization.total_factor_count());
println!(" Complexity: {}", factorization.complexity());
}
Ok(())
}