pub struct BinaryWhirProfile { /* private fields */ }Expand description
A named parameter profile for one proximity regime.
The regime, the code rate and the folding width are chosen by the caller.
Query counts, samples and grinding are all derived from the soundness analysis.
Nothing here defaults to a regime: each one is a constructor of its own.
Implementations§
Source§impl BinaryWhirProfile
impl BinaryWhirProfile
Sourcepub const fn unique_decoding(
security_level: usize,
starting_log_inv_rate: usize,
folding_factor: usize,
) -> Self
pub const fn unique_decoding( security_level: usize, starting_log_inv_rate: usize, folding_factor: usize, ) -> Self
The regime that assumes only unique decoding, and conjectures nothing.
Sourcepub const fn proven_list_decoding(
security_level: usize,
starting_log_inv_rate: usize,
folding_factor: usize,
) -> Self
pub const fn proven_list_decoding( security_level: usize, starting_log_inv_rate: usize, folding_factor: usize, ) -> Self
The regime that decodes to the Johnson radius, where list decoding is proven.
Mutual correlated agreement at this radius is a theorem, resting on no conjecture.
Sourcepub const fn conjectural(
security_level: usize,
starting_log_inv_rate: usize,
folding_factor: usize,
) -> Self
pub const fn conjectural( security_level: usize, starting_log_inv_rate: usize, folding_factor: usize, ) -> Self
The regime that decodes to capacity, which no theorem supports.
Every additive binary domain refuses it, because the assumption is refuted there.
Sourcepub const fn assumption(&self) -> SecurityAssumption
pub const fn assumption(&self) -> SecurityAssumption
The proximity regime this profile is graded under.
Sourcepub const fn security_level(&self) -> usize
pub const fn security_level(&self) -> usize
The target in bits for every error term.
Sourcepub fn config<EF, F, Challenger, Domain>(
&self,
num_variables: usize,
domain: &Domain,
) -> Result<WhirConfig<EF, F, Challenger>, ProfileError>where
F: Field,
EF: ExtensionField<F>,
Challenger: FieldChallenger<F> + GrindingChallenger<Witness = F>,
Domain: WhirDomain<F, EF>,
pub fn config<EF, F, Challenger, Domain>(
&self,
num_variables: usize,
domain: &Domain,
) -> Result<WhirConfig<EF, F, Challenger>, ProfileError>where
F: Field,
EF: ExtensionField<F>,
Challenger: FieldChallenger<F> + GrindingChallenger<Witness = F>,
Domain: WhirDomain<F, EF>,
Derive the schedule this profile stands for over a concrete evaluation domain.
Grinding is raised to exactly what the analysis demands, rather than guessed at.
The domain vetoes a regime whose distance assumption fails for its code.
§Errors
Returns an error when the derived schedule opens no position.
Returns an error when the domain refuses the regime.
Returns an error when the analysis demands more grinding than one witness can carry.
Returns an error when the schedule itself is infeasible.
Trait Implementations§
Source§impl Clone for BinaryWhirProfile
impl Clone for BinaryWhirProfile
impl Copy for BinaryWhirProfile
Source§impl Debug for BinaryWhirProfile
impl Debug for BinaryWhirProfile
impl Eq for BinaryWhirProfile
Source§impl PartialEq for BinaryWhirProfile
impl PartialEq for BinaryWhirProfile
impl StructuralPartialEq for BinaryWhirProfile
Auto Trait Implementations§
impl Freeze for BinaryWhirProfile
impl RefUnwindSafe for BinaryWhirProfile
impl Send for BinaryWhirProfile
impl Sync for BinaryWhirProfile
impl Unpin for BinaryWhirProfile
impl UnsafeUnpin for BinaryWhirProfile
impl UnwindSafe for BinaryWhirProfile
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
fn instrument(self, span: Span) -> Instrumented<Self> ⓘ
Source§fn in_current_span(self) -> Instrumented<Self> ⓘ
fn in_current_span(self) -> Instrumented<Self> ⓘ
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more