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