pub fn new_with_checked_security<F: IsPrimeField>(
        blowup_factor: u8,
        fri_number_of_queries: usize,
        coset_offset: u64,
        grinding_factor: u8,
        security_target: u8,
    ) -> Result<Self, InsecureOptionError> {
        Self::check_field_security::<F>(security_target)?;

        let num_bits_blowup_factor = blowup_factor.trailing_zeros() as usize;

        if security_target as usize
            >= grinding_factor as usize + num_bits_blowup_factor * fri_number_of_queries - 1
        {
            return Err(InsecureOptionError::LowSecurityBits);
        }

        Ok(ProofOptions {
            blowup_factor,
            fri_number_of_queries,
            coset_offset,
            grinding_factor,
        })
    }
Checks security of proof options given 128 bits of security
crates/provers/stark/src/proof/options.rs