@@ -67,6 +67,8 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
6767 logup_row,
6868 is_end,
6969
70+ prod_continued,
71+ logup_continued,
7072 // What type of evaluation is performed
7173 // mainly for reducing constraint degree
7274 prod_in_round_evaluation,
@@ -116,6 +118,12 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
116118 let next_enabled = next. header_row + next. prod_row + next. logup_row ;
117119 builder. assert_bool ( enabled. clone ( ) ) ;
118120
121+ builder
122+ . when_transition ( )
123+ . assert_eq ( prod_row * next. prod_row , prod_continued) ;
124+ builder
125+ . when_transition ( )
126+ . assert_eq ( logup_row * next. logup_row , logup_continued) ;
119127 // TODO: handle last row properly
120128
121129 builder. when_transition ( ) . assert_eq :: < AB :: Expr , AB :: Expr > (
@@ -251,12 +259,11 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
251259 ) ;
252260 assert_array_eq :: < _ , _ , _ , { EXT_DEG } > ( & mut builder. when ( header_row) , alpha, alpha1) ;
253261 let prod_next_alpha = FieldExtension :: multiply ( alpha1, alpha) ;
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- // );
262+ assert_array_eq :: < _ , _ , _ , { EXT_DEG } > (
263+ & mut builder. when ( prod_continued) ,
264+ prod_next_alpha,
265+ next_alpha1,
266+ ) ;
260267 // alpha1 = alpha_numerator, alpha2 = alpha_denominator for logup row
261268 let alpha_denominator = FieldExtension :: multiply ( alpha1, alpha) ;
262269 assert_array_eq :: < _ , _ , _ , { EXT_DEG } > (
@@ -265,12 +272,11 @@ impl<AB: InteractionBuilder> Air<AB> for NativeSumcheckAir {
265272 alpha2,
266273 ) ;
267274 let logup_next_alpha = FieldExtension :: multiply ( alpha2, alpha) ;
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- // );
275+ assert_array_eq :: < _ , _ , _ , { EXT_DEG } > (
276+ & mut builder. when ( logup_continued) ,
277+ logup_next_alpha,
278+ next_alpha1,
279+ ) ;
274280
275281 ///////////////////////////////////////
276282 // Header
0 commit comments