Skip to main content

prove

Function prove 

Source
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 - One binius_ip_prover::logup_star::TableLookup per table, by value: its multilinear and the lookers that read it.
  • channel - The IOP prover channel, whose next tables.len() oracles have message lengths 2^m in table order.
  • alloc - The allocator the witnesses are drawn from.

§Preconditions

  • tables is 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.