pub fn prove<FGenerator, F, PBits, PChallenge, PGenerator, FDomain, Transcript, Backend, const EXPONENT_BIT_WIDTH: usize>(
witness: &GeneratorExponentWitness<'_, PBits, PGenerator, PChallenge, EXPONENT_BIT_WIDTH>,
claim: &LayerClaim<F>,
evaluation_domain_factory: impl EvaluationDomainFactory<FDomain>,
transcript: Transcript,
backend: &Backend,
) -> Result<GeneratorExponentReductionOutput<F, EXPONENT_BIT_WIDTH>, Error>where
FDomain:
Field,
PBits:
PackedField,
PGenerator:
PackedExtension<PBits::
Scalar, PackedSubfield = PBits> +
PackedFieldIndexable<Scalar = FGenerator> +
PackedExtension<FDomain>,
PGenerator::
Scalar:
ExtensionField<PBits::
Scalar> +
ExtensionField<FDomain>,
PChallenge:
PackedField +
PackedFieldIndexable<Scalar = F> +
PackedExtension<PGenerator::
Scalar, PackedSubfield = PGenerator> +
PackedExtension<FDomain>,
F:
ExtensionField<PGenerator::
Scalar> +
ExtensionField<FDomain> +
BinaryField +
TowerField,
FGenerator:
Field +
TowerField,
Backend:
ComputationBackend,
Transcript:
CanSample<F> +
CanWrite,