use std::cell::RefCell; use std::rc::Rc; use circuit_cas::circuit::dag::CircuitExt; use circuit_cas::circuit::quotient::QuotientCircuit; use circuit_cas::circuit::traits::Circuit; use circuit_cas::poly::ideal::{Generators, Ideal}; use circuit_cas::var; fn main() { let x = var!("x"); let nx = var!("x\u{0304}"); let idem: Ideal<_, Generators> = vec![ 1 * (&x ^ 2) - 1 * (&x ^ 1), 1 * (&nx ^ 2) - 1 * (&nx ^ 1), 1 * ((&x ^ 1) * (&nx ^ 1)) - 1 * (&x ^ 1), ].into(); let quotient: Rc> = idem.into(); // Build x * x̄ + x in the DAG let xn = quotient.var("x"); let nxn = quotient.var("x\u{0304}"); let prod = xn * nxn; let xn2 = quotient.var("x"); let expr = prod + xn2; println!("dag size: {}", quotient.borrow().len()); println!("expr node id: {:?}", expr.id); }