@@ -366,12 +366,15 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
366366 )
367367 . eval ( builder, prod_row) ;
368368
369- // TODO: reduce the degree
370- // builder.when(prod_row * within_round_limit).assert_eq(
371- // prod_row_specific.data_ptr,
372- // (prod_nested_len * (curr_prod_n - AB::F::ONE) + prod_spec_inner_inner_len * round)
373- // * AB::F::from_canonical_usize(EXT_DEG),
374- // );
369+ // prod_row * within_round_limit =
370+ // prod_in_round_evaluation + prod_next_round_evaluation
371+ builder
372+ . when ( prod_in_round_evaluation + prod_next_round_evaluation)
373+ . assert_eq (
374+ prod_row_specific. data_ptr ,
375+ ( prod_nested_len * ( curr_prod_n - AB :: F :: ONE ) + prod_spec_inner_inner_len * round)
376+ * AB :: F :: from_canonical_usize ( EXT_DEG ) ,
377+ ) ;
375378 builder. assert_eq (
376379 prod_row * within_round_limit * in_round,
377380 prod_in_round_evaluation,
@@ -466,12 +469,16 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
466469 )
467470 . eval ( builder, logup_row) ;
468471
469- // TODO: reduce the degree
470- // builder.when(logup_row * within_round_limit).assert_eq(
471- // logup_row_specific.data_ptr,
472- // (logup_nested_len * (curr_logup_n - AB::F::ONE) + logup_spec_inner_inner_len * round)
473- // * AB::F::from_canonical_usize(EXT_DEG),
474- // );
472+ // logup_row * within_round_limit =
473+ // logup_in_round_evaluation + logup_next_round_evaluation
474+ builder
475+ . when ( logup_in_round_evaluation + logup_next_round_evaluation)
476+ . assert_eq (
477+ logup_row_specific. data_ptr ,
478+ ( logup_nested_len * ( curr_logup_n - AB :: F :: ONE )
479+ + logup_spec_inner_inner_len * round)
480+ * AB :: F :: from_canonical_usize ( EXT_DEG ) ,
481+ ) ;
475482 builder. assert_eq (
476483 logup_row * within_round_limit * in_round,
477484 logup_in_round_evaluation,
0 commit comments