openvm_deferral_circuit/canonicity/
mod.rs

1use openvm_circuit_primitives::{StructReflection, StructReflectionHelper};
2use openvm_circuit_primitives_derive::AlignedBorrow;
3
4use crate::utils::F_NUM_BYTES;
5
6mod air;
7mod trace;
8
9pub use air::*;
10pub use trace::*;
11
12#[repr(C)]
13#[derive(Clone, Copy, Debug)]
14pub struct CanonicityIo<T> {
15    pub x: [T; F_NUM_BYTES],
16    /// Assumed boolean by caller.
17    pub count: T,
18}
19
20#[repr(C)]
21#[derive(AlignedBorrow, StructReflection, Clone, Copy, Debug)]
22pub struct CanonicityAuxCols<T> {
23    /// Marker for the first index where `x[i] != order[i]` (big-endian).
24    pub diff_marker: [T; F_NUM_BYTES],
25    /// `order[i] - x[i]` at the first differing index, constrained to `[1, 255]`.
26    pub diff_val: T,
27}