pub fn prove<'a, F, P, DomainField, Challenger_, Backend>(
oracles: &mut MultilinearOracleSet<F>,
witness_index: &'a mut MultilinearExtensionIndex<'_, P>,
claims: impl IntoIterator<Item = EvalcheckMultilinearClaim<F>>,
switchover_fn: impl Fn(usize) -> usize + Clone + 'static,
transcript: &mut ProverTranscript<Challenger_>,
domain_factory: impl EvaluationDomainFactory<DomainField>,
backend: &Backend,
) -> Result<GreedyEvalcheckProveOutput<'a, F, P>, Error>where
F: TowerField + ExtensionField<DomainField>,
P: PackedField<Scalar = F> + PackedExtension<F, PackedSubfield = P> + PackedExtension<DomainField>,
DomainField: TowerField,
Challenger_: Challenger,
Backend: ComputationBackend,