SNAPKITTYWEST's picture
push from SNAPKITTYWEST/carry-agent
80d7559 verified
Raw History Blame Contribute Delete
5.9 kB
// CARRY Sovereign Agent Quantum Simulator & Research Platform
// Module exports
pub mod core;
pub mod fsm;
pub mod agents;
pub mod dag;
pub mod icp;
pub mod asp;
pub mod ftb;
pub mod topological;
pub mod emulator_6052;
pub mod gitc;
pub mod benchmarks;
#[cfg(test)]
mod tests {
use super::core::*;
use super::fsm::*;
use super::agents::*;
use super::dag::*;
use super::icp::*;
use super::asp::*;
use super::ftb::*;
use super::topological::*;
use super::emulator_6052::*;
use super::gitc::*;
use super::benchmarks::*;
#[test]
fn test_core_simulator_statevector_and_purity() {
let mut sim = QuantumSimulator::new(2, SimulationMode::StateVector, ErrorModel::None);
assert!(sim.state.is_valid_state());
assert_eq!(sim.state.purity(), 1.0);
let bell = BenchmarkSuite::build_bell_circuit();
for g in &bell.gates {
sim.apply_gate(g).unwrap();
}
assert!(sim.state.is_valid_state());
assert_eq!(sim.entanglement_graph.are_entangled(0, 1), true);
}
#[test]
fn test_density_matrix_simulator() {
let mut sim = QuantumSimulator::new(2, SimulationMode::DensityMatrix, ErrorModel::None);
assert!(sim.state.is_valid_state());
assert_eq!(sim.state.purity(), 1.0);
sim.apply_gate(&Gate::h(0)).unwrap();
assert!(sim.state.is_valid_state());
}
#[test]
fn test_quantum_fsm_and_max_cycle() {
let mut fsm = QuantumFSM::new(3);
assert_eq!(fsm.state, QuantumFSMState::Init);
fsm.transition(QuantumFSMState::Prepare, "agent1", vec![0], "PREP", "None", "StateReady").unwrap();
fsm.transition(QuantumFSMState::Entangle, "agent1", vec![0, 1], "ENT", "StateReady", "Entangled").unwrap();
fsm.transition(QuantumFSMState::Compute, "agent1", vec![0, 1], "COMP", "Entangled", "Computed").unwrap();
// 4th transition exceeds max_cycle = 3
let res = fsm.transition(QuantumFSMState::Measure, "agent1", vec![0], "MEAS", "Computed", "Measured");
assert!(res.is_err());
assert_eq!(fsm.state, QuantumFSMState::CycleLimit);
}
#[test]
fn test_agent_pair_cross_verification() {
let primary = Agent::new_primary("a1_compute", vec![0, 1], 100);
let partner = Agent::new_partner("a2_verify", "a1_compute", AgentRole::PartnerVerify, vec![0, 1]);
let pair = AgentPair::new(primary, partner, "group_0").unwrap();
let sim = QuantumSimulator::new(2, SimulationMode::StateVector, ErrorModel::None);
let ver = pair.cross_verify_state(&sim).unwrap();
assert!(ver.contains("PARTNER_VERIFIED"));
}
#[test]
fn test_quantum_dag_provenance() {
let mut dag = QuantumDAG::new();
let n1 = dag.add_node(QuantumDAGNodeType::Input, "LoadInput", "a1", vec![0], vec![]).unwrap();
let n2 = dag.add_node(QuantumDAGNodeType::StatePreparation, "Prep", "a1", vec![0], vec![n1]).unwrap();
let n3 = dag.add_node(QuantumDAGNodeType::ICPGate, "ICP", "icp_gate", vec![0], vec![n2]).unwrap();
let _n4 = dag.add_node(QuantumDAGNodeType::Commit, "Commit", "a1", vec![0], vec![n3]).unwrap();
assert!(dag.validate_path().is_ok());
}
#[test]
fn test_icp_governance_gate_and_halt() {
let mut icp = ICPGate::new();
let mut sim = QuantumSimulator::new(2, SimulationMode::StateVector, ErrorModel::None);
let mut fsm = QuantumFSM::new(10);
// Attempt operation on out-of-bounds qubit 5 -> must HALT
let res = icp.execute_pipeline("agent1", 5, "H", &mut sim, &mut fsm, |s| {
s.apply_gate(&Gate::h(5)).map(|_| "OK".to_string())
});
assert!(res.is_err());
assert_eq!(fsm.state, QuantumFSMState::Halted);
}
#[test]
fn test_asp_constraint_engine() {
let mut asp = ASPEngine::new();
asp.add_fact(ASPFact::Qubit("q0".to_string()));
asp.add_fact(ASPFact::Agent("a1".to_string()));
asp.add_fact(ASPFact::Controls("a1".to_string(), "q0".to_string()));
match asp.solve() {
ASPSolverResult::SAT { .. } => {}
_ => panic!("Expected SAT"),
}
// Add invalid control reference
asp.add_fact(ASPFact::Controls("a1".to_string(), "q99".to_string())); // q99 doesn't exist
match asp.solve() {
ASPSolverResult::UNSAT { .. } => {}
_ => panic!("Expected UNSAT"),
}
}
#[test]
fn test_6052_emulator_hard_cycle_stop() {
let mut emu = Emulator6052::new(2);
for _ in 0..5 {
emu.push_instruction(Insn6052::QGATE { gate: Gate::h(0) });
}
let mut sim = QuantumSimulator::new(1, SimulationMode::StateVector, ErrorModel::None);
let mut fsm = QuantumFSM::new(10);
let receipt = emu.execute(&mut sim, &mut fsm);
assert_eq!(receipt.status, "CYCLE_LIMIT");
assert_eq!(receipt.cycles_executed, 2);
}
#[test]
fn test_gitc_experiment() {
let mut gitc = GITCExperiment::new(5);
let summary = gitc.run_experiment().unwrap();
assert!(summary.contains("GITC_EXPERIMENT_COMPLETE"));
assert_eq!(gitc.results.len(), 5);
}
#[test]
fn test_reference_circuits_benchmark() {
let bell = BenchmarkSuite::build_bell_circuit();
let report = BenchmarkSuite::run_benchmark("Bell", &bell, 100).unwrap();
assert_eq!(report.num_qubits, 2);
assert_eq!(report.status, "SUCCESS");
let grover = BenchmarkSuite::build_grover_circuit();
let report2 = BenchmarkSuite::run_benchmark("Grover", &grover, 100).unwrap();
assert_eq!(report2.num_qubits, 2);
}
}