pub fn prove<U, F, DomainField, Challenger, Backend>(
oracles: &mut MultilinearOracleSet<F>,
witness_index: &mut MultilinearExtensionIndex<'_, U, F>,
claims: impl IntoIterator<Item = EvalcheckMultilinearClaim<F>>,
switchover_fn: impl Fn(usize) -> usize + Clone + 'static,
challenger: &mut Challenger,
domain_factory: impl EvaluationDomainFactory<DomainField>,
backend: &Backend,
) -> Result<GreedyEvalcheckProveOutput<F>, Error>where
U: UnderlierType + PackScalar<F> + PackScalar<DomainField>,
F: TowerField + ExtensionField<DomainField>,
PackedType<U, F>: PackedFieldIndexable,
DomainField: TowerField,
Challenger: CanObserve<F> + CanSample<F> + CanWrite,
Backend: ComputationBackend,