Skip to content

Commit b6f9c54

Browse files
committed
wip12
1 parent d65cfde commit b6f9c54

File tree

2 files changed

+54
-44
lines changed

2 files changed

+54
-44
lines changed

extensions/native/circuit/src/sumcheck/air.rs

Lines changed: 49 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -116,14 +116,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
116116
let next_enabled = next.header_row + next.prod_row + next.logup_row;
117117
builder.assert_bool(enabled.clone());
118118

119-
builder.assert_eq::<AB::Expr, AB::Expr>(
120-
or::<AB::Expr>(
121-
or::<AB::Expr>(
122-
and(prod_row, next.header_row),
123-
and(logup_row, next.header_row),
124-
),
125-
not::<AB::Expr>(next_enabled),
126-
),
119+
// TODO: handle last row properly
120+
121+
builder.when_transition().assert_eq::<AB::Expr, AB::Expr>(
122+
prod_row * next.header_row
123+
+ logup_row * next.header_row
124+
+ not::<AB::Expr>(next_enabled),
127125
is_end.into(),
128126
);
129127

@@ -238,25 +236,27 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
238236
);
239237

240238
// Termination condition
241-
assert_array_eq(
242-
&mut builder.when::<AB::Expr>(is_end.into()),
243-
eval_acc,
244-
[AB::F::ZERO; 4],
245-
);
239+
// TODO: enable this
240+
// assert_array_eq(
241+
// &mut builder.when::<AB::Expr>(is_end.into()),
242+
// eval_acc,
243+
// [AB::F::ZERO; 4],
244+
// );
246245

247246
// Randomness transition
248247
assert_array_eq(
249-
&mut builder.when(and(header_row, or(next.prod_row, next.logup_row))),
248+
&mut builder.when(and(header_row, next.prod_row + next.logup_row)),
250249
next.challenges[0..EXT_DEG].try_into().unwrap(),
251250
[AB::F::ONE, AB::F::ZERO, AB::F::ZERO, AB::F::ZERO],
252251
);
253252
assert_array_eq::<_, _, _, { EXT_DEG }>(&mut builder.when(header_row), alpha, alpha1);
254253
let prod_next_alpha = FieldExtension::multiply(alpha1, alpha);
255-
assert_array_eq::<_, _, _, { EXT_DEG }>(
256-
&mut builder.when(and(prod_row, next.prod_row)),
257-
prod_next_alpha,
258-
next_alpha1,
259-
);
254+
// TODO: reduce the degree
255+
// assert_array_eq::<_, _, _, { EXT_DEG }>(
256+
// &mut builder.when(and(prod_row, next.prod_row)),
257+
// prod_next_alpha,
258+
// next_alpha1,
259+
// );
260260
// alpha1 = alpha_numerator, alpha2 = alpha_denominator for logup row
261261
let alpha_denominator = FieldExtension::multiply(alpha1, alpha);
262262
assert_array_eq::<_, _, _, { EXT_DEG }>(
@@ -265,11 +265,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
265265
alpha2,
266266
);
267267
let logup_next_alpha = FieldExtension::multiply(alpha2, alpha);
268-
assert_array_eq::<_, _, _, { EXT_DEG }>(
269-
&mut builder.when(and(logup_row, next.logup_row)),
270-
logup_next_alpha,
271-
next_alpha1,
272-
);
268+
// TODO: reduce the degree
269+
// assert_array_eq::<_, _, _, { EXT_DEG }>(
270+
// &mut builder.when(and(logup_row, next.logup_row)),
271+
// logup_next_alpha,
272+
// next_alpha1,
273+
// );
273274

274275
///////////////////////////////////////
275276
// Header
@@ -359,11 +360,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
359360
)
360361
.eval(builder, prod_row);
361362

