pub fn new_secure(security_level: SecurityLevel, coset_offset: u64) -> Self {
        match security_level {
            SecurityLevel::Conjecturable80Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 31,
                coset_offset,
                grinding_factor: 20,
            },
            SecurityLevel::Conjecturable100Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 41,
                coset_offset,
                grinding_factor: 20,
            },
            SecurityLevel::Conjecturable128Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 55,
                coset_offset,
                grinding_factor: 20,
            },
            SecurityLevel::Provable80Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 80,
                coset_offset,
                grinding_factor: 20,
            },
            SecurityLevel::Provable100Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 104,
                coset_offset,
                grinding_factor: 20,
            },
            SecurityLevel::Provable128Bits => ProofOptions {
                blowup_factor: 4,
                fri_number_of_queries: 140,
                coset_offset,
                grinding_factor: 20,
            },
        }
    }
See section 5.10.1 of https://eprint.iacr.org/2021/582.pdf
crates/provers/stark/src/proof/options.rs