Skip to content

Commit f446bb3

Browse files
committed
integrate verify triple sum
1 parent 831e98d commit f446bb3

8 files changed

Lines changed: 146 additions & 62 deletions

File tree

crates/cairo_air/src/components/subroutines/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@ pub mod verify_add_252;
9191
pub mod verify_mul_252;
9292
pub mod verify_mul_small;
9393
pub mod verify_reduced_252;
94+
pub mod verify_triple_sum_32;
9495
pub mod verify_u_32;
9596
pub mod xor_rot_32_r_12;
9697
pub mod xor_rot_32_r_16;

crates/cairo_air/src/components/subroutines/triple_sum_32.rs

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,20 @@ pub fn accumulate_constraints<Value: IValue>(
2222
triple_sum32_res_limb_1_col1,
2323
] = input.try_into().unwrap();
2424

25-
let carry_low_tmp_541fa_1 = eval!(
25+
verify_triple_sum_32::accumulate_constraints(
26+
&[
27+
eval!(context, triple_sum_32_input_a_limb_0),
28+
eval!(context, triple_sum_32_input_a_limb_1),
29+
eval!(context, triple_sum_32_input_b_limb_0),
30+
eval!(context, triple_sum_32_input_b_limb_1),
31+
eval!(context, triple_sum_32_input_c_limb_0),
32+
eval!(context, triple_sum_32_input_c_limb_1),
33+
eval!(context, triple_sum32_res_limb_0_col0),
34+
eval!(context, triple_sum32_res_limb_1_col1),
35+
],
2636
context,
27-
((((triple_sum_32_input_a_limb_0) + (triple_sum_32_input_b_limb_0))
28-
+ (triple_sum_32_input_c_limb_0))
29-
- (triple_sum32_res_limb_0_col0))
30-
* (32768)
37+
component_data,
38+
acc,
3139
);
32-
33-
//carry low is 0 or 1 or 2.
34-
let constraint_1_value = eval!(
35-
context,
36-
((carry_low_tmp_541fa_1) * ((carry_low_tmp_541fa_1) - (1)))
37-
* ((carry_low_tmp_541fa_1) - (2))
38-
);
39-
acc.add_constraint(context, constraint_1_value);
40-
41-
let carry_high_tmp_541fa_2 = eval!(
42-
context,
43-
(((((triple_sum_32_input_a_limb_1) + (triple_sum_32_input_b_limb_1))
44-
+ (triple_sum_32_input_c_limb_1))
45-
+ (carry_low_tmp_541fa_1))
46-
- (triple_sum32_res_limb_1_col1))
47-
* (32768)
48-
);
49-
50-
//carry high is 0 or 1 or 2.
51-
let constraint_3_value = eval!(
52-
context,
53-
((carry_high_tmp_541fa_2) * ((carry_high_tmp_541fa_2) - (1)))
54-
* ((carry_high_tmp_541fa_2) - (2))
55-
);
56-
acc.add_constraint(context, constraint_3_value);
5740
vec![]
5841
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// This file was created by the AIR team.
2+
3+
use super::super::prelude::*;
4+
5+
pub const RELATION_USES_PER_ROW: [RelationUse; 0] = [];
6+
7+
#[allow(unused_variables)]
8+
pub fn accumulate_constraints<Value: IValue>(
9+
input: &[Var],
10+
context: &mut Context<Value>,
11+
component_data: &dyn ComponentDataTrait<Value>,
12+
acc: &mut CompositionConstraintAccumulator,
13+
) -> Vec<Var> {
14+
let [
15+
verify_triple_sum_32_input_limb_0,
16+
verify_triple_sum_32_input_limb_1,
17+
verify_triple_sum_32_input_limb_2,
18+
verify_triple_sum_32_input_limb_3,
19+
verify_triple_sum_32_input_limb_4,
20+
verify_triple_sum_32_input_limb_5,
21+
verify_triple_sum_32_input_limb_6,
22+
verify_triple_sum_32_input_limb_7,
23+
] = input.try_into().unwrap();
24+
25+
let carry_low_tmp_24c23_0 = eval!(
26+
context,
27+
((((verify_triple_sum_32_input_limb_0) + (verify_triple_sum_32_input_limb_2))
28+
+ (verify_triple_sum_32_input_limb_4))
29+
- (verify_triple_sum_32_input_limb_6))
30+
* (32768)
31+
);
32+
33+
//carry low is 0 or 1 or 2.
34+
let constraint_1_value = eval!(
35+
context,
36+
((carry_low_tmp_24c23_0) * ((carry_low_tmp_24c23_0) - (1)))
37+
* ((carry_low_tmp_24c23_0) - (2))
38+
);
39+
acc.add_constraint(context, constraint_1_value);
40+
41+
let carry_high_tmp_24c23_1 = eval!(
42+
context,
43+
(((((verify_triple_sum_32_input_limb_1) + (verify_triple_sum_32_input_limb_3))
44+
+ (verify_triple_sum_32_input_limb_5))
45+
+ (carry_low_tmp_24c23_0))
46+
- (verify_triple_sum_32_input_limb_7))
47+
* (32768)
48+
);
49+
50+
//carry high is 0 or 1 or 2.
51+
let constraint_3_value = eval!(
52+
context,
53+
((carry_high_tmp_24c23_1) * ((carry_high_tmp_24c23_1) - (1)))
54+
* ((carry_high_tmp_24c23_1) - (2))
55+
);
56+
acc.add_constraint(context, constraint_3_value);
57+
vec![]
58+
}

crates/cairo_air/src/sample_evaluations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// AIR version eef4184c
1+
// AIR version ea4263b5
22
use stwo::core::fields::{cm31::CM31, m31::M31, qm31::QM31};
33
pub const ADD_AP_OPCODE_SAMPLE_EVAL_RESULT: QM31 =
44
QM31(CM31(M31(1435814162), M31(1618992457)), CM31(M31(840348268), M31(442754761)));

crates/circuit_air/src/circuit_eval_components/subroutines/mod.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ pub mod split_16_low_part_size_12;
1111
pub mod split_16_low_part_size_7;
1212
pub mod split_16_low_part_size_8;
1313
pub mod triple_sum_32;
14+
pub mod verify_triple_sum_32;
1415
pub mod xor_rot_32_r_12;
1516
pub mod xor_rot_32_r_16;
1617
pub mod xor_rot_32_r_7;

crates/circuit_air/src/circuit_eval_components/subroutines/triple_sum_32.rs

Lines changed: 13 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -22,37 +22,20 @@ pub fn accumulate_constraints<Value: IValue>(
2222
triple_sum32_res_limb_1_col1,
2323
] = input.try_into().unwrap();
2424

25-
let carry_low_tmp_541fa_1 = eval!(
25+
verify_triple_sum_32::accumulate_constraints(
26+
&[
27+
eval!(context, triple_sum_32_input_a_limb_0),
28+
eval!(context, triple_sum_32_input_a_limb_1),
29+
eval!(context, triple_sum_32_input_b_limb_0),
30+
eval!(context, triple_sum_32_input_b_limb_1),
31+
eval!(context, triple_sum_32_input_c_limb_0),
32+
eval!(context, triple_sum_32_input_c_limb_1),
33+
eval!(context, triple_sum32_res_limb_0_col0),
34+
eval!(context, triple_sum32_res_limb_1_col1),
35+
],
2636
context,
27-
((((triple_sum_32_input_a_limb_0) + (triple_sum_32_input_b_limb_0))
28-
+ (triple_sum_32_input_c_limb_0))
29-
- (triple_sum32_res_limb_0_col0))
30-
* (32768)
37+
component_data,
38+
acc,
3139
);
32-
33-
//carry low is 0 or 1 or 2.
34-
let constraint_1_value = eval!(
35-
context,
36-
((carry_low_tmp_541fa_1) * ((carry_low_tmp_541fa_1) - (1)))
37-
* ((carry_low_tmp_541fa_1) - (2))
38-
);
39-
acc.add_constraint(context, constraint_1_value);
40-
41-
let carry_high_tmp_541fa_2 = eval!(
42-
context,
43-
(((((triple_sum_32_input_a_limb_1) + (triple_sum_32_input_b_limb_1))
44-
+ (triple_sum_32_input_c_limb_1))
45-
+ (carry_low_tmp_541fa_1))
46-
- (triple_sum32_res_limb_1_col1))
47-
* (32768)
48-
);
49-
50-
//carry high is 0 or 1 or 2.
51-
let constraint_3_value = eval!(
52-
context,
53-
((carry_high_tmp_541fa_2) * ((carry_high_tmp_541fa_2) - (1)))
54-
* ((carry_high_tmp_541fa_2) - (2))
55-
);
56-
acc.add_constraint(context, constraint_3_value);
5740
vec![]
5841
}
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
// This file was created by the AIR team.
2+
3+
use super::super::prelude::*;
4+
5+
pub const RELATION_USES_PER_ROW: [RelationUse; 0] = [];
6+
7+
#[allow(unused_variables)]
8+
pub fn accumulate_constraints<Value: IValue>(
9+
input: &[Var],
10+
context: &mut Context<Value>,
11+
component_data: &dyn ComponentDataTrait<Value>,
12+
acc: &mut CompositionConstraintAccumulator,
13+
) -> Vec<Var> {
14+
let [
15+
verify_triple_sum_32_input_limb_0,
16+
verify_triple_sum_32_input_limb_1,
17+
verify_triple_sum_32_input_limb_2,
18+
verify_triple_sum_32_input_limb_3,
19+
verify_triple_sum_32_input_limb_4,
20+
verify_triple_sum_32_input_limb_5,
21+
verify_triple_sum_32_input_limb_6,
22+
verify_triple_sum_32_input_limb_7,
23+
] = input.try_into().unwrap();
24+
25+
let carry_low_tmp_24c23_0 = eval!(
26+
context,
27+
((((verify_triple_sum_32_input_limb_0) + (verify_triple_sum_32_input_limb_2))
28+
+ (verify_triple_sum_32_input_limb_4))
29+
- (verify_triple_sum_32_input_limb_6))
30+
* (32768)
31+
);
32+
33+
//carry low is 0 or 1 or 2.
34+
let constraint_1_value = eval!(
35+
context,
36+
((carry_low_tmp_24c23_0) * ((carry_low_tmp_24c23_0) - (1)))
37+
* ((carry_low_tmp_24c23_0) - (2))
38+
);
39+
acc.add_constraint(context, constraint_1_value);
40+
41+
let carry_high_tmp_24c23_1 = eval!(
42+
context,
43+
(((((verify_triple_sum_32_input_limb_1) + (verify_triple_sum_32_input_limb_3))
44+
+ (verify_triple_sum_32_input_limb_5))
45+
+ (carry_low_tmp_24c23_0))
46+
- (verify_triple_sum_32_input_limb_7))
47+
* (32768)
48+
);
49+
50+
//carry high is 0 or 1 or 2.
51+
let constraint_3_value = eval!(
52+
context,
53+
((carry_high_tmp_24c23_1) * ((carry_high_tmp_24c23_1) - (1)))
54+
* ((carry_high_tmp_24c23_1) - (2))
55+
);
56+
acc.add_constraint(context, constraint_3_value);
57+
vec![]
58+
}

crates/circuit_air/src/sample_evaluations.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// AIR version eef4184c
1+
// AIR version ea4263b5
22
use stwo::core::fields::{cm31::CM31, m31::M31, qm31::QM31};
33
pub const BLAKE_GATE_SAMPLE_EVAL_RESULT: QM31 =
44
QM31(CM31(M31(611602902), M31(896180632)), CM31(M31(1988834866), M31(287144248)));

0 commit comments

Comments
 (0)