fn open_combinations<'a>(
        ck: &Self::CommitterKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<'a, F>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<F>,
        opening_challenge: F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>,
    ) -> Result<BatchLCProof<F, Self>, Self::Error>
    where
        Self::Randomness: 'a,
        Self::Commitment: 'a,
    {
        let linear_combinations: Vec<_> = linear_combinations.into_iter().collect();
        let polynomials: Vec<_> = polynomials.into_iter().collect();
        let poly_query_set = lc_query_set_to_poly_query_set(linear_combinations.iter().copied(), query_set);
        let poly_evals = evaluate_query_set(polynomials.iter().copied(), &poly_query_set);
        let proof = Self::batch_open(
            ck,
            polynomials,
            commitments,
            &poly_query_set,
            opening_challenge,
            rands,
            rng,
        )?;
        Ok(BatchLCProof {
            proof,
            evals: Some(poly_evals.values().copied().collect()),
        })
    }
/// On input a list of polynomials, linear combinations of those polynomials,
/// and a query set, `open_combination` outputs a proof of evaluation of
/// the combinations at the points in the query set.
On input a list of polynomials, linear combinations of those polynomials,
and a query set, `open_combination` outputs a proof of evaluation of
the combinations at the points in the query set.
On input a list of polynomials linear combinations of those polynomials and a query set ` open_combination ` outputs a proof of evaluation of the combinations at the points in the query set .
fn open_combinations<'a>(
        ck: &Self::CommitterKey,
        linear_combinations: impl IntoIterator<Item = &'a LinearCombination<F>>,
        polynomials: impl IntoIterator<Item = &'a LabeledPolynomial<'a, F>>,
        commitments: impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>,
        query_set: &QuerySet<F>,
        opening_challenge: F,
        rands: impl IntoIterator<Item = &'a Self::Randomness>,
        rng: Option<&mut dyn RngCore>,
    ) -> Result<BatchLCProof<F, Self>, Self::Error>
    where
        Self::Randomness: 'a,
        Self::Commitment: 'a,
    {
        let linear_combinations: Vec<_> = linear_combinations.into_iter().collect();
        let polynomials: Vec<_> = polynomials.into_iter().collect();
        let poly_query_set = lc_query_set_to_poly_query_set(linear_combinations.iter().copied(), query_set);
        let poly_evals = evaluate_query_set(polynomials.iter().copied(), &poly_query_set);
        let proof = Self::batch_open(
            ck,
            polynomials,
            commitments,
            &poly_query_set,
            opening_challenge,
            rands,
            rng,
        )?;
        Ok(BatchLCProof {
            proof,
            evals: Some(poly_evals.values().copied().collect()),
        })
    }
fn open_combinations < ' a > ( ck : & Self :: CommitterKey , linear_combinations : impl IntoIterator < Item = & ' a LinearCombination < F > > , polynomials : impl IntoIterator < Item = & ' a LabeledPolynomial < ' a , F > > , commitments : impl IntoIterator < Item = & ' a LabeledCommitment < Self :: Commitment > > , query_set : & QuerySet < F > , opening_challenge : F , rands : impl IntoIterator < Item = & ' a Self :: Randomness > , rng : Option < & mut dyn RngCore > , ) -> Result < BatchLCProof < F , Self > , Self :: Error > where Self :: Randomness : ' a , Self :: Commitment : ' a , { let linear_combinations : Vec < _ > = linear_combinations . into_iter ( ) . collect ( ) ; let polynomials : Vec < _ > = polynomials . into_iter ( ) . collect ( ) ; let poly_query_set = lc_query_set_to_poly_query_set ( linear_combinations . iter ( ) . copied ( ) , query_set ) ; let poly_evals = evaluate_query_set ( polynomials . iter ( ) . copied ( ) , & poly_query_set ) ; let proof = Self :: batch_open ( ck , polynomials , commitments , & poly_query_set , opening_challenge , rands , rng , ) ? ; Ok ( BatchLCProof { proof , evals : Some ( poly_evals . values ( ) . copied ( ) . collect ( ) ) , } ) }
On input a list of polynomials, linear combinations of those polynomials,
and a query set, `open_combination` outputs a proof of evaluation of
the combinations at the points in the query set.
On input a list of polynomials linear combinations of those polynomials and a query set ` open_combination ` outputs a proof of evaluation of the combinations at the points in the query set .
ck
&Self::CommitterKey
linear_combinations
impl IntoIterator<Item = &'a LinearCombination<F>>
polynomials
impl IntoIterator<Item = &'a LabeledPolynomial<'a, F>>
commitments
impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>
query_set
&QuerySet<F>
opening_challenge
F
rands
impl IntoIterator<Item = &'a Self::Randomness>
rng
Option<&mut dyn RngCore>
ck
&Self::CommitterKey
linear_combinations
impl IntoIterator<Item = &'a LinearCombination<F>>
polynomials
impl IntoIterator<Item = &'a LabeledPolynomial<'a, F>>
commitments
impl IntoIterator<Item = &'a LabeledCommitment<Self::Commitment>>
query_set
&QuerySet<F>
opening_challenge
F
rands
impl IntoIterator<Item = &'a Self::Randomness>
rng
Option<&mut dyn RngCore>