pub fn prove<'a, F, P, Channel, A>(
tables: impl IntoIterator<Item = TableLookup<'a, P>>,
channel: &mut Channel,
alloc: &A,
) -> LogupProof<F>where
F: BinaryField<Underlier: Divisible<u64>>,
P: PackedField<Scalar = F> + 'a,
Channel: IOPProverChannel<P, A>,
A: Allocator,Expand description
Prove a logUp* reduction whose pushforwards are committed as oracles.
This wraps binius_ip_prover::logup_star::prove_reduction with the pushforward commitments.
It builds each table’s pushforward Y once, commits it, then runs the reduction over those same
buffers. Committing before the reduction binds every Y into the logUp challenges.
The relations <Y, eq_r> = Y(r) at each table’s reduced point are opened through the channel,
which may defer the actual openings to finish().
One oracle per table is the simple arrangement; the pushforwards could instead be concatenated into a single oracle, which is left for later.
§Arguments
tables- Onebinius_ip_prover::logup_star::TableLookupper table, by value: its multilinear and the lookers that read it.channel- The IOP prover channel, whose nexttables.len()oracles have message lengths2^min table order.alloc- The allocator the witnesses are drawn from.
§Preconditions
tablesis non-empty, each has at least one variable, and each has at least one looker.- Every index entry is less than the size of the table its looker reads.