pub fn prove<F, PW, DomainField, Challenger, Backend>(
oracles: &mut MultilinearOracleSet<F>,
witness_index: &mut MultilinearExtensionIndex<'_, PW::Underlier, PW::Scalar>,
claims: impl IntoIterator<Item = EvalcheckClaim<F>>,
switchover_fn: impl Fn(usize) -> usize + Clone + 'static,
challenger: &mut Challenger,
domain_factory: impl EvaluationDomainFactory<DomainField>,
backend: Backend,
) -> Result<GreedyEvalcheckProveOutput<F>, Error>where
F: TowerField + From<PW::Scalar>,
PW: PackedFieldIndexable + PackedExtension<DomainField> + WithUnderlier,
PW::Scalar: TowerField + From<F> + ExtensionField<DomainField>,
PW::Underlier: PackScalar<PW::Scalar, Packed = PW>,
DomainField: TowerField,
Challenger: CanObserve<F> + CanSample<F>,
Backend: ComputationBackend,