Skip to content

Commit 1249265

Browse files
authored
max_width = 120 (#91)
Co-authored-by: Tom Wambsgans <[email protected]>
1 parent 79d5f89 commit 1249265

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

75 files changed

+775
-2325
lines changed

crates/air/src/prove.rs

Lines changed: 11 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -44,12 +44,7 @@ where
4444

4545
*extra_data.alpha_powers_mut() = alpha
4646
.powers()
47-
.take(
48-
air.n_constraints()
49-
+ virtual_column_statements
50-
.as_ref()
51-
.map_or(0, |s| s.values.len()),
52-
)
47+
.take(air.n_constraints() + virtual_column_statements.as_ref().map_or(0, |s| s.values.len()))
5348
.collect();
5449

5550
let n_sc_rounds = log_n_rows + 1 - univariate_skips;
@@ -64,9 +59,7 @@ where
6459
.down_column_indexes_f()
6560
.par_iter()
6661
.zip_eq(last_row_shifted_f)
67-
.map(|(&col_index, &final_value)| {
68-
column_shifted(columns_f[col_index], final_value.as_base().unwrap())
69-
})
62+
.map(|(&col_index, &final_value)| column_shifted(columns_f[col_index], final_value.as_base().unwrap()))
7063
.collect::<Vec<_>>();
7164
let shifted_rows_ef = air
7265
.down_column_indexes_ef()
@@ -81,10 +74,8 @@ where
8174
let mut columns_up_down_ef = columns_ef.to_vec(); // orginal columns, followed by shifted ones
8275
columns_up_down_ef.extend(shifted_rows_ef.iter().map(Vec::as_slice));
8376

84-
let columns_up_down_group_f: MleGroupRef<'_, EF> =
85-
MleGroupRef::<'_, EF>::Base(columns_up_down_f);
86-
let columns_up_down_group_ef: MleGroupRef<'_, EF> =
87-
MleGroupRef::<'_, EF>::Extension(columns_up_down_ef);
77+
let columns_up_down_group_f: MleGroupRef<'_, EF> = MleGroupRef::<'_, EF>::Base(columns_up_down_f);
78+
let columns_up_down_group_ef: MleGroupRef<'_, EF> = MleGroupRef::<'_, EF>::Extension(columns_up_down_ef);
8879

8980
let columns_up_down_group_f_packed = columns_up_down_group_f.pack();
9081
let columns_up_down_group_ef_packed = columns_up_down_group_ef.pack();
@@ -130,10 +121,8 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
130121
columns_ef: &[&[EF]],
131122
outer_sumcheck_challenge: &[EF],
132123
) -> (MultilinearPoint<EF>, Vec<EF>, Vec<EF>) {
133-
let n_up_down_columns = columns_f.len()
134-
+ columns_ef.len()
135-
+ columns_with_shift_f.len()
136-
+ columns_with_shift_ef.len();
124+
let n_up_down_columns =
125+
columns_f.len() + columns_ef.len() + columns_with_shift_f.len() + columns_with_shift_ef.len();
137126
let batching_scalars = prover_state.sample_vec(log2_ceil_usize(n_up_down_columns));
138127

139128
let eval_eq_batching_scalars = eval_eq(&batching_scalars)[..n_up_down_columns].to_vec();
@@ -153,31 +142,23 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
153142
});
154143
}
155144

156-
let columns_shifted_f = &columns_with_shift_f
157-
.iter()
158-
.map(|&i| columns_f[i])
159-
.collect::<Vec<_>>();
160-
let columns_shifted_ef = &columns_with_shift_ef
161-
.iter()
162-
.map(|&i| columns_ef[i])
163-
.collect::<Vec<_>>();
145+
let columns_shifted_f = &columns_with_shift_f.iter().map(|&i| columns_f[i]).collect::<Vec<_>>();
146+
let columns_shifted_ef = &columns_with_shift_ef.iter().map(|&i| columns_ef[i]).collect::<Vec<_>>();
164147

