@@ -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}
0 commit comments