pub fn verify<G, Val, Challenge, M, Challenger>(
g: &G,
config: &FriConfig<M>,
proof: &FriProof<Challenge, M, Challenger::Witness, G::InputProof>,
challenger: &mut Challenger,
open_input: impl Fn(usize, &G::InputProof) -> Result<Vec<(usize, Challenge)>, G::InputError>,
) -> Result<(), FriError<M::Error, G::InputError>>where
Val: Field,
Challenge: ExtensionField<Val>,
M: Mmcs<Challenge>,
Challenger: FieldChallenger<Val> + GrindingChallenger + CanObserve<M::Commitment>,
G: FriGenericConfig<Challenge>,