use std::cell::RefCell; use std::rc::Rc; use circuit_cas::circuit::probabilistic::ProbCircuit; use circuit_cas::circuit::dag::CircuitExt; fn main() { let circuit: Rc> = ProbCircuit::new(); // Build (x + y) * (x + z) let x = circuit.var("x"); let y = circuit.var("y"); let z = circuit.var("z"); let x_plus_y = circuit.var("x") + y; let x_plus_z = circuit.var("x") + z; let expr = x_plus_y * x_plus_z; // Deduplication: both x leaves share the same NodeId let x2 = circuit.var("x"); assert_eq!(x.id, x2.id); println!("(x + y) * (x + z) root node id: {:?}", expr.id); println!("x node id: {:?}", x.id); println!("x deduplicated node id: {:?}", x2.id); }