Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,7 @@
## 0.5.0 (TBD)

- Incremented MSRV to 1.89.
- Add a constant propagation pass after other mir passes (#439).

## 0.4.0 (2025-06-20)

Expand Down
4 changes: 2 additions & 2 deletions air-script/tests/binary/binary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,8 +82,8 @@ impl Air for BinaryAir {
fn evaluate_transition<E: FieldElement<BaseField = Felt>>(&self, frame: &EvaluationFrame<E>, periodic_values: &[E], result: &mut [E]) {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_current[0] * main_current[0] - main_current[0] - E::ZERO;
result[1] = main_current[1] * main_current[1] - main_current[1] - E::ZERO;
result[0] = main_current[0] * main_current[0] - main_current[0];
result[1] = main_current[1] * main_current[1] - main_current[1];
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
34 changes: 17 additions & 17 deletions air-script/tests/bitwise/bitwise.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,23 +82,23 @@ impl Air for BitwiseAir {
fn evaluate_transition<E: FieldElement<BaseField = Felt>>(&self, frame: &EvaluationFrame<E>, periodic_values: &[E], result: &mut [E]) {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_current[0] * main_current[0] - main_current[0] - E::ZERO;
result[1] = periodic_values[1] * (main_next[0] - main_current[0]) - E::ZERO;
result[2] = main_current[3] * main_current[3] - main_current[3] - E::ZERO;
result[3] = main_current[4] * main_current[4] - main_current[4] - E::ZERO;
result[4] = main_current[5] * main_current[5] - main_current[5] - E::ZERO;
result[5] = main_current[6] * main_current[6] - main_current[6] - E::ZERO;
result[6] = main_current[7] * main_current[7] - main_current[7] - E::ZERO;
result[7] = main_current[8] * main_current[8] - main_current[8] - E::ZERO;
result[8] = main_current[9] * main_current[9] - main_current[9] - E::ZERO;
result[9] = main_current[10] * main_current[10] - main_current[10] - E::ZERO;
result[10] = periodic_values[0] * (main_current[1] - (E::ONE * main_current[3] + E::from(Felt::new(2_u64)) * main_current[4] + E::from(Felt::new(4_u64)) * main_current[5] + E::from(Felt::new(8_u64)) * main_current[6])) - E::ZERO;
result[11] = periodic_values[0] * (main_current[2] - (E::ONE * main_current[7] + E::from(Felt::new(2_u64)) * main_current[8] + E::from(Felt::new(4_u64)) * main_current[9] + E::from(Felt::new(8_u64)) * main_current[10])) - E::ZERO;
result[12] = periodic_values[1] * (main_next[1] - (main_current[1] * E::from(Felt::new(16_u64)) + E::ONE * main_current[3] + E::from(Felt::new(2_u64)) * main_current[4] + E::from(Felt::new(4_u64)) * main_current[5] + E::from(Felt::new(8_u64)) * main_current[6])) - E::ZERO;
result[13] = periodic_values[1] * (main_next[2] - (main_current[2] * E::from(Felt::new(16_u64)) + E::ONE * main_current[7] + E::from(Felt::new(2_u64)) * main_current[8] + E::from(Felt::new(4_u64)) * main_current[9] + E::from(Felt::new(8_u64)) * main_current[10])) - E::ZERO;
result[14] = periodic_values[0] * main_current[11] - E::ZERO;
result[15] = periodic_values[1] * (main_current[12] - main_next[11]) - E::ZERO;
result[16] = (E::ONE - main_current[0]) * (main_current[12] - (main_current[11] * E::from(Felt::new(16_u64)) + E::ONE * main_current[3] * main_current[7] + E::from(Felt::new(2_u64)) * main_current[4] * main_current[8] + E::from(Felt::new(4_u64)) * main_current[5] * main_current[9] + E::from(Felt::new(8_u64)) * main_current[6] * main_current[10])) + main_current[0] * (main_current[12] - (main_current[11] * E::from(Felt::new(16_u64)) + E::ONE * (main_current[3] + main_current[7] - E::from(Felt::new(2_u64)) * main_current[3] * main_current[7]) + E::from(Felt::new(2_u64)) * (main_current[4] + main_current[8] - E::from(Felt::new(2_u64)) * main_current[4] * main_current[8]) + E::from(Felt::new(4_u64)) * (main_current[5] + main_current[9] - E::from(Felt::new(2_u64)) * main_current[5] * main_current[9]) + E::from(Felt::new(8_u64)) * (main_current[6] + main_current[10] - E::from(Felt::new(2_u64)) * main_current[6] * main_current[10]))) - E::ZERO;
result[0] = main_current[0] * main_current[0] - main_current[0];
result[1] = periodic_values[1] * (main_next[0] - main_current[0]);
result[2] = main_current[3] * main_current[3] - main_current[3];
result[3] = main_current[4] * main_current[4] - main_current[4];
result[4] = main_current[5] * main_current[5] - main_current[5];
result[5] = main_current[6] * main_current[6] - main_current[6];
result[6] = main_current[7] * main_current[7] - main_current[7];
result[7] = main_current[8] * main_current[8] - main_current[8];
result[8] = main_current[9] * main_current[9] - main_current[9];
result[9] = main_current[10] * main_current[10] - main_current[10];
result[10] = periodic_values[0] * (main_current[1] - (main_current[3] + E::from(Felt::new(2_u64)) * main_current[4] + E::from(Felt::new(4_u64)) * main_current[5] + E::from(Felt::new(8_u64)) * main_current[6]));
result[11] = periodic_values[0] * (main_current[2] - (main_current[7] + E::from(Felt::new(2_u64)) * main_current[8] + E::from(Felt::new(4_u64)) * main_current[9] + E::from(Felt::new(8_u64)) * main_current[10]));
result[12] = periodic_values[1] * (main_next[1] - (main_current[1] * E::from(Felt::new(16_u64)) + main_current[3] + E::from(Felt::new(2_u64)) * main_current[4] + E::from(Felt::new(4_u64)) * main_current[5] + E::from(Felt::new(8_u64)) * main_current[6]));
result[13] = periodic_values[1] * (main_next[2] - (main_current[2] * E::from(Felt::new(16_u64)) + main_current[7] + E::from(Felt::new(2_u64)) * main_current[8] + E::from(Felt::new(4_u64)) * main_current[9] + E::from(Felt::new(8_u64)) * main_current[10]));
result[14] = periodic_values[0] * main_current[11];
result[15] = periodic_values[1] * (main_current[12] - main_next[11]);
result[16] = (E::ONE - main_current[0]) * (main_current[12] - (main_current[11] * E::from(Felt::new(16_u64)) + main_current[3] * main_current[7] + E::from(Felt::new(2_u64)) * main_current[4] * main_current[8] + E::from(Felt::new(4_u64)) * main_current[5] * main_current[9] + E::from(Felt::new(8_u64)) * main_current[6] * main_current[10])) + main_current[0] * (main_current[12] - (main_current[11] * E::from(Felt::new(16_u64)) + main_current[3] + main_current[7] - E::from(Felt::new(2_u64)) * main_current[3] * main_current[7] + E::from(Felt::new(2_u64)) * (main_current[4] + main_current[8] - E::from(Felt::new(2_u64)) * main_current[4] * main_current[8]) + E::from(Felt::new(4_u64)) * (main_current[5] + main_current[9] - E::from(Felt::new(2_u64)) * main_current[5] * main_current[9]) + E::from(Felt::new(8_u64)) * (main_current[6] + main_current[10] - E::from(Felt::new(2_u64)) * main_current[6] * main_current[10])));
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
2 changes: 1 addition & 1 deletion air-script/tests/buses/buses_complex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -98,7 +98,7 @@ impl Air for BusesAir {
let main_next = main_frame.next();
let aux_current = aux_frame.current();
let aux_next = aux_frame.next();
result[0] = ((aux_rand_elements.rand_elements()[0] + E::ONE * aux_rand_elements.rand_elements()[1] + (E::ZERO + E::ZERO + E::ONE + E::from(Felt::new(2_u64)) + E::from(main_current[1])) * aux_rand_elements.rand_elements()[2] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[3]) * E::from(main_current[2]) + E::ONE - E::from(main_current[2])) * ((aux_rand_elements.rand_elements()[0] + E::from(Felt::new(2_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * (E::ONE - E::from(main_current[2])) + E::ONE - (E::ONE - E::from(main_current[2]))) * aux_current[0] - ((aux_rand_elements.rand_elements()[0] + E::ONE * aux_rand_elements.rand_elements()[1] + (E::ZERO + E::ZERO + E::ONE + E::from(Felt::new(2_u64)) + E::from(main_current[1])) * aux_rand_elements.rand_elements()[2] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[3]) * E::from(main_current[3]) + E::ONE - E::from(main_current[3])) * ((aux_rand_elements.rand_elements()[0] + E::from(Felt::new(2_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (E::ONE - E::from(main_current[3])) + E::ONE - (E::ONE - E::from(main_current[3]))) * aux_next[0];
result[0] = ((aux_rand_elements.rand_elements()[0] + E::ONE * aux_rand_elements.rand_elements()[1] + (E::from(Felt::new(3_u64)) + E::from(main_current[1])) * aux_rand_elements.rand_elements()[2] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[3]) * E::from(main_current[2]) + E::ONE - E::from(main_current[2])) * ((aux_rand_elements.rand_elements()[0] + E::from(Felt::new(2_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * (E::ONE - E::from(main_current[2])) + E::ONE - (E::ONE - E::from(main_current[2]))) * aux_current[0] - ((aux_rand_elements.rand_elements()[0] + E::ONE * aux_rand_elements.rand_elements()[1] + (E::from(Felt::new(3_u64)) + E::from(main_current[1])) * aux_rand_elements.rand_elements()[2] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[3]) * E::from(main_current[3]) + E::ONE - E::from(main_current[3])) * ((aux_rand_elements.rand_elements()[0] + E::from(Felt::new(2_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (E::ONE - E::from(main_current[3])) + E::ONE - (E::ONE - E::from(main_current[3]))) * aux_next[0];
result[1] = (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(4_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * aux_current[1] + (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(4_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * E::from(main_current[2]) + (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(4_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * E::from(main_current[2]) - ((aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(4_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[1]) * aux_rand_elements.rand_elements()[2]) * aux_next[1] + (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * (aux_rand_elements.rand_elements()[0] + E::from(Felt::new(3_u64)) * aux_rand_elements.rand_elements()[1] + E::from(main_current[0]) * aux_rand_elements.rand_elements()[2]) * E::from(main_current[4]));
}
}
2 changes: 1 addition & 1 deletion air-script/tests/constant_in_range/constant_in_range.rs
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ impl Air for ConstantInRangeAir {
fn evaluate_transition<E: FieldElement<BaseField = Felt>>(&self, frame: &EvaluationFrame<E>, periodic_values: &[E], result: &mut [E]) {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_current[0] - (E::ZERO + main_current[1] - main_current[4] - main_current[8] + E::ONE + main_current[2] - main_current[5] - main_current[9] + E::from(Felt::new(2_u64)) + main_current[3] - main_current[6] - main_current[10]);
result[0] = main_current[0] - (main_current[1] - main_current[4] - main_current[8] + E::ONE + main_current[2] - main_current[5] - main_current[9] + E::from(Felt::new(2_u64)) + main_current[3] - main_current[6] - main_current[10]);
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
8 changes: 4 additions & 4 deletions air-script/tests/constants/constants.rs
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ impl Air for ConstantsAir {
result.push(Assertion::single(0, 0, Felt::ONE));
result.push(Assertion::single(1, 0, Felt::ONE));
result.push(Assertion::single(2, 0, Felt::ZERO));
result.push(Assertion::single(3, 0, Felt::ONE - Felt::new(2) + Felt::new(2) - Felt::ZERO));
result.push(Assertion::single(3, 0, Felt::ONE - Felt::new(2) + Felt::new(2)));
result.push(Assertion::single(4, 0, Felt::ONE));
result.push(Assertion::single(6, self.last_step(), Felt::ZERO));
result
Expand All @@ -100,9 +100,9 @@ impl Air for ConstantsAir {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_next[0] - (main_current[0] + E::ONE);
result[1] = main_next[1] - E::ZERO * main_current[1];
result[2] = main_next[2] - E::ONE * main_current[2];
result[3] = main_next[5] - (main_current[5] + E::ONE + E::ZERO);
result[1] = main_next[1];
result[2] = main_next[2] - main_current[2];
result[3] = main_next[5] - (main_current[5] + E::ONE);
result[4] = main_current[4] - E::ONE;
}

Expand Down
2 changes: 1 addition & 1 deletion air-script/tests/functions/functions_complex.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,7 +83,7 @@ impl Air for FunctionsAir {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_next[16] - main_current[16] * ((main_current[3] * main_current[3] * main_current[3] * main_current[3] * main_current[3] * main_current[3] * main_current[3] * main_current[1] * main_current[2] + main_current[3] * main_current[3] * (E::ONE - main_current[1]) * main_current[2] + main_current[3] * main_current[1] * (E::ONE - main_current[2]) + (E::ONE - main_current[1]) * (E::ONE - main_current[2])) * main_current[0] - main_current[0] + E::ONE);
result[1] = main_next[3] - (E::ZERO + main_current[4] + main_current[5] + main_current[6] + main_current[7] + main_current[8] + main_current[9] + main_current[10] + main_current[11] + main_current[12] + main_current[13] + main_current[14] + main_current[15] + E::ONE) * E::from(Felt::new(2_u64));
result[1] = main_next[3] - (main_current[4] + main_current[5] + main_current[6] + main_current[7] + main_current[8] + main_current[9] + main_current[10] + main_current[11] + main_current[12] + main_current[13] + main_current[14] + main_current[15] + E::ONE) * E::from(Felt::new(2_u64));
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
4 changes: 2 additions & 2 deletions air-script/tests/list_comprehension/list_comprehension.rs
Original file line number Diff line number Diff line change
Expand Up @@ -83,10 +83,10 @@ impl Air for ListComprehensionAir {
let main_current = frame.current();
let main_next = frame.next();
result[0] = main_current[0] - main_current[2];
result[1] = main_current[4] - main_current[0] * E::from(Felt::new(2_u64)) * E::from(Felt::new(2_u64)) * E::from(Felt::new(2_u64)) * main_current[11];
result[1] = main_current[4] - main_current[0] * E::from(Felt::new(8_u64)) * main_current[11];
result[2] = main_current[4] - main_current[0] * (main_next[8] - main_next[12]);
result[3] = main_current[6] - main_current[0] * (main_current[9] - main_current[14]);
result[4] = main_current[1] - (E::ZERO + main_current[5] - main_current[8] - main_current[12] + E::ONE + main_current[6] - main_current[9] - main_current[13] + E::from(Felt::new(2_u64)) + main_current[7] - main_current[10] - main_current[14]);
result[4] = main_current[1] - (main_current[5] - main_current[8] - main_current[12] + E::ONE + main_current[6] - main_current[9] - main_current[13] + E::from(Felt::new(2_u64)) + main_current[7] - main_current[10] - main_current[14]);
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -82,9 +82,9 @@ impl Air for ListComprehensionAir {
fn evaluate_transition<E: FieldElement<BaseField = Felt>>(&self, frame: &EvaluationFrame<E>, periodic_values: &[E], result: &mut [E]) {
let main_current = frame.current();
let main_next = frame.next();
result[0] = E::ZERO + main_current[0] * E::ONE + main_current[1] * E::from(Felt::new(2_u64)) - E::from(Felt::new(3_u64));
result[1] = E::ZERO + main_current[0] * E::from(Felt::new(2_u64)) + main_current[1] * E::from(Felt::new(3_u64)) - E::from(Felt::new(5_u64));
result[2] = E::ZERO + main_current[0] * E::from(Felt::new(3_u64)) + main_current[1] * E::from(Felt::new(4_u64)) - E::from(Felt::new(7_u64));
result[0] = main_current[0] + main_current[1] * E::from(Felt::new(2_u64)) - E::from(Felt::new(3_u64));
result[1] = main_current[0] * E::from(Felt::new(2_u64)) + main_current[1] * E::from(Felt::new(3_u64)) - E::from(Felt::new(5_u64));
result[2] = main_current[0] * E::from(Felt::new(3_u64)) + main_current[1] * E::from(Felt::new(4_u64)) - E::from(Felt::new(7_u64));
}

fn evaluate_aux_transition<F, E>(&self, main_frame: &EvaluationFrame<F>, aux_frame: &EvaluationFrame<E>, _periodic_values: &[F], aux_rand_elements: &AuxRandElements<E>, result: &mut [E])
Expand Down
Loading