@@ -134,7 +134,7 @@ pub fn challenge_polynomial_checked<F: FieldWitness>(
134
134
}
135
135
136
136
/// Note: Outdated URL
137
- /// Note: Same as `to_absorption_sequence`
137
+ /// Note: Different than `to_absorption_sequence`
138
138
/// https://github.com/MinaProtocol/mina/blob/4af0c229548bc96d76678f11b6842999de5d3b0b/src/lib/pickles_types/plonk_types.ml#L611
139
139
pub fn proof_evaluation_to_list < F : FieldWitness > (
140
140
e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
@@ -211,6 +211,86 @@ pub fn proof_evaluation_to_list<F: FieldWitness>(
211
211
list
212
212
}
213
213
214
+ pub fn proof_evaluation_to_absorption_sequence < F : FieldWitness > (
215
+ e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
216
+ ) -> Vec < & PointEvaluations < Vec < F > > > {
217
+ let ProofEvaluations {
218
+ public : _,
219
+ w,
220
+ coefficients,
221
+ z,
222
+ s,
223
+ generic_selector,
224
+ poseidon_selector,
225
+ complete_add_selector,
226
+ mul_selector,
227
+ emul_selector,
228
+ endomul_scalar_selector,
229
+ range_check0_selector,
230
+ range_check1_selector,
231
+ foreign_field_add_selector,
232
+ foreign_field_mul_selector,
233
+ xor_selector,
234
+ rot_selector,
235
+ lookup_aggregation,
236
+ lookup_table,
237
+ lookup_sorted,
238
+ runtime_lookup_table,
239
+ runtime_lookup_table_selector,
240
+ xor_lookup_selector,
241
+ lookup_gate_lookup_selector,
242
+ range_check_lookup_selector,
243
+ foreign_field_mul_lookup_selector,
244
+ } = e;
245
+
246
+ let mut list = vec ! [
247
+ z,
248
+ generic_selector,
249
+ poseidon_selector,
250
+ complete_add_selector,
251
+ mul_selector,
252
+ emul_selector,
253
+ endomul_scalar_selector,
254
+ ] ;
255
+
256
+ list. extend ( w. iter ( ) ) ;
257
+ list. extend ( coefficients. iter ( ) ) ;
258
+ list. extend ( s. iter ( ) ) ;
259
+
260
+ list. extend (
261
+ [
262
+ range_check0_selector,
263
+ range_check1_selector,
264
+ foreign_field_add_selector,
265
+ foreign_field_mul_selector,
266
+ xor_selector,
267
+ rot_selector,
268
+ lookup_aggregation,
269
+ lookup_table,
270
+ ]
271
+ . into_iter ( )
272
+ . filter_map ( |v| v. as_ref ( ) ) ,
273
+ ) ;
274
+
275
+ list. extend ( lookup_sorted. iter ( ) . filter_map ( |v| v. as_ref ( ) ) ) ;
276
+
277
+ list. extend (
278
+ [
279
+ runtime_lookup_table,
280
+ runtime_lookup_table_selector,
281
+ xor_lookup_selector,
282
+ lookup_gate_lookup_selector,
283
+ range_check_lookup_selector,
284
+ foreign_field_mul_lookup_selector,
285
+ ]
286
+ . into_iter ( )
287
+ . filter_map ( |v| v. as_ref ( ) ) ,
288
+ ) ;
289
+
290
+ #[ allow( clippy:: iter_cloned_collect) ]
291
+ list. iter ( ) . cloned ( ) . collect ( )
292
+ }
293
+
214
294
/// https://github.com/MinaProtocol/mina/blob/4af0c229548bc96d76678f11b6842999de5d3b0b/src/lib/pickles_types/plonk_types.ml#L611
215
295
pub fn proof_evaluation_to_list_opt < F : FieldWitness > (
216
296
e : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
@@ -312,7 +392,98 @@ pub fn to_absorption_sequence_opt<F: FieldWitness>(
312
392
evals : & ProofEvaluations < PointEvaluations < Vec < F > > > ,
313
393
hack_feature_flags : OptFlag ,
314
394
) -> Vec < Opt < PointEvaluations < Vec < F > > > > {
315
- proof_evaluation_to_list_opt ( evals, hack_feature_flags)
395
+ let ProofEvaluations {
396
+ public : _,
397
+ w,
398
+ coefficients,
399
+ z,
400
+ s,
401
+ generic_selector,
402
+ poseidon_selector,
403
+ complete_add_selector,
404
+ mul_selector,
405
+ emul_selector,
406
+ endomul_scalar_selector,
407
+ range_check0_selector,
408
+ range_check1_selector,
409
+ foreign_field_add_selector,
410
+ foreign_field_mul_selector,
411
+ xor_selector,
412
+ rot_selector,
413
+ lookup_aggregation,
414
+ lookup_table,
415
+ lookup_sorted,
416
+ runtime_lookup_table,
417
+ runtime_lookup_table_selector,
418
+ xor_lookup_selector,
419
+ lookup_gate_lookup_selector,
420
+ range_check_lookup_selector,
421
+ foreign_field_mul_lookup_selector,
422
+ } = evals;
423
+
424
+ let mut list = vec ! [
425
+ Opt :: Some ( z. clone( ) ) ,
426
+ Opt :: Some ( generic_selector. clone( ) ) ,
427
+ Opt :: Some ( poseidon_selector. clone( ) ) ,
428
+ Opt :: Some ( complete_add_selector. clone( ) ) ,
429
+ Opt :: Some ( mul_selector. clone( ) ) ,
430
+ Opt :: Some ( emul_selector. clone( ) ) ,
431
+ Opt :: Some ( endomul_scalar_selector. clone( ) ) ,
432
+ ] ;
433
+
434
+ list. extend ( w. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
435
+ list. extend ( coefficients. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
436
+ list. extend ( s. iter ( ) . cloned ( ) . map ( Opt :: Some ) ) ;
437
+
438
+ let zero = || PointEvaluations {
439
+ zeta : vec ! [ F :: zero( ) ] ,
440
+ zeta_omega : vec ! [ F :: zero( ) ] ,
441
+ } ;
442
+ let to_opt = |v : & Option < PointEvaluations < Vec < F > > > | {
443
+ if let OptFlag :: Maybe = hack_feature_flags {
444
+ match v {
445
+ Some ( v) => Opt :: Maybe ( Boolean :: True , v. clone ( ) ) ,
446
+ None => Opt :: Maybe ( Boolean :: False , zero ( ) ) ,
447
+ }
448
+ } else {
449
+ match v {
450
+ Some ( v) => Opt :: Some ( v. clone ( ) ) ,
451
+ None => Opt :: No ,
452
+ }
453
+ }
454
+ } ;
455
+
456
+ list. extend (
457
+ [
458
+ range_check0_selector,
459
+ range_check1_selector,
460
+ foreign_field_add_selector,
461
+ foreign_field_mul_selector,
462
+ xor_selector,
463
+ rot_selector,
464
+ lookup_aggregation,
465
+ lookup_table,
466
+ ]
467
+ . iter ( )
468
+ . map ( |e| to_opt ( e) ) ,
469
+ ) ;
470
+
471
+ list. extend ( lookup_sorted. iter ( ) . map ( to_opt) ) ;
472
+
473
+ list. extend (
474
+ [
475
+ runtime_lookup_table,
476
+ runtime_lookup_table_selector,
477
+ xor_lookup_selector,
478
+ lookup_gate_lookup_selector,
479
+ range_check_lookup_selector,
480
+ foreign_field_mul_lookup_selector,
481
+ ]
482
+ . into_iter ( )
483
+ . map ( to_opt) ,
484
+ ) ;
485
+
486
+ list
316
487
}
317
488
318
489
pub fn sha256_sum ( s : & [ u8 ] ) -> String {
0 commit comments