jf_relation/gadgets/
mod.rs1pub mod ecc;
10pub mod ultraplonk;
11
12mod arithmetic;
13mod cmp;
14mod emulated;
15mod logic;
16mod range;
17#[allow(unused_imports)]
18pub use arithmetic::*;
19#[allow(unused_imports)]
20pub use cmp::*;
21#[allow(unused_imports)]
22pub use emulated::*;
23#[allow(unused_imports)]
24pub use logic::*;
25#[allow(unused_imports)]
26pub use range::*;
27
28mod utils;
30
31pub mod test_utils {
33 use crate::{Arithmetization, Circuit, CircuitError, PlonkCircuit};
34 use ark_ff::PrimeField;
35
36 pub fn test_variable_independence_for_circuit<F: PrimeField>(
39 circuit_1: PlonkCircuit<F>,
40 circuit_2: PlonkCircuit<F>,
41 ) -> Result<(), CircuitError> {
42 assert_eq!(circuit_1.num_gates(), circuit_2.num_gates());
43 assert_eq!(circuit_1.num_vars(), circuit_2.num_vars());
44 let sigma_polys_1 = circuit_1.compute_extended_permutation_polynomials()?;
46 let sigma_polys_2 = circuit_2.compute_extended_permutation_polynomials()?;
47 sigma_polys_1
48 .iter()
49 .zip(sigma_polys_2.iter())
50 .for_each(|(p1, p2)| assert_eq!(p1, p2));
51 Ok(())
52 }
53}