@@ -518,80 +518,36 @@ pub fn prove_execution(
518518 let ( p24_air_point, p24_evals_to_prove) = info_span ! ( "Poseidon-24 AIR proof" )
519519 . in_scope ( || p24_table. prove_base ( & mut prover_state, UNIVARIATE_SKIPS , & p24_columns_ref) ) ;
520520
521- let (
522- all_poseidon_indexes,
523- folded_memory,
524- poseidon_pushforward,
525- poseidon_lookup_statements,
526- poseidon_poly_eq_point,
527- memory_folding_challenges,
528- poseidon_logup_star_alpha,
529- ) = {
530- // Poseidons 16/24 memory addresses lookup
531- let poseidon_logup_star_alpha = prover_state. sample ( ) ;
532- let memory_folding_challenges = MultilinearPoint ( prover_state. sample_vec ( LOG_VECTOR_LEN ) ) ;
533-
534- let poseidon_lookup_statements = get_poseidon_lookup_statements (
535- ( p16_air. width ( ) , p24_air. width ( ) ) ,
536- ( log_n_p16, log_n_p24) ,
537- ( & p16_evals_to_prove, & p24_evals_to_prove) ,
538- ( & p16_air_point, & p24_air_point) ,
539- & memory_folding_challenges,
540- ) ;
541-
542- let max_n_poseidons = poseidons_16
543- . len ( )
544- . max ( poseidons_24. len ( ) )
545- . next_power_of_two ( ) ;
546- let mut all_poseidon_indexes = F :: zero_vec ( 8 * max_n_poseidons) ;
547- #[ rustfmt:: skip]
548- let chunks = [
549- poseidons_16. par_iter ( ) . map ( |p| p. addr_input_a ) . collect :: < Vec < _ > > ( ) ,
550- poseidons_16. par_iter ( ) . map ( |p| p. addr_input_b ) . collect :: < Vec < _ > > ( ) ,
551- poseidons_16. par_iter ( ) . map ( |p| p. addr_output ) . collect :: < Vec < _ > > ( ) ,
552- poseidons_16. par_iter ( ) . map ( |p| p. addr_output + 1 ) . collect :: < Vec < _ > > ( ) ,
553- poseidons_24. par_iter ( ) . map ( |p| p. addr_input_a ) . collect :: < Vec < _ > > ( ) ,
554- poseidons_24. par_iter ( ) . map ( |p| p. addr_input_a + 1 ) . collect :: < Vec < _ > > ( ) ,
555- poseidons_24. par_iter ( ) . map ( |p| p. addr_input_b ) . collect :: < Vec < _ > > ( ) ,
556- poseidons_24. par_iter ( ) . map ( |p| p. addr_output ) . collect :: < Vec < _ > > ( )
557- ] ;
521+ // Poseidons 16/24 memory addresses lookup
522+ let poseidon_logup_star_alpha = prover_state. sample ( ) ;
523+ let memory_folding_challenges = MultilinearPoint ( prover_state. sample_vec ( LOG_VECTOR_LEN ) ) ;
558524
559- for ( chunk_idx, addrs) in chunks. into_iter ( ) . enumerate ( ) {
560- all_poseidon_indexes[ chunk_idx * max_n_poseidons..]
561- . par_iter_mut ( )
562- . zip ( addrs)
563- . for_each ( |( slot, addr) | {
564- * slot = F :: from_usize ( addr) ;
565- } ) ;
566- }
525+ let poseidon_lookup_statements = get_poseidon_lookup_statements (
526+ ( p16_air. width ( ) , p24_air. width ( ) ) ,
527+ ( log_n_p16, log_n_p24) ,
528+ ( & p16_evals_to_prove, & p24_evals_to_prove) ,
529+ ( & p16_air_point, & p24_air_point) ,
530+ & memory_folding_challenges,
531+ ) ;
567532
568- let poseidon_folded_memory = fold_multilinear ( & memory , & memory_folding_challenges ) ;
533+ let all_poseidon_indexes = full_poseidon_indexes_poly ( & poseidons_16 , & poseidons_24 ) ;
569534
570- let mut poseidon_poly_eq_point = EF :: zero_vec ( max_n_poseidons * 8 ) ;
571- for ( i, statement) in poseidon_lookup_statements. iter ( ) . enumerate ( ) {
572- compute_sparse_eval_eq :: < PF < EF > , EF > (
573- & statement. point ,
574- & mut poseidon_poly_eq_point,
575- poseidon_logup_star_alpha. exp_u64 ( i as u64 ) ,
576- ) ;
577- }
535+ let poseidon_folded_memory = fold_multilinear ( & memory, & memory_folding_challenges) ;
578536
579- let poseidon_pushforward = compute_pushforward (
580- & all_poseidon_indexes,
581- poseidon_folded_memory. len ( ) ,
582- & poseidon_poly_eq_point,
537+ let mut poseidon_poly_eq_point = EF :: zero_vec ( all_poseidon_indexes. len ( ) ) ;
538+ for ( i, statement) in poseidon_lookup_statements. iter ( ) . enumerate ( ) {
539+ compute_sparse_eval_eq :: < PF < EF > , EF > (
540+ & statement. point ,
541+ & mut poseidon_poly_eq_point,
542+ poseidon_logup_star_alpha. exp_u64 ( i as u64 ) ,
583543 ) ;
544+ }
584545
585- (
586- all_poseidon_indexes,
587- poseidon_folded_memory,
588- poseidon_pushforward,
589- poseidon_lookup_statements,
590- poseidon_poly_eq_point,
591- memory_folding_challenges,
592- poseidon_logup_star_alpha,
593- )
594- } ;
546+ let poseidon_pushforward = compute_pushforward (
547+ & all_poseidon_indexes,
548+ poseidon_folded_memory. len ( ) ,
549+ & poseidon_poly_eq_point,
550+ ) ;
595551
596552 let non_used_precompiles_evals = full_trace
597553 [ N_INSTRUCTION_COLUMNS_IN_AIR ..N_INSTRUCTION_COLUMNS ]
@@ -861,7 +817,7 @@ pub fn prove_execution(
861817
862818 let poseidon_logup_star_statements = prove_logup_star (
863819 & mut prover_state,
864- & folded_memory ,
820+ & poseidon_folded_memory ,
865821 & all_poseidon_indexes,
866822 poseidon_lookup_statements
867823 . iter ( )
0 commit comments