362-
builder.when(prod_row * within_round_limit).assert_eq(
363-
prod_row_specific.data_ptr,
364-
(prod_nested_len * (curr_prod_n - AB::F::ONE) + prod_spec_inner_inner_len * round)
365-
* AB::F::from_canonical_usize(EXT_DEG),
366-
);
363+
// TODO: reduce the degree
364+
// builder.when(prod_row * within_round_limit).assert_eq(
365+
// prod_row_specific.data_ptr,
366+
// (prod_nested_len * (curr_prod_n - AB::F::ONE) + prod_spec_inner_inner_len * round)
367+
// * AB::F::from_canonical_usize(EXT_DEG),
368+
// );
367369
builder.assert_eq(
368370
prod_row * within_round_limit * in_round,
369371
prod_in_round_evaluation,
@@ -428,11 +430,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
428430
prod_row_specific.eval_rlc,
429431
eval_rlc,
430432
);
431-
assert_array_eq::<_, _, _, { EXT_DEG }>(
432-
&mut builder.when(next.prod_acc),
433-
FieldExtension::add(next.eval_acc, next_prod_row_specific.eval_rlc),
434-
eval_acc,
435-
);
433+
// TODO: enable this
434+
// assert_array_eq::<_, _, _, { EXT_DEG }>(
435+
// &mut builder.when(next.prod_acc),
436+
// FieldExtension::add(next.eval_acc, next_prod_row_specific.eval_rlc),
437+
// eval_acc,
438+
// );
436439

437440
///////////////////////////////////////
438441
// Logup spec evaluation
@@ -457,11 +460,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
457460
)
458461
.eval(builder, logup_row);
459462

460-
builder.when(logup_row * within_round_limit).assert_eq(
461-
logup_row_specific.data_ptr,
462-
(logup_nested_len * (curr_logup_n - AB::F::ONE) + logup_spec_inner_inner_len * round)
463-
* AB::F::from_canonical_usize(EXT_DEG),
464-
);
463+
// TODO: reduce the degree
464+
// builder.when(logup_row * within_round_limit).assert_eq(
465+
// logup_row_specific.data_ptr,
466+
// (logup_nested_len * (curr_logup_n - AB::F::ONE) + logup_spec_inner_inner_len * round)
467+
// * AB::F::from_canonical_usize(EXT_DEG),
468+
// );
465469
builder.assert_eq(
466470
logup_row * within_round_limit * in_round,
467471
logup_in_round_evaluation,
@@ -570,10 +574,11 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
570574

571575
// Accumulate into global accumulator `eval_acc`
572576
// when round < max_round - 2
573-
assert_array_eq::<_, _, _, { EXT_DEG }>(
574-
&mut builder.when(next.logup_acc),
575-
FieldExtension::add(next.eval_acc, next_logup_row_specfic.eval_rlc),
576-
eval_acc,
577-
);
577+
// TODO: enable this
578+
// assert_array_eq::<_, _, _, { EXT_DEG }>(
579+
// &mut builder.when(next.logup_acc),
580+
// FieldExtension::add(next.eval_acc, next_logup_row_specfic.eval_rlc),
581+
// eval_acc,
582+
// );
578583
}
579584
}

extensions/native/circuit/src/sumcheck/chip.rs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -217,6 +217,10 @@ where
217217
row.challenges[EXT_DEG..3 * EXT_DEG].copy_from_slice(&challenges[EXT_DEG..3 * EXT_DEG]);
218218
row.alpha = alpha;
219219
row.ctx = ctx;
220+
row.prod_nested_len =
221+
F::from_canonical_u32(prod_specs_inner_len * prod_specs_inner_inner_len);
222+
row.logup_nested_len =
223+
F::from_canonical_u32(logup_specs_inner_len * logup_specs_inner_inner_len);
220224
row.register_ptrs[0] = ctx_ptr;
221225
row.register_ptrs[1] = challenges_ptr;
222226
row.register_ptrs[2] = prod_evals_ptr;
@@ -309,6 +313,7 @@ where
309313
if mode == NEXT_LAYER_MODE && round + 1 < max_round - 1 {
310314
eval_acc = FieldExtension::add(eval_acc, eval_rlc);
311315
prod_row.should_acc = F::ONE;
316+
prod_row.prod_acc = F::ONE;
312317
prod_row.eval_acc = eval_acc;
313318
}
314319
}

0 commit comments

Comments
 (0)