diff --git a/constraint-solver/src/grouped_expression.rs b/constraint-solver/src/grouped_expression.rs index 75e8d0157..e50430b24 100644 --- a/constraint-solver/src/grouped_expression.rs +++ b/constraint-solver/src/grouped_expression.rs @@ -228,7 +228,13 @@ impl GroupedExpression { } /// Returns the quadratic, linear and constant components of this expression. - pub fn components(&self) -> (&[(Self, Self)], impl Iterator, &T) { + pub fn components( + &self, + ) -> ( + &[(Self, Self)], + impl DoubleEndedIterator, + &T, + ) { (&self.quadratic, self.linear.iter(), &self.constant) } diff --git a/constraint-solver/src/inliner.rs b/constraint-solver/src/inliner.rs index 3a2243efb..b8fa4d028 100644 --- a/constraint-solver/src/inliner.rs +++ b/constraint-solver/src/inliner.rs @@ -114,6 +114,7 @@ fn find_inlinable_variables< ) -> Vec<(V, GroupedExpression)> { let (_, linear, _) = constraint.components(); linear + .rev() .filter_map(|(target_var, _)| { let rhs_expr = constraint.try_solve_for(target_var)?; assert!(!rhs_expr.referenced_unknown_variables().contains(target_var)); @@ -184,7 +185,7 @@ mod test { // keep column result let bus_interactions = vec![BusInteraction { bus_id: constant(1), - payload: vec![var("result"), var("b")], + payload: vec![var("0result"), var("b")], multiplicity: constant(1), }]; @@ -192,7 +193,7 @@ mod test { algebraic_constraints: vec![ var("a") + var("b") + var("c"), var("b") + var("d") - constant(1), - var("c") + var("b") + var("a") + var("d") - var("result"), + var("c") + var("b") + var("a") + var("d") - var("0result"), ], bus_interactions, } @@ -217,8 +218,8 @@ mod test { let [result, b] = payload.as_slice() else { panic!(); }; - assert_eq!(result.to_string(), "result"); - assert_eq!(b.to_string(), "-(result - 1)"); + assert_eq!(result.to_string(), "0result"); + assert_eq!(b.to_string(), "-(0result - 1)"); } #[test] @@ -253,19 +254,9 @@ mod test { let constraint_system = replace_constrained_witness_columns(constraint_system, bounds(3, 3)); - // 1) b + d = 0 => b = -d - // 2) a * b = c => a * (-d) = c => a * d + c = 0 - // 3) a + b + c + d = result - // =(1)=> a - d + c + d = result - // = a + c - // => a + c - result = 0 - // × (-d): -a*d - c*d + d*result = 0 - // =(2)=> c - c*d + d*result = 0 - // ⇒ (c + -result) * (-d) + c = 0 let constraints = constraint_system.algebraic_constraints().collect_vec(); - assert_eq!(constraints.len(), 1); - assert_eq!(constraints[0].to_string(), "-((c - result) * (d) - c)"); + assert_eq!(constraints.len(), 0); } #[test] @@ -298,21 +289,9 @@ mod test { let constraint_system = replace_constrained_witness_columns(constraint_system, bounds(3, 3)); - // 1) b + d = 0 => b = -d - // 2) c * d = e => e = c * d - // 3) a + b + c + d + e = result - // =⇒ a + (-d) + c + d + (c * d) = result - // =⇒ a + c + (c * d) = result ⇒ a = result - c - c*d - // - // Replace a and b in (a * b = c): - // (result - c - c*d) * (-d) = c - // ⇒ ((c * d) + c - result) * (-d) + c = 0 + let constraints = constraint_system.algebraic_constraints().collect_vec(); - assert_eq!(constraints.len(), 1); - assert_eq!( - constraints[0].to_string(), - "-(((c) * (d) + c - result) * (d) - c)" - ); + assert_eq!(constraints.len(), 0); } #[test] @@ -346,8 +325,8 @@ mod test { let [result, x] = payload.as_slice() else { panic!(); }; - assert_eq!(result.to_string(), "z + 1"); - assert_eq!(x.to_string(), "z - 5"); + assert_eq!(result.to_string(), "result"); + assert_eq!(x.to_string(), "result - 6"); } #[test] @@ -392,23 +371,21 @@ mod test { let [a, b, c, d, e, f, result] = payload.as_slice() else { panic!(); }; - // From first identity: a = b + 1 - assert_eq!(a.to_string(), "b + 1"); - // b kept as a symbol - assert_eq!(b.to_string(), "b"); + assert_eq!(a.to_string(), "a"); + assert_eq!(b.to_string(), "a - 1"); // From second identity: c = a * a // In-lining c would violate the degree bound, so it is kept as a symbol // with a constraint to enforce the equality. assert_eq!(c.to_string(), "c"); - assert_eq!(identity.to_string(), "-((b + 1) * (b + 1) - c)"); + assert_eq!(identity.to_string(), "-((a) * (a) - c)"); // From third identity: d = c * a - assert_eq!(d.to_string(), "(c) * (b + 1)"); + assert_eq!(d.to_string(), "(c) * (a)"); // From fourth identity: e = d * a - assert_eq!(e.to_string(), "((c) * (b + 1)) * (b + 1)"); + assert_eq!(e.to_string(), "((c) * (a)) * (a)"); // From fifth identity: f = e + 5 - assert_eq!(f.to_string(), "((c) * (b + 1)) * (b + 1) + 5"); + assert_eq!(f.to_string(), "((c) * (a)) * (a) + 5"); // From sixth identity: result = f * 2 - assert_eq!(result.to_string(), "((2 * c) * (b + 1)) * (b + 1) + 10"); + assert_eq!(result.to_string(), "((2 * c) * (a)) * (a) + 10"); } #[test] diff --git a/openvm/src/lib.rs b/openvm/src/lib.rs index 896538891..786b84a5e 100644 --- a/openvm/src/lib.rs +++ b/openvm/src/lib.rs @@ -1457,11 +1457,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 14676, - log_up: 11976, + main: 14664, + log_up: 11960, }, constraints: 4143, - bus_interactions: 11642, + bus_interactions: 11630, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1485,11 +1485,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 14656, - log_up: 11956, + main: 14644, + log_up: 11940, }, constraints: 4127, - bus_interactions: 11632, + bus_interactions: 11620, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1507,8 +1507,8 @@ mod tests { }, after: AirWidths { preprocessed: 0, - main: 14656, - log_up: 11956, + main: 14644, + log_up: 11940, }, } "#]]), @@ -1564,11 +1564,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 2010, + main: 2008, log_up: 1788, }, constraints: 166, - bus_interactions: 1782, + bus_interactions: 1780, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1592,11 +1592,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 2010, + main: 2008, log_up: 1788, }, constraints: 166, - bus_interactions: 1782, + bus_interactions: 1780, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1620,11 +1620,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 2010, + main: 2008, log_up: 1788, }, constraints: 166, - bus_interactions: 1782, + bus_interactions: 1780, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1642,7 +1642,7 @@ mod tests { }, after: AirWidths { preprocessed: 0, - main: 2010, + main: 2008, log_up: 1788, }, } @@ -1671,11 +1671,11 @@ mod tests { AirMetrics { widths: AirWidths { preprocessed: 0, - main: 4843, - log_up: 3952, + main: 4850, + log_up: 3948, }, - constraints: 958, - bus_interactions: 3817, + constraints: 950, + bus_interactions: 3819, } "#]], powdr_expected_machine_count: expect![[r#" @@ -1688,13 +1688,13 @@ mod tests { AirWidthsDiff { before: AirWidths { preprocessed: 0, - main: 38986, - log_up: 26936, + main: 39120, + log_up: 27036, }, after: AirWidths { preprocessed: 0, - main: 4843, - log_up: 3952, + main: 4850, + log_up: 3948, }, } "#]]), diff --git a/openvm/tests/apc_builder_outputs/beqz.txt b/openvm/tests/apc_builder_outputs/beqz.txt index d4de2ec3f..b7609d484 100644 --- a/openvm/tests/apc_builder_outputs/beqz.txt +++ b/openvm/tests/apc_builder_outputs/beqz.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 11 -> 6 (1.83x reduction) Symbolic machine using 14 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -23,20 +23,20 @@ Symbolic machine using 14 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[8 - (4 * a__0_0 * diff_inv_marker__0_0 + 4 * a__1_0 * diff_inv_marker__1_0 + 4 * a__2_0 * diff_inv_marker__2_0 + 4 * a__3_0 * diff_inv_marker__3_0), reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[8 - (4 * a__0_0 * diff_inv_marker__0_0 + 4 * a__1_0 * diff_inv_marker__1_0 + 4 * a__2_0 * diff_inv_marker__2_0 + 4 * a__3_0 * diff_inv_marker__3_0), from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: -((1 - (a__0_0 * diff_inv_marker__0_0 + a__1_0 * diff_inv_marker__1_0 + a__2_0 * diff_inv_marker__2_0 + a__3_0 * diff_inv_marker__3_0)) * (a__0_0 * diff_inv_marker__0_0 + a__1_0 * diff_inv_marker__1_0 + a__2_0 * diff_inv_marker__2_0 + a__3_0 * diff_inv_marker__3_0)) = 0 diff --git a/openvm/tests/apc_builder_outputs/bgez.txt b/openvm/tests/apc_builder_outputs/bgez.txt index ccfa66792..059463fe6 100644 --- a/openvm/tests/apc_builder_outputs/bgez.txt +++ b/openvm/tests/apc_builder_outputs/bgez.txt @@ -7,17 +7,17 @@ APC advantage: - Constraints: 25 -> 18 (1.39x reduction) Symbolic machine using 17 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 a__3_0 + cmp_result_0 a_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -26,41 +26,41 @@ Symbolic machine using 17 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[8 - 4 * cmp_lt_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 * cmp_result_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0 + 128, 0, 0, 0] // Algebraic constraints: --((1 - cmp_lt_0) * cmp_lt_0) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 --((1 - diff_marker__3_0) * (a_msb_f_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__3_0 * (a_msb_f_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - diff_marker__3_0) * (a_msb_f_0 * (1 - 2 * cmp_result_0))) = 0 +diff_marker__3_0 * (a_msb_f_0 * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 --((1 - (diff_marker__2_0 + diff_marker__3_0)) * (a__2_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__2_0 * (a__2_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__2_0 + diff_marker__3_0)) * (a__2_0 * (1 - 2 * cmp_result_0))) = 0 +diff_marker__2_0 * (a__2_0 * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 --((1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__1_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__1_0 * (a__1_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__1_0 * (1 - 2 * cmp_result_0))) = 0 +diff_marker__1_0 * (a__1_0 * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 --((1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__0_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__0_0 * (a__0_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__0_0 * (1 - 2 * cmp_result_0))) = 0 +diff_marker__0_0 * (a__0_0 * (1 - 2 * cmp_result_0) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 * is_valid - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (1 - cmp_result_0) = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/bgtz.txt b/openvm/tests/apc_builder_outputs/bgtz.txt index ffaab3221..6f5a430db 100644 --- a/openvm/tests/apc_builder_outputs/bgtz.txt +++ b/openvm/tests/apc_builder_outputs/bgtz.txt @@ -7,17 +7,17 @@ APC advantage: - Constraints: 25 -> 18 (1.39x reduction) Symbolic machine using 17 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 b__0_0 b__1_0 b__2_0 b__3_0 + cmp_result_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -26,41 +26,41 @@ Symbolic machine using 17 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4 * cmp_lt_0 + 4, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 * cmp_result_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[b_msb_f_0 + 128, 0, 0, 0] // Algebraic constraints: -cmp_lt_0 * (cmp_lt_0 - 1) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * (b_msb_f_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * (diff_val_0 - b_msb_f_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - diff_marker__3_0) * (b_msb_f_0 * (2 * cmp_result_0 - 1)) = 0 +diff_marker__3_0 * (diff_val_0 - b_msb_f_0 * (2 * cmp_result_0 - 1)) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * (b__2_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * (diff_val_0 - b__2_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * (b__2_0 * (2 * cmp_result_0 - 1)) = 0 +diff_marker__2_0 * (diff_val_0 - b__2_0 * (2 * cmp_result_0 - 1)) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__1_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * (diff_val_0 - b__1_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__1_0 * (2 * cmp_result_0 - 1)) = 0 +diff_marker__1_0 * (diff_val_0 - b__1_0 * (2 * cmp_result_0 - 1)) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__0_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * (diff_val_0 - b__0_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__0_0 * (2 * cmp_result_0 - 1)) = 0 +diff_marker__0_0 * (diff_val_0 - b__0_0 * (2 * cmp_result_0 - 1)) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_result_0 = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/blez.txt b/openvm/tests/apc_builder_outputs/blez.txt index 322149f54..97e40b434 100644 --- a/openvm/tests/apc_builder_outputs/blez.txt +++ b/openvm/tests/apc_builder_outputs/blez.txt @@ -7,17 +7,17 @@ APC advantage: - Constraints: 25 -> 18 (1.39x reduction) Symbolic machine using 17 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 b__0_0 b__1_0 b__2_0 b__3_0 + cmp_result_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -26,41 +26,41 @@ Symbolic machine using 17 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[8 - 4 * cmp_lt_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 * cmp_result_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[b_msb_f_0 + 128, 0, 0, 0] // Algebraic constraints: --((1 - cmp_lt_0) * cmp_lt_0) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * (b_msb_f_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * (diff_val_0 - b_msb_f_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - diff_marker__3_0) * (b_msb_f_0 * (1 - 2 * cmp_result_0)) = 0 +diff_marker__3_0 * (diff_val_0 - b_msb_f_0 * (1 - 2 * cmp_result_0)) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * (b__2_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * (diff_val_0 - b__2_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * (b__2_0 * (1 - 2 * cmp_result_0)) = 0 +diff_marker__2_0 * (diff_val_0 - b__2_0 * (1 - 2 * cmp_result_0)) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__1_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * (diff_val_0 - b__1_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__1_0 * (1 - 2 * cmp_result_0)) = 0 +diff_marker__1_0 * (diff_val_0 - b__1_0 * (1 - 2 * cmp_result_0)) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__0_0 * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * (diff_val_0 - b__0_0 * (2 * cmp_lt_0 - 1)) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (b__0_0 * (1 - 2 * cmp_result_0)) = 0 +diff_marker__0_0 * (diff_val_0 - b__0_0 * (1 - 2 * cmp_result_0)) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 * is_valid - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (1 - cmp_result_0) = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/bltz.txt b/openvm/tests/apc_builder_outputs/bltz.txt index 45aa9d14c..5f2632be8 100644 --- a/openvm/tests/apc_builder_outputs/bltz.txt +++ b/openvm/tests/apc_builder_outputs/bltz.txt @@ -7,17 +7,17 @@ APC advantage: - Constraints: 25 -> 18 (1.39x reduction) Symbolic machine using 17 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 a__3_0 + cmp_result_0 a_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -26,41 +26,41 @@ Symbolic machine using 17 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4 * cmp_lt_0 + 4, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 * cmp_result_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0 + 128, 0, 0, 0] // Algebraic constraints: -cmp_lt_0 * (cmp_lt_0 - 1) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 --((1 - diff_marker__3_0) * (a_msb_f_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__3_0 * (a_msb_f_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - diff_marker__3_0) * (a_msb_f_0 * (2 * cmp_result_0 - 1))) = 0 +diff_marker__3_0 * (a_msb_f_0 * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 --((1 - (diff_marker__2_0 + diff_marker__3_0)) * (a__2_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__2_0 * (a__2_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__2_0 + diff_marker__3_0)) * (a__2_0 * (2 * cmp_result_0 - 1))) = 0 +diff_marker__2_0 * (a__2_0 * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 --((1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__1_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__1_0 * (a__1_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__1_0 * (2 * cmp_result_0 - 1))) = 0 +diff_marker__1_0 * (a__1_0 * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 --((1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__0_0 * (2 * cmp_lt_0 - 1))) = 0 -diff_marker__0_0 * (a__0_0 * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +-((1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (a__0_0 * (2 * cmp_result_0 - 1))) = 0 +diff_marker__0_0 * (a__0_0 * (2 * cmp_result_0 - 1) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_result_0 = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/bnez.txt b/openvm/tests/apc_builder_outputs/bnez.txt index 5bb36f61a..77d3fc136 100644 --- a/openvm/tests/apc_builder_outputs/bnez.txt +++ b/openvm/tests/apc_builder_outputs/bnez.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 11 -> 6 (1.83x reduction) Symbolic machine using 14 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -23,20 +23,20 @@ Symbolic machine using 14 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4 * a__0_0 * diff_inv_marker__0_0 + 4 * a__1_0 * diff_inv_marker__1_0 + 4 * a__2_0 * diff_inv_marker__2_0 + 4 * a__3_0 * diff_inv_marker__3_0 + 4, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 * a__0_0 * diff_inv_marker__0_0 + 4 * a__1_0 * diff_inv_marker__1_0 + 4 * a__2_0 * diff_inv_marker__2_0 + 4 * a__3_0 * diff_inv_marker__3_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: (a__0_0 * diff_inv_marker__0_0 + a__1_0 * diff_inv_marker__1_0 + a__2_0 * diff_inv_marker__2_0 + a__3_0 * diff_inv_marker__3_0) * (a__0_0 * diff_inv_marker__0_0 + a__1_0 * diff_inv_marker__1_0 + a__2_0 * diff_inv_marker__2_0 + a__3_0 * diff_inv_marker__3_0 - 1) = 0 diff --git a/openvm/tests/apc_builder_outputs/guest_top_block.txt b/openvm/tests/apc_builder_outputs/guest_top_block.txt index e837c1792..1ad8809fe 100644 --- a/openvm/tests/apc_builder_outputs/guest_top_block.txt +++ b/openvm/tests/apc_builder_outputs/guest_top_block.txt @@ -5,13 +5,14 @@ Instructions: JALR 4 4 1780 1 0 APC advantage: - - Main columns: 125 -> 28 (4.46x reduction) - - Bus interactions: 65 -> 20 (3.25x reduction) + - Main columns: 125 -> 26 (4.81x reduction) + - Bus interactions: 65 -> 18 (3.61x reduction) - Constraints: 61 -> 7 (8.71x reduction) -Symbolic machine using 28 unique main columns: +Symbolic machine using 26 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -20,48 +21,43 @@ Symbolic machine using 28 unique main columns: b__1_0 b__2_0 b__3_0 + read_data_aux__base__prev_timestamp_1 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1 mem_ptr_limbs__0_1 mem_ptr_limbs__1_1 + write_base_aux__prev_timestamp_1 write_base_aux__timestamp_lt_aux__lower_decomp__0_1 - write_base_aux__timestamp_lt_aux__lower_decomp__1_1 + read_data__0_1 + read_data__1_1 + read_data__2_1 + read_data__3_1 prev_data__0_1 prev_data__1_1 prev_data__2_1 prev_data__3_1 - rd_aux_cols__prev_data__0_2 - rd_aux_cols__prev_data__1_2 - rd_aux_cols__prev_data__2_2 - rd_aux_cols__prev_data__3_2 - rs1_aux_cols__base__prev_timestamp_3 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - 6] -mult=is_valid * 1, args=[1788, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 + 3] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[1788, from_state__timestamp_0 + 9] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, b__0_0, b__1_0, b__2_0, b__3_0, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 7)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - 3] -mult=is_valid * -1, args=[1, 4, rd_aux_cols__prev_data__0_2, rd_aux_cols__prev_data__1_2, rd_aux_cols__prev_data__2_2, rd_aux_cols__prev_data__3_2, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1 + 3)] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, prev_data__0_1, prev_data__1_1, prev_data__2_1, prev_data__3_1, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - (write_base_aux__timestamp_lt_aux__lower_decomp__0_1 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_1 + 2)] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, rd_aux_cols__prev_data__0_2, rd_aux_cols__prev_data__1_2, rd_aux_cols__prev_data__2_2, rd_aux_cols__prev_data__3_2, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 - 1] -mult=is_valid * 1, args=[1, 4, 8, 0, 0, 0, rs1_aux_cols__base__prev_timestamp_3 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3 + 1] +mult=is_valid * -1, args=[1, 8, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 3] +mult=is_valid * -1, args=[1, 4, read_data__0_1, read_data__1_1, read_data__2_1, read_data__3_1, read_data_aux__base__prev_timestamp_1] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, prev_data__0_1, prev_data__1_1, prev_data__2_1, prev_data__3_1, write_base_aux__prev_timestamp_1] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, read_data__0_1, read_data__1_1, read_data__2_1, read_data__3_1, from_state__timestamp_0 + 5] +mult=is_valid * 1, args=[1, 4, 8, 0, 0, 0, from_state__timestamp_0 + 7] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[-(503316480 * mem_ptr_limbs__0_1), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_1, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_1 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 - (15360 * from_state__timestamp_0 + 46080), 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_1, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_1, 12] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_3, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_3, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_1 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_1 - (15360 * from_state__timestamp_0 + 61440), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/memcpy_block.txt b/openvm/tests/apc_builder_outputs/memcpy_block.txt index f383cd30d..65d50a26d 100644 --- a/openvm/tests/apc_builder_outputs/memcpy_block.txt +++ b/openvm/tests/apc_builder_outputs/memcpy_block.txt @@ -11,77 +11,77 @@ APC advantage: - Constraints: 111 -> 34 (3.26x reduction) Symbolic machine using 38 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 writes_aux__prev_data__3_0 + a__0_0 b__0_0 b__1_0 b__2_0 b__3_0 - b__0_1 + cmp_result_1 diff_marker__0_1 diff_marker__1_1 diff_marker__2_1 diff_marker__3_1 diff_val_1 + reads_aux__0__base__prev_timestamp_2 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_2 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_2 - b__0_2 - b__1_2 - b__2_2 - b__3_2 + writes_aux__prev_data__0_2 + writes_aux__prev_data__1_2 + writes_aux__prev_data__2_2 + writes_aux__prev_data__3_2 + cmp_result_2 b_msb_f_2 diff_marker__0_2 diff_marker__1_2 diff_marker__2_2 diff_marker__3_2 diff_val_2 - b__0_3 - c__0_3 reads_aux__1__base__prev_timestamp_4 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 cmp_result_4 diff_inv_marker__0_4 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - 12] -mult=is_valid * 1, args=[244 * cmp_result_4 + 20, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[244 * cmp_result_4 + 20, from_state__timestamp_0 + 14] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 44, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 13)] -mult=is_valid * 1, args=[1, 44, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - 12] -mult=is_valid * -1, args=[1, 52, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - (writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 11)] -mult=is_valid * -1, args=[1, 56, b__0_2, b__1_2, b__2_2, b__3_2, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_2 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_2 + 7)] -mult=is_valid * 1, args=[1, 56, c__0_3, 0, 0, 0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 - 2] -mult=is_valid * 1, args=[1, 52, b__0_3 + c__0_3 - b__0_3 * c__0_3, 0, 0, 0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4] +mult=is_valid * -1, args=[1, 44, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 44, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 52, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] +mult=is_valid * -1, args=[1, 56, writes_aux__prev_data__0_2, writes_aux__prev_data__1_2, writes_aux__prev_data__2_2, writes_aux__prev_data__3_2, reads_aux__0__base__prev_timestamp_2] +mult=is_valid * 1, args=[1, 56, cmp_result_2, 0, 0, 0, from_state__timestamp_0 + 10] +mult=is_valid * 1, args=[1, 52, cmp_result_1 + cmp_result_2 - cmp_result_1 * cmp_result_2, 0, 0, 0, from_state__timestamp_0 + 12] mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_4] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_4 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4 + 1] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 13] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_2, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_2, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_2 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_2 - (15360 * from_state__timestamp_0 + 76800), 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_4, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_4 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_4 - (15360 * from_state__timestamp_0 + 184320), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): -mult=is_valid * 1, args=[b__0_0, 3, b__0_0 + 3 - 2 * b__0_1, 1] +mult=is_valid * 1, args=[b__0_0, 3, b__0_0 + 3 - 2 * a__0_0, 1] mult=diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1, args=[diff_val_1 - 1, 0, 0, 0] mult=diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2, args=[diff_val_2 - 1, 0, 0, 0] -mult=is_valid * 1, args=[b__0_3 + c__0_3 - 2 * b__0_3 * c__0_3, b_msb_f_2, 0, 0] +mult=is_valid * 1, args=[cmp_result_1 + cmp_result_2 - 2 * cmp_result_1 * cmp_result_2, b_msb_f_2, 0, 0] // Algebraic constraints: -b__0_3 * (b__0_3 - 1) = 0 +cmp_result_1 * (cmp_result_1 - 1) = 0 diff_marker__3_1 * (diff_marker__3_1 - 1) = 0 diff_marker__3_1 * diff_val_1 = 0 diff_marker__2_1 * (diff_marker__2_1 - 1) = 0 @@ -89,29 +89,29 @@ diff_marker__2_1 * diff_val_1 = 0 diff_marker__1_1 * (diff_marker__1_1 - 1) = 0 diff_marker__1_1 * diff_val_1 = 0 diff_marker__0_1 * (diff_marker__0_1 - 1) = 0 -(1 * is_valid - (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1)) * ((1 - b__0_1) * (2 * b__0_3 - 1)) = 0 -diff_marker__0_1 * ((b__0_1 - 1) * (2 * b__0_3 - 1) + diff_val_1) = 0 +(1 * is_valid - (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1)) * ((1 - a__0_0) * (2 * cmp_result_1 - 1)) = 0 +diff_marker__0_1 * ((a__0_0 - 1) * (2 * cmp_result_1 - 1) + diff_val_1) = 0 (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1) * (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1 - 1) = 0 -(1 - (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1)) * b__0_3 = 0 -c__0_3 * (c__0_3 - 1) = 0 -(b__3_2 - b_msb_f_2) * (b_msb_f_2 + 256 - b__3_2) = 0 +(1 - (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1)) * cmp_result_1 = 0 +cmp_result_2 * (cmp_result_2 - 1) = 0 +(writes_aux__prev_data__3_2 - b_msb_f_2) * (b_msb_f_2 + 256 - writes_aux__prev_data__3_2) = 0 diff_marker__3_2 * (diff_marker__3_2 - 1) = 0 --((1 - diff_marker__3_2) * (b_msb_f_2 * (2 * c__0_3 - 1))) = 0 -diff_marker__3_2 * (b_msb_f_2 * (2 * c__0_3 - 1) + diff_val_2) = 0 +-((1 - diff_marker__3_2) * (b_msb_f_2 * (2 * cmp_result_2 - 1))) = 0 +diff_marker__3_2 * (b_msb_f_2 * (2 * cmp_result_2 - 1) + diff_val_2) = 0 diff_marker__2_2 * (diff_marker__2_2 - 1) = 0 --((1 - (diff_marker__2_2 + diff_marker__3_2)) * (b__2_2 * (2 * c__0_3 - 1))) = 0 -diff_marker__2_2 * (b__2_2 * (2 * c__0_3 - 1) + diff_val_2) = 0 +-((1 - (diff_marker__2_2 + diff_marker__3_2)) * (writes_aux__prev_data__2_2 * (2 * cmp_result_2 - 1))) = 0 +diff_marker__2_2 * (writes_aux__prev_data__2_2 * (2 * cmp_result_2 - 1) + diff_val_2) = 0 diff_marker__1_2 * (diff_marker__1_2 - 1) = 0 --((1 - (diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * (b__1_2 * (2 * c__0_3 - 1))) = 0 -diff_marker__1_2 * (b__1_2 * (2 * c__0_3 - 1) + diff_val_2) = 0 +-((1 - (diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * (writes_aux__prev_data__1_2 * (2 * cmp_result_2 - 1))) = 0 +diff_marker__1_2 * (writes_aux__prev_data__1_2 * (2 * cmp_result_2 - 1) + diff_val_2) = 0 diff_marker__0_2 * (diff_marker__0_2 - 1) = 0 -(1 * is_valid - (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * ((1 - b__0_2) * (2 * c__0_3 - 1)) = 0 -diff_marker__0_2 * ((b__0_2 - 1) * (2 * c__0_3 - 1) + diff_val_2) = 0 +(1 * is_valid - (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * ((1 - writes_aux__prev_data__0_2) * (2 * cmp_result_2 - 1)) = 0 +diff_marker__0_2 * ((writes_aux__prev_data__0_2 - 1) * (2 * cmp_result_2 - 1) + diff_val_2) = 0 (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2) * (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2 - 1) = 0 -(1 - (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * c__0_3 = 0 +(1 - (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2)) * cmp_result_2 = 0 cmp_result_4 * (cmp_result_4 - 1) = 0 -(1 - cmp_result_4) * (b__0_3 + c__0_3 - b__0_3 * c__0_3) = 0 -(b__0_3 + c__0_3 - b__0_3 * c__0_3) * diff_inv_marker__0_4 - cmp_result_4 = 0 +(1 - cmp_result_4) * (cmp_result_1 + cmp_result_2 - cmp_result_1 * cmp_result_2) = 0 +(cmp_result_1 + cmp_result_2 - cmp_result_1 * cmp_result_2) * diff_inv_marker__0_4 - cmp_result_4 = 0 (1 - is_valid) * (diff_marker__0_1 + diff_marker__1_1 + diff_marker__2_1 + diff_marker__3_1) = 0 (1 - is_valid) * (diff_marker__0_2 + diff_marker__1_2 + diff_marker__2_2 + diff_marker__3_2) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/mv.txt b/openvm/tests/apc_builder_outputs/mv.txt index 68da28344..46129887b 100644 --- a/openvm/tests/apc_builder_outputs/mv.txt +++ b/openvm/tests/apc_builder_outputs/mv.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 22 -> 5 (4.40x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -27,20 +27,20 @@ Symbolic machine using 18 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/neg.txt b/openvm/tests/apc_builder_outputs/neg.txt index d148de4d2..ee3cdb3f6 100644 --- a/openvm/tests/apc_builder_outputs/neg.txt +++ b/openvm/tests/apc_builder_outputs/neg.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 22 -> 5 (4.40x reduction) Symbolic machine using 20 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -29,24 +29,24 @@ Symbolic machine using 20 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/not.txt b/openvm/tests/apc_builder_outputs/not.txt index cdd7d3227..b9795c056 100644 --- a/openvm/tests/apc_builder_outputs/not.txt +++ b/openvm/tests/apc_builder_outputs/not.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 22 -> 1 (22.00x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -27,20 +27,20 @@ Symbolic machine using 18 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[b__0_0, 255, a__0_0, 1] diff --git a/openvm/tests/apc_builder_outputs/ret.txt b/openvm/tests/apc_builder_outputs/ret.txt index 3005f9720..6a5b09f08 100644 --- a/openvm/tests/apc_builder_outputs/ret.txt +++ b/openvm/tests/apc_builder_outputs/ret.txt @@ -7,9 +7,9 @@ APC advantage: - Constraints: 9 -> 4 (2.25x reduction) Symbolic machine using 11 unique main columns: + from_state__timestamp_0 rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 @@ -20,18 +20,18 @@ Symbolic machine using 11 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, rs1_aux_cols__base__prev_timestamp_0 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 1] -mult=is_valid * 1, args=[2 * to_pc_limbs__0_0 + 65536 * to_pc_limbs__1_0, rs1_aux_cols__base__prev_timestamp_0 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 3] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[2 * to_pc_limbs__0_0 + 65536 * to_pc_limbs__1_0, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): mult=is_valid * -1, args=[1, 1, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 1, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0 + rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 1, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[to_pc_limbs__1_0, 14] mult=is_valid * 1, args=[to_pc_limbs__0_0, 15] mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: to_pc_least_sig_bit_0 * (to_pc_least_sig_bit_0 - 1) = 0 diff --git a/openvm/tests/apc_builder_outputs/seqz.txt b/openvm/tests/apc_builder_outputs/seqz.txt index 73492737a..fe794522a 100644 --- a/openvm/tests/apc_builder_outputs/seqz.txt +++ b/openvm/tests/apc_builder_outputs/seqz.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 28 -> 18 (1.56x reduction) Symbolic machine using 21 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -30,20 +30,20 @@ Symbolic machine using 21 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/sgtz.txt b/openvm/tests/apc_builder_outputs/sgtz.txt index 36aeb404f..ecfff2294 100644 --- a/openvm/tests/apc_builder_outputs/sgtz.txt +++ b/openvm/tests/apc_builder_outputs/sgtz.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 28 -> 18 (1.56x reduction) Symbolic machine using 23 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -32,24 +32,24 @@ Symbolic machine using 23 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/single_add_0.txt b/openvm/tests/apc_builder_outputs/single_add_0.txt index f4c8d4219..b29345abc 100644 --- a/openvm/tests/apc_builder_outputs/single_add_0.txt +++ b/openvm/tests/apc_builder_outputs/single_add_0.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 22 -> 1 (22.00x reduction) Symbolic machine using 10 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -19,20 +19,20 @@ Symbolic machine using 10 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, 5, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, 5, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_and_0.txt b/openvm/tests/apc_builder_outputs/single_and_0.txt index 84575f88a..366368414 100644 --- a/openvm/tests/apc_builder_outputs/single_and_0.txt +++ b/openvm/tests/apc_builder_outputs/single_and_0.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 22 -> 1 (22.00x reduction) Symbolic machine using 10 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -19,20 +19,20 @@ Symbolic machine using 10 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, 0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_beq.txt b/openvm/tests/apc_builder_outputs/single_beq.txt index dcc7d0c2e..daf690e4f 100644 --- a/openvm/tests/apc_builder_outputs/single_beq.txt +++ b/openvm/tests/apc_builder_outputs/single_beq.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 11 -> 6 (1.83x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -27,20 +27,20 @@ Symbolic machine using 18 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[(2 * a__0_0 - 2 * b__0_0) * diff_inv_marker__0_0 + (2 * a__1_0 - 2 * b__1_0) * diff_inv_marker__1_0 + (2 * a__2_0 - 2 * b__2_0) * diff_inv_marker__2_0 + (2 * a__3_0 - 2 * b__3_0) * diff_inv_marker__3_0 + 2, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[(2 * a__0_0 - 2 * b__0_0) * diff_inv_marker__0_0 + (2 * a__1_0 - 2 * b__1_0) * diff_inv_marker__1_0 + (2 * a__2_0 - 2 * b__2_0) * diff_inv_marker__2_0 + (2 * a__3_0 - 2 * b__3_0) * diff_inv_marker__3_0 + 2, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: ((b__0_0 - a__0_0) * diff_inv_marker__0_0 + (b__1_0 - a__1_0) * diff_inv_marker__1_0 + (b__2_0 - a__2_0) * diff_inv_marker__2_0 + (b__3_0 - a__3_0) * diff_inv_marker__3_0 + 1) * ((b__0_0 - a__0_0) * diff_inv_marker__0_0 + (b__1_0 - a__1_0) * diff_inv_marker__1_0 + (b__2_0 - a__2_0) * diff_inv_marker__2_0 + (b__3_0 - a__3_0) * diff_inv_marker__3_0) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_bge.txt b/openvm/tests/apc_builder_outputs/single_bge.txt index 81f6f3dd9..727c57bc3 100644 --- a/openvm/tests/apc_builder_outputs/single_bge.txt +++ b/openvm/tests/apc_builder_outputs/single_bge.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 25 -> 19 (1.32x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -20,9 +20,9 @@ Symbolic machine using 22 unique main columns: b__1_0 b__2_0 b__3_0 + cmp_result_0 a_msb_f_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -31,42 +31,42 @@ Symbolic machine using 22 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[2 * cmp_lt_0 + 2, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 - 2 * cmp_result_0, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0 + 128, b_msb_f_0 + 128, 0, 0] // Algebraic constraints: --((1 - cmp_lt_0) * cmp_lt_0) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__2_0 * ((a__2_0 - b__2_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__1_0 * ((a__1_0 - b__1_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__0_0 * ((a__0_0 - b__0_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 * is_valid - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (1 - cmp_result_0) = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_bgeu.txt b/openvm/tests/apc_builder_outputs/single_bgeu.txt index 6e6b2e705..81e4a4e0c 100644 --- a/openvm/tests/apc_builder_outputs/single_bgeu.txt +++ b/openvm/tests/apc_builder_outputs/single_bgeu.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 25 -> 19 (1.32x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -20,9 +20,9 @@ Symbolic machine using 22 unique main columns: b__1_0 b__2_0 b__3_0 + cmp_result_0 a_msb_f_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -31,42 +31,42 @@ Symbolic machine using 22 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[2 * cmp_lt_0 + 2, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 - 2 * cmp_result_0, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0, b_msb_f_0, 0, 0] // Algebraic constraints: --((1 - cmp_lt_0) * cmp_lt_0) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__2_0 * ((a__2_0 - b__2_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__1_0 * ((a__1_0 - b__1_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (1 - 2 * cmp_result_0)) = 0 +diff_marker__0_0 * ((a__0_0 - b__0_0) * (1 - 2 * cmp_result_0) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 * is_valid - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * (1 - cmp_result_0) = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_blt.txt b/openvm/tests/apc_builder_outputs/single_blt.txt index 03d92d8d1..b2530af28 100644 --- a/openvm/tests/apc_builder_outputs/single_blt.txt +++ b/openvm/tests/apc_builder_outputs/single_blt.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 25 -> 19 (1.32x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -20,9 +20,9 @@ Symbolic machine using 22 unique main columns: b__1_0 b__2_0 b__3_0 + cmp_result_0 a_msb_f_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -31,42 +31,42 @@ Symbolic machine using 22 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4 - 2 * cmp_lt_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 - 2 * cmp_result_0, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0 + 128, b_msb_f_0 + 128, 0, 0] // Algebraic constraints: -cmp_lt_0 * (cmp_lt_0 - 1) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_result_0 = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_bltu.txt b/openvm/tests/apc_builder_outputs/single_bltu.txt index 6fb26a07c..acd14cf0d 100644 --- a/openvm/tests/apc_builder_outputs/single_bltu.txt +++ b/openvm/tests/apc_builder_outputs/single_bltu.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 25 -> 19 (1.32x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -20,9 +20,9 @@ Symbolic machine using 22 unique main columns: b__1_0 b__2_0 b__3_0 + cmp_result_0 a_msb_f_0 b_msb_f_0 - cmp_lt_0 diff_marker__0_0 diff_marker__1_0 diff_marker__2_0 @@ -31,42 +31,42 @@ Symbolic machine using 22 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4 - 2 * cmp_lt_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4 - 2 * cmp_result_0, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] mult=is_valid * 1, args=[a_msb_f_0, b_msb_f_0, 0, 0] // Algebraic constraints: -cmp_lt_0 * (cmp_lt_0 - 1) = 0 +cmp_result_0 * (cmp_result_0 - 1) = 0 (a__3_0 - a_msb_f_0) * (a_msb_f_0 + 256 - a__3_0) = 0 (b__3_0 - b_msb_f_0) * (b_msb_f_0 + 256 - b__3_0) = 0 diff_marker__3_0 * (diff_marker__3_0 - 1) = 0 -(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - diff_marker__3_0) * ((b_msb_f_0 - a_msb_f_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__3_0 * ((a_msb_f_0 - b_msb_f_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__2_0 * (diff_marker__2_0 - 1) = 0 -(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__2_0 + diff_marker__3_0)) * ((b__2_0 - a__2_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__2_0 * ((a__2_0 - b__2_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__1_0 * (diff_marker__1_0 - 1) = 0 -(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__1_0 - a__1_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__1_0 * ((a__1_0 - b__1_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 diff_marker__0_0 * (diff_marker__0_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_lt_0 - 1)) = 0 -diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_lt_0 - 1) + diff_val_0) = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * ((b__0_0 - a__0_0) * (2 * cmp_result_0 - 1)) = 0 +diff_marker__0_0 * ((a__0_0 - b__0_0) * (2 * cmp_result_0 - 1) + diff_val_0) = 0 (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0 - 1) = 0 -(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_lt_0 = 0 +(1 - (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0)) * cmp_result_0 = 0 (1 - is_valid) * (diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_bne.txt b/openvm/tests/apc_builder_outputs/single_bne.txt index 168300c84..2c3fe60ce 100644 --- a/openvm/tests/apc_builder_outputs/single_bne.txt +++ b/openvm/tests/apc_builder_outputs/single_bne.txt @@ -7,11 +7,11 @@ APC advantage: - Constraints: 11 -> 6 (1.83x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 a__0_0 a__1_0 a__2_0 @@ -27,20 +27,20 @@ Symbolic machine using 18 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[(2 * b__0_0 - 2 * a__0_0) * diff_inv_marker__0_0 + (2 * b__1_0 - 2 * a__1_0) * diff_inv_marker__1_0 + (2 * b__2_0 - 2 * a__2_0) * diff_inv_marker__2_0 + (2 * b__3_0 - 2 * a__3_0) * diff_inv_marker__3_0 + 4, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[(2 * b__0_0 - 2 * a__0_0) * diff_inv_marker__0_0 + (2 * b__1_0 - 2 * a__1_0) * diff_inv_marker__1_0 + (2 * b__2_0 - 2 * a__2_0) * diff_inv_marker__2_0 + (2 * b__3_0 - 2 * a__3_0) * diff_inv_marker__3_0 + 4, from_state__timestamp_0 + 2] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__1__base__prev_timestamp_0 + reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: ((a__0_0 - b__0_0) * diff_inv_marker__0_0 + (a__1_0 - b__1_0) * diff_inv_marker__1_0 + (a__2_0 - b__2_0) * diff_inv_marker__2_0 + (a__3_0 - b__3_0) * diff_inv_marker__3_0) * ((a__0_0 - b__0_0) * diff_inv_marker__0_0 + (a__1_0 - b__1_0) * diff_inv_marker__1_0 + (a__2_0 - b__2_0) * diff_inv_marker__2_0 + (a__3_0 - b__3_0) * diff_inv_marker__3_0 - 1) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_loadb.txt b/openvm/tests/apc_builder_outputs/single_loadb.txt index 3cdd24bc2..11c5d2a8b 100644 --- a/openvm/tests/apc_builder_outputs/single_loadb.txt +++ b/openvm/tests/apc_builder_outputs/single_loadb.txt @@ -7,18 +7,18 @@ APC advantage: - Constraints: 18 -> 6 (3.00x reduction) Symbolic machine using 19 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 - opcode_loadb_flag1_0 + opcode_loadb_flag0_0 shift_most_sig_bit_0 data_most_sig_bit_0 shifted_read_data__0_0 @@ -28,26 +28,26 @@ Symbolic machine using 19 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 3] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (opcode_loadb_flag1_0 + 2 * shift_most_sig_bit_0), shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, read_data_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (opcode_loadb_flag1_0 + 2 * shift_most_sig_bit_0), shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 + opcode_loadb_flag0_0 - (2 * shift_most_sig_bit_0 + 1), shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 + opcode_loadb_flag0_0 - (2 * shift_most_sig_bit_0 + 1), shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): -mult=is_valid * 1, args=[shifted_read_data__0_0 * (1 - opcode_loadb_flag1_0) + shifted_read_data__1_0 * opcode_loadb_flag1_0 - 128 * data_most_sig_bit_0, 7] +mult=is_valid * 1, args=[shifted_read_data__0_0 * opcode_loadb_flag0_0 + shifted_read_data__1_0 * (1 - opcode_loadb_flag0_0) - 128 * data_most_sig_bit_0, 7] mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] -mult=is_valid * 1, args=[503316480 * opcode_loadb_flag1_0 + 1006632960 * shift_most_sig_bit_0 - 503316480 * mem_ptr_limbs__0_0, 14] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] +mult=is_valid * 1, args=[1006632960 * shift_most_sig_bit_0 + 503316480 - (503316480 * mem_ptr_limbs__0_0 + 503316480 * opcode_loadb_flag0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: --((1 - opcode_loadb_flag1_0) * opcode_loadb_flag1_0) = 0 +opcode_loadb_flag0_0 * (opcode_loadb_flag0_0 - 1) = 0 data_most_sig_bit_0 * (data_most_sig_bit_0 - 1) = 0 shift_most_sig_bit_0 * (shift_most_sig_bit_0 - 1) = 0 (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 92160 * is_valid)) * (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 92161)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_loadbu.txt b/openvm/tests/apc_builder_outputs/single_loadbu.txt index b227d823d..41b72794f 100644 --- a/openvm/tests/apc_builder_outputs/single_loadbu.txt +++ b/openvm/tests/apc_builder_outputs/single_loadbu.txt @@ -7,19 +7,19 @@ APC advantage: - Constraints: 25 -> 14 (1.79x reduction) Symbolic machine using 26 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 flags__0_0 flags__1_0 flags__2_0 @@ -35,26 +35,26 @@ Symbolic machine using 26 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[2, flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 2 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 3 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[2, flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 2 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 3 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[2, flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 2 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 3 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[2, flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 2 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 3 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__0_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1) + 1006632960 * flags__3_0 * (flags__3_0 - 1)) * read_data__0_0 + flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__1_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__2_0 + flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), 0, 0, 0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__0_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1) + 1006632960 * flags__3_0 * (flags__3_0 - 1)) * read_data__0_0 + flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__1_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__2_0 + flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[503316480 * flags__2_0 * (flags__2_0 - 1) + 503316481 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 503316480 * flags__1_0 * flags__2_0 + 1006632960 * flags__0_0 * flags__2_0 + 1006632960 * flags__1_0 * flags__3_0 - (503316480 * flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 1006632960 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 503316481 * flags__2_0 * flags__3_0 + 503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: flags__0_0 * ((flags__0_0 - 1) * (flags__0_0 - 2)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_loadh.txt b/openvm/tests/apc_builder_outputs/single_loadh.txt index 78bb9ba3a..b390356f4 100644 --- a/openvm/tests/apc_builder_outputs/single_loadh.txt +++ b/openvm/tests/apc_builder_outputs/single_loadh.txt @@ -7,19 +7,19 @@ APC advantage: - Constraints: 18 -> 5 (3.60x reduction) Symbolic machine using 24 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 shift_most_sig_bit_0 data_most_sig_bit_0 shifted_read_data__0_0 @@ -33,27 +33,27 @@ Symbolic machine using 24 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - 2 * shift_most_sig_bit_0, shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - 2 * shift_most_sig_bit_0, shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - 2 * shift_most_sig_bit_0, shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - 2 * shift_most_sig_bit_0, shift_most_sig_bit_0 * shifted_read_data__2_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__0_0, shift_most_sig_bit_0 * shifted_read_data__3_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__1_0, shift_most_sig_bit_0 * shifted_read_data__0_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__2_0, shift_most_sig_bit_0 * shifted_read_data__1_0 + (1 - shift_most_sig_bit_0) * shifted_read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, shifted_read_data__0_0, shifted_read_data__1_0, 255 * data_most_sig_bit_0, 255 * data_most_sig_bit_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, shifted_read_data__0_0, shifted_read_data__1_0, 255 * data_most_sig_bit_0, 255 * data_most_sig_bit_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[shifted_read_data__1_0 - 128 * data_most_sig_bit_0, 7] mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[1006632960 * shift_most_sig_bit_0 - 503316480 * mem_ptr_limbs__0_0, 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: data_most_sig_bit_0 * (data_most_sig_bit_0 - 1) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_loadhu.txt b/openvm/tests/apc_builder_outputs/single_loadhu.txt index 560886d72..d029bd7ed 100644 --- a/openvm/tests/apc_builder_outputs/single_loadhu.txt +++ b/openvm/tests/apc_builder_outputs/single_loadhu.txt @@ -7,15 +7,15 @@ APC advantage: - Constraints: 25 -> 9 (2.78x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 flags__1_0 @@ -27,22 +27,22 @@ Symbolic machine using 18 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0] -mult=is_valid * 1, args=[4, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 3] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[2, 2 * flags__1_0 * (flags__1_0 + flags__2_0 - 2) + 3 * flags__2_0 * (flags__1_0 + flags__2_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[2, 2 * flags__1_0 * (flags__1_0 + flags__2_0 - 2) + 3 * flags__2_0 * (flags__1_0 + flags__2_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0 + read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[2, 2 * flags__1_0 * (flags__1_0 + flags__2_0 - 2) + 3 * flags__2_0 * (flags__1_0 + flags__2_0 - 2) + mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - flags__2_0 * (flags__2_0 - 1), read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[503316480 * flags__2_0 * (flags__2_0 - 1) + 503316481 * flags__2_0 * (flags__1_0 + flags__2_0 - 2) + 503316480 * flags__1_0 * flags__2_0 - (1006632960 * flags__1_0 * (flags__1_0 + flags__2_0 - 2) + 503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] // Algebraic constraints: flags__1_0 * ((flags__1_0 - 1) * (flags__1_0 - 2)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_loadw.txt b/openvm/tests/apc_builder_outputs/single_loadw.txt index 7b0f623ed..3a71d315e 100644 --- a/openvm/tests/apc_builder_outputs/single_loadw.txt +++ b/openvm/tests/apc_builder_outputs/single_loadw.txt @@ -7,50 +7,50 @@ APC advantage: - Constraints: 25 -> 3 (8.33x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + read_data__0_0 + read_data__1_0 + read_data__2_0 + read_data__3_0 prev_data__0_0 prev_data__1_0 prev_data__2_0 prev_data__3_0 - write_data__0_0 - write_data__1_0 - write_data__2_0 - write_data__3_0 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[-(503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 614400 * is_valid)) * (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 614401)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_sll.txt b/openvm/tests/apc_builder_outputs/single_sll.txt index 0fd906c51..7c51e1f0d 100644 --- a/openvm/tests/apc_builder_outputs/single_sll.txt +++ b/openvm/tests/apc_builder_outputs/single_sll.txt @@ -7,48 +7,48 @@ APC advantage: - Constraints: 76 -> 1 (76.00x reduction) Symbolic machine using 18 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 writes_aux__prev_data__3_0 + a__0_0 + a__1_0 + a__2_0 + a__3_0 b__0_0 b__1_0 b__2_0 b__3_0 - bit_shift_carry__0_0 - bit_shift_carry__1_0 - bit_shift_carry__2_0 - bit_shift_carry__3_0 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 68, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 68, 8 * b__0_0 - 256 * bit_shift_carry__0_0, 8 * b__1_0 + bit_shift_carry__0_0 - 256 * bit_shift_carry__1_0, 8 * b__2_0 + bit_shift_carry__1_0 - 256 * bit_shift_carry__2_0, 8 * b__3_0 + bit_shift_carry__2_0 - 256 * bit_shift_carry__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 68, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): -mult=is_valid * 1, args=[bit_shift_carry__0_0, 3] -mult=is_valid * 1, args=[bit_shift_carry__1_0, 3] -mult=is_valid * 1, args=[bit_shift_carry__2_0, 3] -mult=is_valid * 1, args=[bit_shift_carry__3_0, 3] +mult=is_valid * 1, args=[7864320 * a__0_0 - 62914560 * b__0_0, 3] +mult=is_valid * 1, args=[30720 * a__0_0 + 7864320 * a__1_0 - (245760 * b__0_0 + 62914560 * b__1_0), 3] +mult=is_valid * 1, args=[120 * a__0_0 + 30720 * a__1_0 + 7864320 * a__2_0 - (960 * b__0_0 + 245760 * b__1_0 + 62914560 * b__2_0), 3] +mult=is_valid * 1, args=[120 * a__1_0 + 30720 * a__2_0 + 7864320 * a__3_0 - (943718400 * a__0_0 + 503316484 * b__0_0 + 960 * b__1_0 + 245760 * b__2_0 + 62914560 * b__3_0), 3] mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): -mult=is_valid * 1, args=[8 * b__0_0 - 256 * bit_shift_carry__0_0, 8 * b__1_0 + bit_shift_carry__0_0 - 256 * bit_shift_carry__1_0, 0, 0] -mult=is_valid * 1, args=[8 * b__2_0 + bit_shift_carry__1_0 - 256 * bit_shift_carry__2_0, 8 * b__3_0 + bit_shift_carry__2_0 - 256 * bit_shift_carry__3_0, 0, 0] +mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] +mult=is_valid * 1, args=[a__2_0, a__3_0, 0, 0] // Algebraic constraints: is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_sll_by_8.txt b/openvm/tests/apc_builder_outputs/single_sll_by_8.txt index 86a43ed82..3c3c0d440 100644 --- a/openvm/tests/apc_builder_outputs/single_sll_by_8.txt +++ b/openvm/tests/apc_builder_outputs/single_sll_by_8.txt @@ -7,36 +7,36 @@ APC advantage: - Constraints: 76 -> 1 (76.00x reduction) Symbolic machine using 14 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 writes_aux__prev_data__3_0 - b__0_0 - b__1_0 - b__2_0 + a__1_0 + a__2_0 + a__3_0 b__3_0 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 40, a__1_0, a__2_0, a__3_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 40, a__1_0, a__2_0, a__3_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 68, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 68, 0, b__0_0, b__1_0, b__2_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 68, 0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_sra.txt b/openvm/tests/apc_builder_outputs/single_sra.txt index 288b520d9..fa1d7ad4b 100644 --- a/openvm/tests/apc_builder_outputs/single_sra.txt +++ b/openvm/tests/apc_builder_outputs/single_sra.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 76 -> 38 (2.00x reduction) Symbolic machine using 40 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -32,16 +32,16 @@ Symbolic machine using 40 unique main columns: c__3_0 bit_multiplier_right_0 b_sign_0 + bit_shift_marker__0_0 bit_shift_marker__1_0 bit_shift_marker__2_0 bit_shift_marker__3_0 bit_shift_marker__4_0 bit_shift_marker__5_0 bit_shift_marker__6_0 - bit_shift_marker__7_0 + limb_shift_marker__0_0 limb_shift_marker__1_0 limb_shift_marker__2_0 - limb_shift_marker__3_0 bit_shift_carry__0_0 bit_shift_carry__1_0 bit_shift_carry__2_0 @@ -49,29 +49,29 @@ Symbolic machine using 40 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 3, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 3, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 3, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 3, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 68, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 68, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 68, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): -mult=is_valid * 1, args=[62914560 * bit_shift_marker__1_0 + 125829120 * bit_shift_marker__2_0 + 188743680 * bit_shift_marker__3_0 + 251658240 * bit_shift_marker__4_0 + 314572800 * bit_shift_marker__5_0 + 377487360 * bit_shift_marker__6_0 + 440401920 * bit_shift_marker__7_0 + 503316480 * limb_shift_marker__1_0 + 1006632960 * limb_shift_marker__2_0 - (62914560 * c__0_0 + 503316481 * limb_shift_marker__3_0), 3] -mult=is_valid * 1, args=[bit_shift_carry__0_0, bit_shift_marker__1_0 + 2 * bit_shift_marker__2_0 + 3 * bit_shift_marker__3_0 + 4 * bit_shift_marker__4_0 + 5 * bit_shift_marker__5_0 + 6 * bit_shift_marker__6_0 + 7 * bit_shift_marker__7_0] -mult=is_valid * 1, args=[bit_shift_carry__1_0, bit_shift_marker__1_0 + 2 * bit_shift_marker__2_0 + 3 * bit_shift_marker__3_0 + 4 * bit_shift_marker__4_0 + 5 * bit_shift_marker__5_0 + 6 * bit_shift_marker__6_0 + 7 * bit_shift_marker__7_0] -mult=is_valid * 1, args=[bit_shift_carry__2_0, bit_shift_marker__1_0 + 2 * bit_shift_marker__2_0 + 3 * bit_shift_marker__3_0 + 4 * bit_shift_marker__4_0 + 5 * bit_shift_marker__5_0 + 6 * bit_shift_marker__6_0 + 7 * bit_shift_marker__7_0] -mult=is_valid * 1, args=[bit_shift_carry__3_0, bit_shift_marker__1_0 + 2 * bit_shift_marker__2_0 + 3 * bit_shift_marker__3_0 + 4 * bit_shift_marker__4_0 + 5 * bit_shift_marker__5_0 + 6 * bit_shift_marker__6_0 + 7 * bit_shift_marker__7_0] +mult=is_valid * 1, args=[503316481 * limb_shift_marker__0_0 - (62914560 * c__0_0 + 440401920 * bit_shift_marker__0_0 + 377487360 * bit_shift_marker__1_0 + 314572800 * bit_shift_marker__2_0 + 251658240 * bit_shift_marker__3_0 + 188743680 * bit_shift_marker__4_0 + 125829120 * bit_shift_marker__5_0 + 62914560 * bit_shift_marker__6_0 + 1006632960 * limb_shift_marker__1_0 + 503316480 * limb_shift_marker__2_0 + 62914561), 3] +mult=is_valid * 1, args=[bit_shift_carry__0_0, 7 - (7 * bit_shift_marker__0_0 + 6 * bit_shift_marker__1_0 + 5 * bit_shift_marker__2_0 + 4 * bit_shift_marker__3_0 + 3 * bit_shift_marker__4_0 + 2 * bit_shift_marker__5_0 + bit_shift_marker__6_0)] +mult=is_valid * 1, args=[bit_shift_carry__1_0, 7 - (7 * bit_shift_marker__0_0 + 6 * bit_shift_marker__1_0 + 5 * bit_shift_marker__2_0 + 4 * bit_shift_marker__3_0 + 3 * bit_shift_marker__4_0 + 2 * bit_shift_marker__5_0 + bit_shift_marker__6_0)] +mult=is_valid * 1, args=[bit_shift_carry__2_0, 7 - (7 * bit_shift_marker__0_0 + 6 * bit_shift_marker__1_0 + 5 * bit_shift_marker__2_0 + 4 * bit_shift_marker__3_0 + 3 * bit_shift_marker__4_0 + 2 * bit_shift_marker__5_0 + bit_shift_marker__6_0)] +mult=is_valid * 1, args=[bit_shift_carry__3_0, 7 - (7 * bit_shift_marker__0_0 + 6 * bit_shift_marker__1_0 + 5 * bit_shift_marker__2_0 + 4 * bit_shift_marker__3_0 + 3 * bit_shift_marker__4_0 + 2 * bit_shift_marker__5_0 + bit_shift_marker__6_0)] mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[b__3_0, 128, b__3_0 + 128 - 256 * b_sign_0, 1] @@ -79,8 +79,8 @@ mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] mult=is_valid * 1, args=[a__2_0, a__3_0, 0, 0] // Algebraic constraints: --((1 - (bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0 + bit_shift_marker__7_0)) * (bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0 + bit_shift_marker__7_0)) = 0 -(1 * is_valid - (bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0 + bit_shift_marker__7_0)) * (bit_multiplier_right_0 - 1) = 0 +bit_shift_marker__0_0 * (bit_shift_marker__0_0 - 1) = 0 +bit_shift_marker__0_0 * (bit_multiplier_right_0 - 1) = 0 bit_shift_marker__1_0 * (bit_shift_marker__1_0 - 1) = 0 bit_shift_marker__1_0 * (bit_multiplier_right_0 - 2) = 0 bit_shift_marker__2_0 * (bit_shift_marker__2_0 - 1) = 0 @@ -93,13 +93,13 @@ bit_shift_marker__5_0 * (bit_shift_marker__5_0 - 1) = 0 bit_shift_marker__5_0 * (bit_multiplier_right_0 - 32) = 0 bit_shift_marker__6_0 * (bit_shift_marker__6_0 - 1) = 0 bit_shift_marker__6_0 * (bit_multiplier_right_0 - 64) = 0 -bit_shift_marker__7_0 * (bit_shift_marker__7_0 - 1) = 0 -bit_shift_marker__7_0 * (bit_multiplier_right_0 - 128) = 0 --((1 - (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) * (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) = 0 -(1 - (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__0_0 - (b__0_0 + 256 * bit_shift_carry__1_0)) = 0 -(1 - (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) * (a__1_0 * bit_multiplier_right_0 + bit_shift_carry__1_0 - (b__1_0 + 256 * bit_shift_carry__2_0)) = 0 -(1 - (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) * (a__2_0 * bit_multiplier_right_0 + bit_shift_carry__2_0 - (b__2_0 + 256 * bit_shift_carry__3_0)) = 0 -(1 - (limb_shift_marker__1_0 + limb_shift_marker__2_0 + limb_shift_marker__3_0)) * (a__3_0 * bit_multiplier_right_0 + bit_shift_carry__3_0 - (256 * b_sign_0 * (bit_multiplier_right_0 - 1) + b__3_0)) = 0 +-((1 - (bit_shift_marker__0_0 + bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0)) * (bit_shift_marker__0_0 + bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0)) = 0 +(1 * is_valid - (bit_shift_marker__0_0 + bit_shift_marker__1_0 + bit_shift_marker__2_0 + bit_shift_marker__3_0 + bit_shift_marker__4_0 + bit_shift_marker__5_0 + bit_shift_marker__6_0)) * (bit_multiplier_right_0 - 128) = 0 +limb_shift_marker__0_0 * (limb_shift_marker__0_0 - 1) = 0 +limb_shift_marker__0_0 * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__0_0 - (b__0_0 + 256 * bit_shift_carry__1_0)) = 0 +limb_shift_marker__0_0 * (a__1_0 * bit_multiplier_right_0 + bit_shift_carry__1_0 - (b__1_0 + 256 * bit_shift_carry__2_0)) = 0 +limb_shift_marker__0_0 * (a__2_0 * bit_multiplier_right_0 + bit_shift_carry__2_0 - (b__2_0 + 256 * bit_shift_carry__3_0)) = 0 +limb_shift_marker__0_0 * (a__3_0 * bit_multiplier_right_0 + bit_shift_carry__3_0 - (256 * b_sign_0 * (bit_multiplier_right_0 - 1) + b__3_0)) = 0 limb_shift_marker__1_0 * (limb_shift_marker__1_0 - 1) = 0 limb_shift_marker__1_0 * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__1_0 - (b__1_0 + 256 * bit_shift_carry__2_0)) = 0 limb_shift_marker__1_0 * (a__1_0 * bit_multiplier_right_0 + bit_shift_carry__2_0 - (b__2_0 + 256 * bit_shift_carry__3_0)) = 0 @@ -110,10 +110,10 @@ limb_shift_marker__2_0 * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__2_0 limb_shift_marker__2_0 * (a__1_0 * bit_multiplier_right_0 + bit_shift_carry__3_0 - (256 * b_sign_0 * (bit_multiplier_right_0 - 1) + b__3_0)) = 0 limb_shift_marker__2_0 * (a__2_0 - 255 * b_sign_0) = 0 limb_shift_marker__2_0 * (a__3_0 - 255 * b_sign_0) = 0 -limb_shift_marker__3_0 * (limb_shift_marker__3_0 - 1) = 0 -limb_shift_marker__3_0 * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__3_0 - (256 * b_sign_0 * (bit_multiplier_right_0 - 1) + b__3_0)) = 0 -limb_shift_marker__3_0 * (a__1_0 - 255 * b_sign_0) = 0 -limb_shift_marker__3_0 * (a__2_0 - 255 * b_sign_0) = 0 -limb_shift_marker__3_0 * (a__3_0 - 255 * b_sign_0) = 0 +-((1 - (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) * (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) = 0 +(1 - (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) * (a__0_0 * bit_multiplier_right_0 + bit_shift_carry__3_0 - (256 * b_sign_0 * (bit_multiplier_right_0 - 1) + b__3_0)) = 0 +(1 - (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) * (a__1_0 - 255 * b_sign_0) = 0 +(1 - (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) * (a__2_0 - 255 * b_sign_0) = 0 +(1 - (limb_shift_marker__0_0 + limb_shift_marker__1_0 + limb_shift_marker__2_0)) * (a__3_0 - 255 * b_sign_0) = 0 b_sign_0 * (b_sign_0 - 1) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_srl.txt b/openvm/tests/apc_builder_outputs/single_srl.txt index 3bf7513f8..6d60be8e5 100644 --- a/openvm/tests/apc_builder_outputs/single_srl.txt +++ b/openvm/tests/apc_builder_outputs/single_srl.txt @@ -7,41 +7,41 @@ APC advantage: - Constraints: 76 -> 1 (76.00x reduction) Symbolic machine using 15 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 writes_aux__prev_data__3_0 + a__0_0 b__0_0 b__1_0 b__2_0 b__3_0 - bit_shift_carry__3_0 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] +mult=is_valid * -1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 40, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] mult=is_valid * -1, args=[1, 68, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 68, 1006632960 * bit_shift_carry__3_0 - 1006632960 * b__3_0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 68, a__0_0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): -mult=is_valid * 1, args=[bit_shift_carry__3_0, 1] +mult=is_valid * 1, args=[b__3_0 - 2 * a__0_0, 1] mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): -mult=is_valid * 1, args=[1006632960 * bit_shift_carry__3_0 - 1006632960 * b__3_0, 0, 0, 0] +mult=is_valid * 1, args=[a__0_0, 0, 0, 0] // Algebraic constraints: is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/apc_builder_outputs/single_storeb.txt b/openvm/tests/apc_builder_outputs/single_storeb.txt index 1e6a0a50e..421cc4c15 100644 --- a/openvm/tests/apc_builder_outputs/single_storeb.txt +++ b/openvm/tests/apc_builder_outputs/single_storeb.txt @@ -7,19 +7,19 @@ APC advantage: - Constraints: 25 -> 11 (2.27x reduction) Symbolic machine using 26 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 flags__0_0 flags__1_0 flags__2_0 @@ -35,26 +35,26 @@ Symbolic machine using 26 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__0_0 * flags__2_0 + 2 * flags__1_0 * flags__3_0 + 3 * flags__2_0 * flags__3_0), prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__0_0 * flags__2_0 + 2 * flags__1_0 * flags__3_0 + 3 * flags__2_0 * flags__3_0), (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__0_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1) + 1006632960 * flags__3_0 * (flags__3_0 - 1)) * read_data__0_0 + flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__1_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__2_0 + flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), (flags__0_0 * flags__1_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__1_0 + flags__1_0 * flags__2_0 * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__1_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1)) * read_data__1_0 + 1006632960 * flags__2_0 * (flags__2_0 - 1) * read_data__3_0), (flags__0_0 * flags__2_0 + flags__1_0 * flags__3_0) * read_data__0_0 + (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__2_0 + flags__2_0 * flags__3_0) * prev_data__2_0 - (1006632960 * flags__0_0 * (flags__0_0 - 1) * read_data__2_0 + flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__2_0), flags__2_0 * flags__3_0 * read_data__0_0 + flags__0_0 * flags__2_0 * read_data__1_0 + (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0) * prev_data__3_0 - (1006632960 * flags__0_0 * (flags__0_0 - 1) * read_data__3_0 + flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__0_0 * flags__2_0 + 2 * flags__1_0 * flags__3_0 + 3 * flags__2_0 * flags__3_0), (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__0_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1) + 1006632960 * flags__3_0 * (flags__3_0 - 1)) * read_data__0_0 + flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__1_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__2_0 + flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), (flags__0_0 * flags__1_0 - flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2)) * read_data__1_0 + flags__1_0 * flags__2_0 * read_data__0_0 + (flags__0_0 * flags__2_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__3_0 + flags__2_0 * flags__3_0) * prev_data__1_0 - ((1006632960 * flags__0_0 * (flags__0_0 - 1) + 1006632960 * flags__1_0 * (flags__1_0 - 1)) * read_data__1_0 + 1006632960 * flags__2_0 * (flags__2_0 - 1) * read_data__3_0), (flags__0_0 * flags__2_0 + flags__1_0 * flags__3_0) * read_data__0_0 + (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__2_0 + flags__2_0 * flags__3_0) * prev_data__2_0 - (1006632960 * flags__0_0 * (flags__0_0 - 1) * read_data__2_0 + flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__2_0), flags__2_0 * flags__3_0 * read_data__0_0 + flags__0_0 * flags__2_0 * read_data__1_0 + (flags__0_0 * flags__1_0 + flags__0_0 * flags__3_0 + flags__1_0 * flags__2_0 + flags__1_0 * flags__3_0) * prev_data__3_0 - (1006632960 * flags__0_0 * (flags__0_0 - 1) * read_data__3_0 + flags__3_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) * read_data__3_0), from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[503316480 * flags__2_0 * (flags__2_0 - 1) + 503316481 * flags__2_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 503316480 * flags__1_0 * flags__2_0 + 1006632960 * flags__0_0 * flags__2_0 + 1006632960 * flags__1_0 * flags__3_0 - (503316480 * flags__0_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 1006632960 * flags__1_0 * (flags__0_0 + flags__1_0 + flags__2_0 + flags__3_0 - 2) + 503316481 * flags__2_0 * flags__3_0 + 503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: flags__0_0 * ((flags__0_0 - 1) * (flags__0_0 - 2)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_storeh.txt b/openvm/tests/apc_builder_outputs/single_storeh.txt index c5cf622da..9ed2e322e 100644 --- a/openvm/tests/apc_builder_outputs/single_storeh.txt +++ b/openvm/tests/apc_builder_outputs/single_storeh.txt @@ -7,19 +7,19 @@ APC advantage: - Constraints: 25 -> 9 (2.78x reduction) Symbolic machine using 24 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 flags__1_0 flags__2_0 read_data__0_0 @@ -33,26 +33,26 @@ Symbolic machine using 24 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__2_0), prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__2_0), (1 - (flags__1_0 + flags__2_0)) * read_data__1_0 + flags__1_0 * read_data__0_0 + (flags__1_0 * flags__2_0 + flags__2_0) * prev_data__0_0 - (1006632960 * flags__1_0 * (flags__1_0 - 1) * read_data__0_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__1_0 + flags__2_0 - 1)) * read_data__2_0 + flags__2_0 * (flags__1_0 + flags__2_0 - 1) * read_data__3_0), flags__1_0 * read_data__1_0 + flags__1_0 * flags__2_0 * read_data__0_0 + flags__2_0 * prev_data__1_0 - (1006632960 * flags__1_0 * (flags__1_0 - 1) * read_data__1_0 + 1006632960 * flags__2_0 * (flags__2_0 - 1) * read_data__3_0), flags__2_0 * read_data__0_0 + (flags__1_0 * flags__2_0 + flags__1_0) * prev_data__2_0, flags__2_0 * read_data__1_0 + (flags__1_0 * flags__2_0 + flags__1_0) * prev_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0 - (flags__1_0 * flags__2_0 + 2 * flags__2_0), (1 - (flags__1_0 + flags__2_0)) * read_data__1_0 + flags__1_0 * read_data__0_0 + (flags__1_0 * flags__2_0 + flags__2_0) * prev_data__0_0 - (1006632960 * flags__1_0 * (flags__1_0 - 1) * read_data__0_0 + (1006632960 * flags__2_0 * (flags__2_0 - 1) + flags__1_0 * (flags__1_0 + flags__2_0 - 1)) * read_data__2_0 + flags__2_0 * (flags__1_0 + flags__2_0 - 1) * read_data__3_0), flags__1_0 * read_data__1_0 + flags__1_0 * flags__2_0 * read_data__0_0 + flags__2_0 * prev_data__1_0 - (1006632960 * flags__1_0 * (flags__1_0 - 1) * read_data__1_0 + 1006632960 * flags__2_0 * (flags__2_0 - 1) * read_data__3_0), flags__2_0 * read_data__0_0 + (flags__1_0 * flags__2_0 + flags__1_0) * prev_data__2_0, flags__2_0 * read_data__1_0 + (flags__1_0 * flags__2_0 + flags__1_0) * prev_data__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[503316480 * flags__2_0 * (flags__2_0 - 1) + 503316481 * flags__2_0 * (flags__1_0 + flags__2_0 - 1) + 503316480 * flags__1_0 * flags__2_0 + 503316480 * flags__2_0 + 503316480 - (1006632960 * flags__1_0 * (flags__1_0 + flags__2_0 - 1) + 503316480 * mem_ptr_limbs__0_0 + 503316480 * flags__1_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: flags__1_0 * ((flags__1_0 - 1) * (flags__1_0 - 2)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_storew.txt b/openvm/tests/apc_builder_outputs/single_storew.txt index fc6e89abe..4218d78b4 100644 --- a/openvm/tests/apc_builder_outputs/single_storew.txt +++ b/openvm/tests/apc_builder_outputs/single_storew.txt @@ -7,50 +7,50 @@ APC advantage: - Constraints: 25 -> 3 (8.33x reduction) Symbolic machine using 22 unique main columns: + from_state__timestamp_0 rs1_data__0_0 rs1_data__1_0 rs1_data__2_0 rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + read_data__0_0 + read_data__1_0 + read_data__2_0 + read_data__3_0 prev_data__0_0 prev_data__1_0 prev_data__2_0 prev_data__3_0 - write_data__0_0 - write_data__1_0 - write_data__2_0 - write_data__3_0 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 8, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 8, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, write_data__0_0, write_data__1_0, write_data__2_0, write_data__3_0, write_base_aux__prev_timestamp_0 + write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[-(503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Algebraic constraints: (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 122880 * is_valid)) * (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 122881)) = 0 diff --git a/openvm/tests/apc_builder_outputs/single_sub.txt b/openvm/tests/apc_builder_outputs/single_sub.txt index 98433e0d6..92026d791 100644 --- a/openvm/tests/apc_builder_outputs/single_sub.txt +++ b/openvm/tests/apc_builder_outputs/single_sub.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 22 -> 5 (4.40x reduction) Symbolic machine using 24 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -33,24 +33,24 @@ Symbolic machine using 24 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[a__0_0, a__1_0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/single_xor.txt b/openvm/tests/apc_builder_outputs/single_xor.txt index de3a906ed..a584b5e6d 100644 --- a/openvm/tests/apc_builder_outputs/single_xor.txt +++ b/openvm/tests/apc_builder_outputs/single_xor.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 22 -> 1 (22.00x reduction) Symbolic machine using 24 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -33,24 +33,24 @@ Symbolic machine using 24 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 7, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, a__0_0, a__1_0, a__2_0, a__3_0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=is_valid * 1, args=[b__0_0, c__0_0, a__0_0, 1] diff --git a/openvm/tests/apc_builder_outputs/sltz.txt b/openvm/tests/apc_builder_outputs/sltz.txt index 6a4f9fa3d..45257903b 100644 --- a/openvm/tests/apc_builder_outputs/sltz.txt +++ b/openvm/tests/apc_builder_outputs/sltz.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 28 -> 18 (1.56x reduction) Symbolic machine using 23 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -32,24 +32,24 @@ Symbolic machine using 23 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, b__0_0, b__1_0, b__2_0, b__3_0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/snez.txt b/openvm/tests/apc_builder_outputs/snez.txt index 4d429e5e4..66b5e0a67 100644 --- a/openvm/tests/apc_builder_outputs/snez.txt +++ b/openvm/tests/apc_builder_outputs/snez.txt @@ -7,13 +7,13 @@ APC advantage: - Constraints: 28 -> 18 (1.56x reduction) Symbolic machine using 23 unique main columns: + from_state__timestamp_0 + reads_aux__0__base__prev_timestamp_0 reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + reads_aux__1__base__prev_timestamp_0 reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__base__prev_timestamp_0 writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 writes_aux__prev_data__0_0 writes_aux__prev_data__1_0 writes_aux__prev_data__2_0 @@ -32,24 +32,24 @@ Symbolic machine using 23 unique main columns: is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * 1, args=[4, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[4, from_state__timestamp_0 + 3] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0 + 2)] -mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - 1] -mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 - (reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0 + 1)] -mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0] +mult=is_valid * -1, args=[1, 0, 0, 0, 0, 0, reads_aux__0__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 0, 0, 0, 0, 0, from_state__timestamp_0] +mult=is_valid * -1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, reads_aux__1__base__prev_timestamp_0] +mult=is_valid * 1, args=[1, 5, c__0_0, c__1_0, c__2_0, c__3_0, from_state__timestamp_0 + 1] mult=is_valid * -1, args=[1, 8, writes_aux__prev_data__0_0, writes_aux__prev_data__1_0, writes_aux__prev_data__2_0, writes_aux__prev_data__3_0, writes_aux__base__prev_timestamp_0] -mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, writes_aux__base__prev_timestamp_0 + writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * writes_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 1] +mult=is_valid * 1, args=[1, 8, cmp_result_0, 0, 0, 0, from_state__timestamp_0 + 2] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__0__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__0__base__prev_timestamp_0 + 15360 * reads_aux__0__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[reads_aux__1__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * reads_aux__1__base__prev_timestamp_0 + 15360 * reads_aux__1__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[writes_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * writes_aux__base__prev_timestamp_0 + 15360 * writes_aux__base__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] // Bus 6 (OPENVM_BITWISE_LOOKUP): mult=diff_marker__0_0 + diff_marker__1_0 + diff_marker__2_0 + diff_marker__3_0, args=[diff_val_0 - 1, 0, 0, 0] diff --git a/openvm/tests/apc_builder_outputs/stack_accesses.txt b/openvm/tests/apc_builder_outputs/stack_accesses.txt index c9276258a..3b6046cda 100644 --- a/openvm/tests/apc_builder_outputs/stack_accesses.txt +++ b/openvm/tests/apc_builder_outputs/stack_accesses.txt @@ -4,87 +4,83 @@ Instructions: STOREW rd_rs2_ptr = 8, rs1_ptr = 2, imm = 24, mem_as = 2, needs_write = 1, imm_sign = 0 APC advantage: - - Main columns: 123 -> 38 (3.24x reduction) - - Bus interactions: 51 -> 28 (1.82x reduction) + - Main columns: 123 -> 36 (3.42x reduction) + - Bus interactions: 51 -> 26 (1.96x reduction) - Constraints: 75 -> 5 (15.00x reduction) -Symbolic machine using 38 unique main columns: +Symbolic machine using 36 unique main columns: + from_state__timestamp_0 + rs1_data__0_0 + rs1_data__1_0 + rs1_data__2_0 + rs1_data__3_0 + rs1_aux_cols__base__prev_timestamp_0 rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 - rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + read_data_aux__base__prev_timestamp_0 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 mem_ptr_limbs__0_0 mem_ptr_limbs__1_0 + write_base_aux__prev_timestamp_0 write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + read_data__0_0 + read_data__1_0 + read_data__2_0 + read_data__3_0 prev_data__0_0 prev_data__1_0 prev_data__2_0 prev_data__3_0 + read_data_aux__base__prev_timestamp_1 read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 - read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1 mem_ptr_limbs__0_1 mem_ptr_limbs__1_1 + write_base_aux__prev_timestamp_1 write_base_aux__timestamp_lt_aux__lower_decomp__0_1 - write_base_aux__timestamp_lt_aux__lower_decomp__1_1 + read_data__0_1 + read_data__1_1 + read_data__2_1 + read_data__3_1 prev_data__0_1 prev_data__1_1 prev_data__2_1 prev_data__3_1 - rs1_data__0_2 - rs1_data__1_2 - rs1_data__2_2 - rs1_data__3_2 - write_base_aux__prev_timestamp_2 - write_base_aux__timestamp_lt_aux__lower_decomp__0_2 - write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - prev_data__0_2 - prev_data__1_2 - prev_data__2_2 - prev_data__3_2 - write_data__0_2 - write_data__1_2 - write_data__2_2 - write_data__3_2 is_valid // Bus 0 (EXECUTION_BRIDGE): -mult=is_valid * -1, args=[0, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - 7] -mult=is_valid * 1, args=[12, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 + 2] +mult=is_valid * -1, args=[0, from_state__timestamp_0] +mult=is_valid * 1, args=[12, from_state__timestamp_0 + 9] // Bus 1 (MEMORY): -mult=is_valid * -1, args=[1, 2, rs1_data__0_2, rs1_data__1_2, rs1_data__2_2, rs1_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - (rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0 + 8)] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, write_data__0_2, write_data__1_2, write_data__2_2, write_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0 + 7)] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, write_data__0_2, write_data__1_2, write_data__2_2, write_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - 6] -mult=is_valid * -1, args=[1, 8, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - (write_base_aux__timestamp_lt_aux__lower_decomp__0_0 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_0 + 6)] -mult=is_valid * -1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, prev_data__0_2, prev_data__1_2, prev_data__2_2, prev_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - (read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 + 131072 * read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1 + 4)] -mult=is_valid * -1, args=[1, 9, prev_data__0_1, prev_data__1_1, prev_data__2_1, prev_data__3_1, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - (write_base_aux__timestamp_lt_aux__lower_decomp__0_1 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_1 + 3)] -mult=is_valid * 1, args=[1, 9, prev_data__0_2, prev_data__1_2, prev_data__2_2, prev_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - 2] -mult=is_valid * 1, args=[1, 2, rs1_data__0_2, rs1_data__1_2, rs1_data__2_2, rs1_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 - 1] -mult=is_valid * 1, args=[1, 8, write_data__0_2, write_data__1_2, write_data__2_2, write_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2] -mult=is_valid * 1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, write_data__0_2, write_data__1_2, write_data__2_2, write_data__3_2, write_base_aux__prev_timestamp_2 + write_base_aux__timestamp_lt_aux__lower_decomp__0_2 + 131072 * write_base_aux__timestamp_lt_aux__lower_decomp__1_2 + 1] +mult=is_valid * -1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, rs1_aux_cols__base__prev_timestamp_0] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, read_data_aux__base__prev_timestamp_0] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_0 + 65536 * mem_ptr_limbs__1_0, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 1] +mult=is_valid * -1, args=[1, 8, prev_data__0_0, prev_data__1_0, prev_data__2_0, prev_data__3_0, write_base_aux__prev_timestamp_0] +mult=is_valid * -1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, read_data__0_1, read_data__1_1, read_data__2_1, read_data__3_1, read_data_aux__base__prev_timestamp_1] +mult=is_valid * -1, args=[1, 9, prev_data__0_1, prev_data__1_1, prev_data__2_1, prev_data__3_1, write_base_aux__prev_timestamp_1] +mult=is_valid * 1, args=[1, 9, read_data__0_1, read_data__1_1, read_data__2_1, read_data__3_1, from_state__timestamp_0 + 5] +mult=is_valid * 1, args=[1, 2, rs1_data__0_0, rs1_data__1_0, rs1_data__2_0, rs1_data__3_0, from_state__timestamp_0 + 6] +mult=is_valid * 1, args=[1, 8, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 7] +mult=is_valid * 1, args=[2, mem_ptr_limbs__0_1 + 65536 * mem_ptr_limbs__1_1, read_data__0_0, read_data__1_0, read_data__2_0, read_data__3_0, from_state__timestamp_0 + 8] // Bus 3 (VARIABLE_RANGE_CHECKER): mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * rs1_aux_cols__base__prev_timestamp_0 + 15360 * rs1_aux_cols__base__timestamp_lt_aux__lower_decomp__0_0 + 15360 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[-(503316480 * mem_ptr_limbs__0_0), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_0, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_0 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_0 - 15360 * from_state__timestamp_0, 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_0, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_0, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_0 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_0 - (15360 * from_state__timestamp_0 + 15360), 12] mult=is_valid * 1, args=[-(503316480 * mem_ptr_limbs__0_1), 14] mult=is_valid * 1, args=[mem_ptr_limbs__1_1, 13] mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1, 17] -mult=is_valid * 1, args=[read_data_aux__base__timestamp_lt_aux__lower_decomp__1_1, 12] +mult=is_valid * 1, args=[15360 * read_data_aux__base__prev_timestamp_1 + 15360 * read_data_aux__base__timestamp_lt_aux__lower_decomp__0_1 - (15360 * from_state__timestamp_0 + 46080), 12] mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_1, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_1, 12] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__0_2, 17] -mult=is_valid * 1, args=[write_base_aux__timestamp_lt_aux__lower_decomp__1_2, 12] +mult=is_valid * 1, args=[15360 * write_base_aux__prev_timestamp_1 + 15360 * write_base_aux__timestamp_lt_aux__lower_decomp__0_1 - (15360 * from_state__timestamp_0 + 61440), 12] // Algebraic constraints: -(30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_2 + 7864320 * rs1_data__1_2 + 614400 * is_valid)) * (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_2 + 7864320 * rs1_data__1_2 + 614401)) = 0 -(30720 * mem_ptr_limbs__1_0 + 943718400 * rs1_data__0_2 + 754974711 * is_valid - (943718400 * mem_ptr_limbs__0_0 + 120 * rs1_data__1_2 + 30720 * rs1_data__2_2 + 7864320 * rs1_data__3_2)) * (30720 * mem_ptr_limbs__1_0 + 943718400 * rs1_data__0_2 + 754974710 - (943718400 * mem_ptr_limbs__0_0 + 120 * rs1_data__1_2 + 30720 * rs1_data__2_2 + 7864320 * rs1_data__3_2)) = 0 -(30720 * mem_ptr_limbs__0_1 - (30720 * rs1_data__0_2 + 7864320 * rs1_data__1_2 + 737280 * is_valid)) * (30720 * mem_ptr_limbs__0_1 - (30720 * rs1_data__0_2 + 7864320 * rs1_data__1_2 + 737281)) = 0 -(30720 * mem_ptr_limbs__1_1 + 943718400 * rs1_data__0_2 + 503316469 * is_valid - (943718400 * mem_ptr_limbs__0_1 + 120 * rs1_data__1_2 + 30720 * rs1_data__2_2 + 7864320 * rs1_data__3_2)) * (30720 * mem_ptr_limbs__1_1 + 943718400 * rs1_data__0_2 + 503316468 - (943718400 * mem_ptr_limbs__0_1 + 120 * rs1_data__1_2 + 30720 * rs1_data__2_2 + 7864320 * rs1_data__3_2)) = 0 +(30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 614400 * is_valid)) * (30720 * mem_ptr_limbs__0_0 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 614401)) = 0 +(943718400 * rs1_data__0_0 + 30720 * mem_ptr_limbs__1_0 + 754974711 * is_valid - (120 * rs1_data__1_0 + 30720 * rs1_data__2_0 + 7864320 * rs1_data__3_0 + 943718400 * mem_ptr_limbs__0_0)) * (943718400 * rs1_data__0_0 + 30720 * mem_ptr_limbs__1_0 + 754974710 - (120 * rs1_data__1_0 + 30720 * rs1_data__2_0 + 7864320 * rs1_data__3_0 + 943718400 * mem_ptr_limbs__0_0)) = 0 +(30720 * mem_ptr_limbs__0_1 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 737280 * is_valid)) * (30720 * mem_ptr_limbs__0_1 - (30720 * rs1_data__0_0 + 7864320 * rs1_data__1_0 + 737281)) = 0 +(943718400 * rs1_data__0_0 + 30720 * mem_ptr_limbs__1_1 + 503316469 * is_valid - (120 * rs1_data__1_0 + 30720 * rs1_data__2_0 + 7864320 * rs1_data__3_0 + 943718400 * mem_ptr_limbs__0_1)) * (943718400 * rs1_data__0_0 + 30720 * mem_ptr_limbs__1_1 + 503316468 - (120 * rs1_data__1_0 + 30720 * rs1_data__2_0 + 7864320 * rs1_data__3_0 + 943718400 * mem_ptr_limbs__0_1)) = 0 is_valid * (is_valid - 1) = 0 \ No newline at end of file diff --git a/openvm/tests/optimizer.rs b/openvm/tests/optimizer.rs index 394294419..beb4edb1a 100644 --- a/openvm/tests/optimizer.rs +++ b/openvm/tests/optimizer.rs @@ -59,6 +59,6 @@ fn test_optimize() { machine.bus_interactions.len(), machine.constraints.len() ], - [2009, 1782, 165] + [2007, 1780, 165] ); }