pub fn prove<'a, F, P, M, Challenger_, Hal, HostAllocatorType, DeviceAllocatorType>(
system: &EvalClaimSystem<'_, F>,
witnesses: &[M],
transcript: &mut ProverTranscript<Challenger_>,
memoized_data: MemoizedData<'_, P>,
hal: &Hal,
dev_alloc: &'a DeviceAllocatorType,
host_alloc: &HostAllocatorType,
) -> Result<ReducedWitness<'a, F, Hal>, Error>where
F: TowerTop + PackedTop<Scalar = F>,
P: PackedFieldIndexable<Scalar = F> + PackedTop,
M: MultilinearPoly<P> + Sync,
Challenger_: Challenger,
Hal: ComputeLayer<F>,
HostAllocatorType: ComputeAllocator<F, CpuMemory>,
DeviceAllocatorType: ComputeAllocator<F, Hal::DevMem>,