Skip to content

Commit c7e9a8b

Browse files
committed
wip15
1 parent 67896e7 commit c7e9a8b

File tree

2 files changed

+33
-19
lines changed

2 files changed

+33
-19
lines changed

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

Lines changed: 15 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -244,12 +244,11 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
244244
);
245245

246246
// Termination condition
247-
// TODO: enable this
248-
// assert_array_eq(
249-
// &mut builder.when::<AB::Expr>(is_end.into()),
250-
// eval_acc,
251-
// [AB::F::ZERO; 4],
252-
// );
247+
assert_array_eq(
248+
&mut builder.when::<AB::Expr>(is_end.into()),
249+
eval_acc,
250+
[AB::F::ZERO; 4],
251+
);
253252

254253
// Randomness transition
255254
assert_array_eq(
@@ -439,12 +438,11 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
439438
prod_row_specific.eval_rlc,
440439
eval_rlc,
441440
);
442-
// TODO: enable this
443-
// assert_array_eq::<_, _, _, { EXT_DEG }>(
444-
// &mut builder.when(next.prod_acc),
445-
// FieldExtension::add(next.eval_acc, next_prod_row_specific.eval_rlc),
446-
// eval_acc,
447-
// );
441+
assert_array_eq::<_, _, _, { EXT_DEG }>(
442+
&mut builder.when(next.prod_acc),
443+
FieldExtension::add(next.eval_acc, next_prod_row_specific.eval_rlc),
444+
eval_acc,
445+
);
448446

449447
///////////////////////////////////////
450448
// Logup spec evaluation
@@ -587,11 +585,10 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
587585

588586
// Accumulate into global accumulator `eval_acc`
589587
// when round < max_round - 2
590-
// TODO: enable this
591-
// assert_array_eq::<_, _, _, { EXT_DEG }>(
592-
// &mut builder.when(next.logup_acc),
593-
// FieldExtension::add(next.eval_acc, next_logup_row_specfic.eval_rlc),
594-
// eval_acc,
595-
// );
588+
assert_array_eq::<_, _, _, { EXT_DEG }>(
589+
&mut builder.when(next.logup_acc),
590+
FieldExtension::add(next.eval_acc, next_logup_row_specfic.eval_rlc),
591+
eval_acc,
592+
);
596593
}
597594
}

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

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -452,7 +452,6 @@ where
452452

453453
let head_row = &mut rows[0];
454454
head_row.last_timestamp = F::from_canonical_u32(cur_timestamp + 1);
455-
head_row.eval_acc = eval_acc;
456455

457456
let head_specific: &mut HeaderSpecificCols<F> =
458457
head_row.specific[..HeaderSpecificCols::<F>::width()].borrow_mut();
@@ -464,6 +463,24 @@ where
464463
&mut head_specific.write_records,
465464
);
466465

466+
for row in rows.iter_mut() {
467+
if row.header_row == F::ONE {
468+
row.eval_acc = eval_acc;
469+
} else if row.prod_row == F::ONE {
470+
let specific: &mut ProdSpecificCols<F> =
471+
row.specific[..ProdSpecificCols::<F>::width()].borrow_mut();
472+
473+
eval_acc = FieldExtension::subtract(eval_acc, specific.eval_rlc);
474+
row.eval_acc = eval_acc;
475+
} else if row.logup_row == F::ONE {
476+
let specific: &mut LogupSpecificCols<F> =
477+
row.specific[..LogupSpecificCols::<F>::width()].borrow_mut();
478+
eval_acc = FieldExtension::subtract(eval_acc, specific.eval_rlc);
479+
row.eval_acc = eval_acc;
480+
}
481+
}
482+
assert_eq!(eval_acc, elem_to_ext(F::from_canonical_u32(0)),);
483+
467484
*state.pc = state.pc.wrapping_add(DEFAULT_PC_STEP);
468485
Ok(())
469486
}

0 commit comments

Comments
 (0)