Skip to content

Commit 140f21e

Browse files
committed
use explicit names for dot_product AIR (instead of basic integers)
1 parent be06151 commit 140f21e

File tree

2 files changed

+43
-25
lines changed

2 files changed

+43
-25
lines changed

crates/lean_prover/src/prove_execution.rs

Lines changed: 29 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -102,15 +102,17 @@ pub fn prove_execution(
102102
let (dot_product_columns, dot_product_padding_len) =
103103
build_dot_product_columns(&dot_products, 1 << LOG_MIN_DOT_PRODUCT_ROWS);
104104

105-
let dot_product_flags: Vec<PF<EF>> = field_slice_as_base(&dot_product_columns[0]).unwrap();
106-
let dot_product_lengths: Vec<PF<EF>> = field_slice_as_base(&dot_product_columns[1]).unwrap();
105+
let dot_product_flags: Vec<PF<EF>> =
106+
field_slice_as_base(&dot_product_columns[DOT_PRODUCT_AIR_COL_START_FLAG]).unwrap();
107+
let dot_product_lengths: Vec<PF<EF>> =
108+
field_slice_as_base(&dot_product_columns[DOT_PRODUCT_AIR_COL_LEN]).unwrap();
107109

108-
let dot_product_computations: &[EF] = &dot_product_columns[8];
110+
let dot_product_computations: &[EF] = &dot_product_columns[DOT_PRODUCT_AIR_COL_COMPUTATION];
109111
let dot_product_computations_base =
110112
transpose_slice_to_basis_coefficients::<F, EF>(dot_product_computations);
111113

112-
let n_rows_table_dot_products = dot_product_columns[0].len() - dot_product_padding_len;
113-
let log_n_rows_dot_product_table = log2_strict_usize(dot_product_columns[0].len());
114+
let n_rows_table_dot_products = dot_product_flags.len() - dot_product_padding_len;
115+
let log_n_rows_dot_product_table = log2_strict_usize(dot_product_flags.len());
114116

115117
let mut prover_state = build_prover_state::<EF>();
116118
prover_state.add_base_scalars(
@@ -672,9 +674,15 @@ pub fn prove_execution(
672674
assert!(dot_product_table_length.is_power_of_two());
673675
let mut dot_product_indexes_spread = vec![F::zero_vec(dot_product_table_length * 4); DIMENSION];
674676
for i in 0..dot_product_table_length {
675-
let index_a: F = dot_product_columns[2][i].as_base().unwrap();
676-
let index_b: F = dot_product_columns[3][i].as_base().unwrap();
677-
let index_res: F = dot_product_columns[4][i].as_base().unwrap();
677+
let index_a: F = dot_product_columns[DOT_PRODUCT_AIR_COL_INDEX_A][i]
678+
.as_base()
679+
.unwrap();
680+
let index_b: F = dot_product_columns[DOT_PRODUCT_AIR_COL_INDEX_B][i]
681+
.as_base()
682+
.unwrap();
683+
let index_res: F = dot_product_columns[DOT_PRODUCT_AIR_COL_INDEX_RES][i]
684+
.as_base()
685+
.unwrap();
678686
for (j, column) in dot_product_indexes_spread.iter_mut().enumerate() {
679687
column[i] = index_a + F::from_usize(j);
680688
column[i + dot_product_table_length] = index_b + F::from_usize(j);
@@ -693,9 +701,9 @@ pub fn prove_execution(
693701

694702
let dot_product_values_mixing_challenges = MultilinearPoint(prover_state.sample_vec(2));
695703
let dot_product_values_mixed = [
696-
dot_product_evals_to_prove[5],
697-
dot_product_evals_to_prove[6],
698-
dot_product_evals_to_prove[7],
704+
dot_product_evals_to_prove[DOT_PRODUCT_AIR_COL_VALUE_A],
705+
dot_product_evals_to_prove[DOT_PRODUCT_AIR_COL_VALUE_B],
706+
dot_product_evals_to_prove[DOT_PRODUCT_AIR_COL_RES],
699707
EF::ZERO,
700708
]
701709
.evaluate(&dot_product_values_mixing_challenges);
@@ -1126,28 +1134,28 @@ pub fn prove_execution(
11261134
p24_cubes_statements,
11271135
vec![
11281136
vec![
1129-
dot_product_air_statement(0),
1137+
dot_product_air_statement(DOT_PRODUCT_AIR_COL_START_FLAG),
11301138
grand_product_dot_product_flag_statement,
1131-
], // dot product: (start) flag
1139+
],
11321140
vec![
1133-
dot_product_air_statement(1),
1141+
dot_product_air_statement(DOT_PRODUCT_AIR_COL_LEN),
11341142
grand_product_dot_product_len_statement,
1135-
], // dot product: length
1143+
],
11361144
vec![
1137-
dot_product_air_statement(2),
1145+
dot_product_air_statement(DOT_PRODUCT_AIR_COL_INDEX_A),
11381146
dot_product_logup_star_indexes_statement_a,
11391147
grand_product_dot_product_table_indexes_statement_index_a,
1140-
], // dot product: index a
1148+
],
11411149
vec![
1142-
dot_product_air_statement(3),
1150+
dot_product_air_statement(DOT_PRODUCT_AIR_COL_INDEX_B),
11431151
dot_product_logup_star_indexes_statement_b,
11441152
grand_product_dot_product_table_indexes_statement_index_b,
1145-
], // dot product: index b
1153+
],
11461154
vec![
1147-
dot_product_air_statement(4),
1155+
dot_product_air_statement(DOT_PRODUCT_AIR_COL_INDEX_RES),
11481156
dot_product_logup_star_indexes_statement_res,
11491157
grand_product_dot_product_table_indexes_statement_index_res,
1150-
], // dot product: index res
1158+
],
11511159
],
11521160
dot_product_computation_column_statements,
11531161
]

crates/lean_prover/vm_air/src/dot_product_air.rs

Lines changed: 14 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,24 @@ use p3_matrix::Matrix;
2121
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
2222
*/
2323

24-
const DOT_PRODUCT_AIR_COLUMNS: usize = 9;
24+
pub const DOT_PRODUCT_AIR_COL_START_FLAG: usize = 0;
25+
pub const DOT_PRODUCT_AIR_COL_LEN: usize = 1;
26+
pub const DOT_PRODUCT_AIR_COL_INDEX_A: usize = 2;
27+
pub const DOT_PRODUCT_AIR_COL_INDEX_B: usize = 3;
28+
pub const DOT_PRODUCT_AIR_COL_INDEX_RES: usize = 4;
29+
pub const DOT_PRODUCT_AIR_COL_VALUE_A: usize = 5;
30+
pub const DOT_PRODUCT_AIR_COL_VALUE_B: usize = 6;
31+
pub const DOT_PRODUCT_AIR_COL_RES: usize = 7;
32+
pub const DOT_PRODUCT_AIR_COL_COMPUTATION: usize = 8;
33+
34+
pub const DOT_PRODUCT_AIR_N_COLUMNS: usize = 9;
2535

2636
#[derive(Debug)]
2737
pub struct DotProductAir;
2838

2939
impl<F> BaseAir<F> for DotProductAir {
3040
fn width(&self) -> usize {
31-
DOT_PRODUCT_AIR_COLUMNS
41+
DOT_PRODUCT_AIR_N_COLUMNS
3242
}
3343
fn structured(&self) -> bool {
3444
true
@@ -44,10 +54,10 @@ impl<AB: AirBuilder> Air<AB> for DotProductAir {
4454
let main = builder.main();
4555
let up = main.row_slice(0).unwrap();
4656
let up: &[AB::Var] = (*up).borrow();
47-
assert_eq!(up.len(), DOT_PRODUCT_AIR_COLUMNS);
57+
assert_eq!(up.len(), DOT_PRODUCT_AIR_N_COLUMNS);
4858
let down = main.row_slice(1).unwrap();
4959
let down: &[AB::Var] = (*down).borrow();
50-
assert_eq!(down.len(), DOT_PRODUCT_AIR_COLUMNS);
60+
assert_eq!(down.len(), DOT_PRODUCT_AIR_N_COLUMNS);
5161

5262
let [
5363
start_flag_up,

0 commit comments

Comments
 (0)