Struct kimchi_msm::logup::prover::Env

source ·
pub struct Env<G: KimchiCurve, ID: LookupTableID> {
Show 14 fields pub lookup_counters_poly_d1: BTreeMap<ID, Vec<DensePolynomial<G::ScalarField>>>, pub lookup_counters_comm_d1: BTreeMap<ID, Vec<PolyComm<G>>>, pub lookup_terms_poly_d1: BTreeMap<ID, Vec<DensePolynomial<G::ScalarField>>>, pub lookup_terms_comms_d1: BTreeMap<ID, Vec<PolyComm<G>>>, pub lookup_aggregation_poly_d1: DensePolynomial<G::ScalarField>, pub lookup_aggregation_comm_d1: PolyComm<G>, pub lookup_counters_evals_d8: BTreeMap<ID, Vec<Evaluations<G::ScalarField, D<G::ScalarField>>>>, pub lookup_terms_evals_d8: BTreeMap<ID, Vec<Evaluations<G::ScalarField, D<G::ScalarField>>>>, pub lookup_aggregation_evals_d8: Evaluations<G::ScalarField, D<G::ScalarField>>, pub fixed_lookup_tables_poly_d1: BTreeMap<ID, DensePolynomial<G::ScalarField>>, pub fixed_lookup_tables_comms_d1: BTreeMap<ID, PolyComm<G>>, pub fixed_lookup_tables_evals_d8: BTreeMap<ID, Evaluations<G::ScalarField, D<G::ScalarField>>>, pub joint_combiner: G::ScalarField, pub beta: G::ScalarField,
}
Expand description

Represents the environment for the logup argument.

Fields§

§lookup_counters_poly_d1: BTreeMap<ID, Vec<DensePolynomial<G::ScalarField>>>

The polynomial of the multiplicities, indexed by the table ID.

§lookup_counters_comm_d1: BTreeMap<ID, Vec<PolyComm<G>>>

The commitments to the multiplicities, indexed by the table ID.

§lookup_terms_poly_d1: BTreeMap<ID, Vec<DensePolynomial<G::ScalarField>>>

The polynomials of the inner sums.

§lookup_terms_comms_d1: BTreeMap<ID, Vec<PolyComm<G>>>

The commitments of the inner sums.

§lookup_aggregation_poly_d1: DensePolynomial<G::ScalarField>

The aggregation polynomial.

§lookup_aggregation_comm_d1: PolyComm<G>

The commitment to the aggregation polynomial.

§lookup_counters_evals_d8: BTreeMap<ID, Vec<Evaluations<G::ScalarField, D<G::ScalarField>>>>§lookup_terms_evals_d8: BTreeMap<ID, Vec<Evaluations<G::ScalarField, D<G::ScalarField>>>>§lookup_aggregation_evals_d8: Evaluations<G::ScalarField, D<G::ScalarField>>§fixed_lookup_tables_poly_d1: BTreeMap<ID, DensePolynomial<G::ScalarField>>§fixed_lookup_tables_comms_d1: BTreeMap<ID, PolyComm<G>>§fixed_lookup_tables_evals_d8: BTreeMap<ID, Evaluations<G::ScalarField, D<G::ScalarField>>>§joint_combiner: G::ScalarField

The combiner used for vector lookups

§beta: G::ScalarField

The evaluation point used for the lookup polynomials.

Implementations§

source§

impl<G: KimchiCurve, ID: LookupTableID> Env<G, ID>

source

pub fn create<OpeningProof: OpenProof<G>, Sponge: FqSponge<G::BaseField, G, G::ScalarField>>( lookups: BTreeMap<ID, LogupWitness<G::ScalarField, ID>>, domain: EvaluationDomains<G::ScalarField>, fq_sponge: &mut Sponge, srs: &OpeningProof::SRS ) -> Selfwhere OpeningProof::SRS: Sync,

Create an environment for the prover to create a proof for the Logup protocol. The protocol does suppose that the individual lookup terms are committed as part of the columns. Therefore, the protocol only focus on commiting to the “grand product sum” and the “row-accumulated” values.

Auto Trait Implementations§

§

impl<G, ID> RefUnwindSafe for Env<G, ID>where G: RefUnwindSafe, ID: RefUnwindSafe, <G as AffineRepr>::ScalarField: RefUnwindSafe,

§

impl<G, ID> Send for Env<G, ID>

§

impl<G, ID> Sync for Env<G, ID>

§

impl<G, ID> Unpin for Env<G, ID>where G: Unpin, <G as AffineRepr>::ScalarField: Unpin,

§

impl<G, ID> UnwindSafe for Env<G, ID>where G: UnwindSafe + RefUnwindSafe, ID: RefUnwindSafe, <G as AffineRepr>::ScalarField: UnwindSafe + RefUnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V