165148
let mut batched_column_down = if columns_shifted_f.is_empty() {
166149
tracing::warn!("TODO optimize open_columns when no shifted F columns");
167150
vec![EF::ZERO; batched_column_up.len()]
168151
} else {
169152
multilinears_linear_combination(
170153
columns_shifted_f,
171-
&eval_eq_batching_scalars[columns_f.len() + columns_ef.len()..]
172-
[..columns_shifted_f.len()],
154+
&eval_eq_batching_scalars[columns_f.len() + columns_ef.len()..][..columns_shifted_f.len()],
173155
)
174156
};
175157

176158
if !columns_shifted_ef.is_empty() {
177159
let batched_column_down_ef = multilinears_linear_combination(
178160
columns_shifted_ef,
179-
&eval_eq_batching_scalars
180-
[columns_f.len() + columns_ef.len() + columns_shifted_f.len()..],
161+
&eval_eq_batching_scalars[columns_f.len() + columns_ef.len() + columns_shifted_f.len()..],
181162
);
182163
batched_column_down
183164
.par_iter_mut()
@@ -277,12 +258,7 @@ impl<EF: ExtensionField<PF<EF>>> SumcheckComputation<EF> for MySumcheck {
277258
point[0] * point[1] + point[2] * point[3]
278259
}
279260
#[inline(always)]
280-
fn eval_packed_base(
281-
&self,
282-
_: &[PFPacking<EF>],
283-
_: &[EFPacking<EF>],
284-
_: &Self::ExtraData,
285-
) -> EFPacking<EF> {
261+
fn eval_packed_base(&self, _: &[PFPacking<EF>], _: &[EFPacking<EF>], _: &Self::ExtraData) -> EFPacking<EF> {
286262
unreachable!()
287263
}
288264
#[inline(always)]

crates/air/src/uni_skip_utils.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ pub fn matrix_next_mle_folded<F: ExtensionField<PF<F>>>(outer_challenges: &[F])
66
let n = outer_challenges.len();
77
let mut res = F::zero_vec(1 << n);
88
for k in 0..n {
9-
let outer_challenges_prod = (F::ONE - outer_challenges[n - k - 1])
10-
* outer_challenges[n - k..].iter().copied().product::<F>();
9+
let outer_challenges_prod =
10+
(F::ONE - outer_challenges[n - k - 1]) * outer_challenges[n - k..].iter().copied().product::<F>();
1111
let mut eq_mle = eval_eq_scaled(&outer_challenges[0..n - k - 1], outer_challenges_prod);
1212
for (mut i, v) in eq_mle.iter_mut().enumerate() {
1313
i <<= k + 1;
@@ -36,10 +36,7 @@ mod tests {
3636
for y in 0..1 << n_vars {
3737
let y_bools = to_big_endian_in_field::<F>(y, n_vars);
3838
let expected = F::from_bool(x + 1 == y);
39-
assert_eq!(
40-
matrix.evaluate(&MultilinearPoint(y_bools.clone())),
41-
expected
42-
);
39+
assert_eq!(matrix.evaluate(&MultilinearPoint(y_bools.clone())), expected);
4340
assert_eq!(next_mle(&[x_bools.clone(), y_bools].concat()), expected);
4441
}
4542
}

crates/air/src/utils.rs

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,7 @@ use multilinear_toolkit::prelude::*;
3636
/// Field element: 1 if y = x + 1, 0 otherwise.
3737
pub(crate) fn next_mle<F: Field>(point: &[F]) -> F {
3838
// Check that the point length is even: we split into x and y of equal length.
39-
assert_eq!(
40-
point.len() % 2,
41-
0,
42-
"Input point must have an even number of variables."
43-
);
39+
assert_eq!(point.len() % 2, 0, "Input point must have an even number of variables.");
4440
let n = point.len() / 2;
4541

4642
// Split point into x (first n) and y (last n).
@@ -56,9 +52,7 @@ pub(crate) fn next_mle<F: Field>(point: &[F]) -> F {
5652
//
5753
// Indices are reversed because bits are big-endian.
5854
let eq_high_bits = (k + 1..n)
59-
.map(|i| {
60-
x[n - 1 - i] * y[n - 1 - i] + (F::ONE - x[n - 1 - i]) * (F::ONE - y[n - 1 - i])
61-
})
55+
.map(|i| x[n - 1 - i] * y[n - 1 - i] + (F::ONE - x[n - 1 - i]) * (F::ONE - y[n - 1 - i]))
6256
.product::<F>();
6357

6458
// Term 2: carry bit at position k
@@ -71,9 +65,7 @@ pub(crate) fn next_mle<F: Field>(point: &[F]) -> F {
7165
//
7266
// For i < k, enforce x_i = 1 and y_i = 0.
7367
// Condition: x_i * (1 - y_i).
74-
let low_bits_are_one_zero = (0..k)
75-
.map(|i| x[n - 1 - i] * (F::ONE - y[n - 1 - i]))
76-
.product::<F>();
68+
let low_bits_are_one_zero = (0..k).map(|i| x[n - 1 - i] * (F::ONE - y[n - 1 - i])).product::<F>();
7769

7870
// Multiply the three terms for this k, representing one "carry pattern".
7971
eq_high_bits * carry_bit * low_bits_are_one_zero

crates/air/src/verify.rs

Lines changed: 19 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -23,12 +23,7 @@ where
2323

2424
*extra_data.alpha_powers_mut() = alpha
2525
.powers()
26-
.take(
27-
air.n_constraints()
28-
+ virtual_column_statements
29-
.as_ref()
30-
.map_or(0, |s| s.values.len()),
31-
)
26+
.take(air.n_constraints() + virtual_column_statements.as_ref().map_or(0, |s| s.values.len()))
3227
.collect();
3328

3429
let n_sc_rounds = log_n_rows + 1 - univariate_skips;
@@ -38,12 +33,8 @@ where
3833
.unwrap_or_else(|| verifier_state.sample_vec(n_sc_rounds));
3934
assert_eq!(zerocheck_challenges.len(), n_sc_rounds);
4035

41-
let (sc_sum, outer_statement) = sumcheck_verify_with_univariate_skip::<EF>(
42-
verifier_state,
43-
air.degree() + 1,
44-
log_n_rows,
45-
univariate_skips,
46-
)?;
36+
let (sc_sum, outer_statement) =
37+
sumcheck_verify_with_univariate_skip::<EF>(verifier_state, air.degree() + 1, log_n_rows, univariate_skips)?;
4738
if sc_sum
4839
!= virtual_column_statements
4940
.as_ref()
@@ -59,9 +50,7 @@ where
5950
.collect::<Vec<_>>();
6051

6152
let mut inner_sums = verifier_state.next_extension_scalars_vec(
62-
air.n_columns_air()
63-
+ air.down_column_indexes_f().len()
64-
+ air.down_column_indexes_ef().len(),
53+
air.n_columns_air() + air.down_column_indexes_f().len() + air.down_column_indexes_ef().len(),
6554
)?;
6655

6756
let n_columns_down_f = air.down_column_indexes_f().len();
@@ -72,11 +61,7 @@ where
7261
&extra_data,
7362
);
7463

75-
if eq_poly_with_skip(
76-
&zerocheck_challenges,
77-
&outer_statement.point,
78-
univariate_skips,
79-
) * constraint_evals
64+
if eq_poly_with_skip(&zerocheck_challenges, &outer_statement.point, univariate_skips) * constraint_evals
8065
!= outer_statement.value
8166
{
8267
return Err(ProofError::InvalidProof);
@@ -128,14 +113,8 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
128113
evals_up_and_down.len()
129114
);
130115
let last_row_selector = outer_selector_evals[(1 << univariate_skips) - 1]
131-
* outer_sumcheck_challenge
132-
.point
133-
.iter()
134-
.copied()
135-
.product::<EF>();
136-
for (&last_row_value, down_col_eval) in
137-
last_row_f.iter().zip(&mut evals_up_and_down[n_columns..])
138-
{
116+
* outer_sumcheck_challenge.point.iter().copied().product::<EF>();
117+
for (&last_row_value, down_col_eval) in last_row_f.iter().zip(&mut evals_up_and_down[n_columns..]) {
139118
*down_col_eval -= last_row_selector * last_row_value;
140119
}
141120
for (&last_row_value, down_col_eval) in last_row_ef
@@ -145,23 +124,20 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
145124
*down_col_eval -= last_row_selector * last_row_value;
146125
}
147126

148-
let batching_scalars = verifier_state.sample_vec(log2_ceil_usize(
149-
n_columns + last_row_f.len() + last_row_ef.len(),
150-
));
127+
let batching_scalars = verifier_state.sample_vec(log2_ceil_usize(n_columns + last_row_f.len() + last_row_ef.len()));
151128

152129
let eval_eq_batching_scalars = eval_eq(&batching_scalars);
153130
let batching_scalars_up = &eval_eq_batching_scalars[..n_columns];
154131
let batching_scalars_down = &eval_eq_batching_scalars[n_columns..];
155132

156133
let sub_evals = verifier_state.next_extension_scalars_vec(1 << univariate_skips)?;
157134

158-
if dot_product::<EF, _, _>(
159-
sub_evals.iter().copied(),
160-
outer_selector_evals.iter().copied(),
161-
) != dot_product::<EF, _, _>(
162-
evals_up_and_down.iter().copied(),
163-
eval_eq_batching_scalars.iter().copied(),
164-
) {
135+
if dot_product::<EF, _, _>(sub_evals.iter().copied(), outer_selector_evals.iter().copied())
136+
!= dot_product::<EF, _, _>(
137+
evals_up_and_down.iter().copied(),
138+
eval_eq_batching_scalars.iter().copied(),
139+
)
140+
{
165141
return Err(ProofError::InvalidProof);
166142
}
167143

@@ -173,9 +149,8 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
173149
return Err(ProofError::InvalidProof);
174150
}
175151

176-
let matrix_up_sc_eval =
177-
MultilinearPoint([epsilons.0.clone(), outer_sumcheck_challenge.point.0.clone()].concat())
178-
.eq_poly_outside(&inner_sumcheck_stement.point);
152+
let matrix_up_sc_eval = MultilinearPoint([epsilons.0.clone(), outer_sumcheck_challenge.point.0.clone()].concat())
153+
.eq_poly_outside(&inner_sumcheck_stement.point);
179154
let matrix_down_sc_eval = next_mle(
180155
&[
181156
epsilons.0,
@@ -185,10 +160,8 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
185160
.concat(),
186161
);
187162

188-
let evaluations_remaining_to_verify_f =
189-
verifier_state.next_extension_scalars_vec(n_columns_f)?;
190-
let evaluations_remaining_to_verify_ef =
191-
verifier_state.next_extension_scalars_vec(n_columns_ef)?;
163+
let evaluations_remaining_to_verify_f = verifier_state.next_extension_scalars_vec(n_columns_f)?;
164+
let evaluations_remaining_to_verify_ef = verifier_state.next_extension_scalars_vec(n_columns_ef)?;
192165
let evaluations_remaining_to_verify = [
193166
evaluations_remaining_to_verify_f.clone(),
194167
evaluations_remaining_to_verify_ef.clone(),
@@ -211,8 +184,7 @@ fn open_columns<EF: ExtensionField<PF<EF>>>(
211184
.sum::<EF>();
212185

213186
if inner_sumcheck_stement.value
214-
!= matrix_up_sc_eval * batched_col_up_sc_eval
215-
+ matrix_down_sc_eval * batched_col_down_sc_eval
187+
!= matrix_up_sc_eval * batched_col_up_sc_eval + matrix_down_sc_eval * batched_col_down_sc_eval
216188
{
217189
return Err(ProofError::InvalidProof);
218190
}

0 commit comments

Comments
 (0)