Skip to main content

p3_binary_pcs/whir/
proof.rs

1//! The proof one Boolean opening carries.
2
3use p3_binary_field::TowerLevel;
4use p3_commit::Mmcs;
5use p3_field::Field;
6use p3_sumcheck::ring_switch::bits::BitRingSwitchClaimsProof;
7use p3_whir::PcsProof;
8use serde::{Deserialize, Serialize};
9
10/// One Boolean opening: the reductions, and the proximity opening that discharges them.
11#[derive(Clone, Serialize, Deserialize)]
12#[serde(bound(
13    serialize = "EF: TowerLevel, MT::Commitment: Serialize, MT::MultiProof: Serialize",
14    deserialize = "EF: TowerLevel, MT::Commitment: Deserialize<'de>, MT::MultiProof: Deserialize<'de>"
15))]
16pub struct BooleanWhirProof<EF: Field + Send + Sync, MT: Mmcs<EF>> {
17    /// One batched bit-alphabet ring switch, with every claim's elements in the order they came in.
18    pub reduction: BitRingSwitchClaimsProof<EF>,
19    /// The single proximity opening that discharges the one surviving claim.
20    pub opening: PcsProof<EF, EF, MT>,
21}