pub fn fingerprint_error(air: &LogUpAir, shape: &InstanceShape) -> ErrorBitsExpand description
-log2(ε_logup) in bits, following ε_logup ≤ N·(W + 2) / |EF| with
N = num_interactions · 2^log_trace_length and W = max_message_width.
The W + 2 covers both ways a sampled (alpha, beta) breaks the argument: a root of the
cleared numerator, and a vanishing denominator that lets a message be dropped.
Returns 0 bits for degenerate inputs (no interactions, or unknown field
size). Prefer security_term, which omits the term entirely when there
are no interactions rather than reporting a binding 0-bit bound.