Skip to content

Commit 2df4d06

Browse files
authored
fmt (#25)
1 parent e4a52e9 commit 2df4d06

File tree

4 files changed

+126
-85
lines changed

4 files changed

+126
-85
lines changed

src/arithmetics/mod.rs

Lines changed: 88 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -7,10 +7,10 @@ use ff_ext::{BabyBearExt4, SmallField};
77
use openvm_native_compiler::prelude::*;
88
use openvm_native_compiler_derive::iter_zip;
99
use openvm_native_recursion::challenger::ChallengerVariable;
10-
use p3_field::{FieldAlgebra, FieldExtensionAlgebra};
1110
use openvm_native_recursion::challenger::{
1211
duplex::DuplexChallengerVariable, CanObserveVariable, FeltChallenger,
1312
};
13+
use p3_field::{FieldAlgebra, FieldExtensionAlgebra};
1414
type E = BabyBearExt4;
1515
const HASH_RATE: usize = 8;
1616

@@ -35,8 +35,14 @@ pub fn _print_usize_arr<C: Config>(builder: &mut Builder<C>, arr: &Array<C, Usiz
3535
});
3636
}
3737

38-
pub unsafe fn exts_to_felts<C: Config>(builder: &mut Builder<C>, exts: &Array<C, Ext<C::F, C::EF>>) -> Array<C, Felt<C::F>> {
39-
assert!(matches!(exts, Array::Dyn(_, _)), "Expected dynamic array of Exts");
38+
pub unsafe fn exts_to_felts<C: Config>(
39+
builder: &mut Builder<C>,
40+
exts: &Array<C, Ext<C::F, C::EF>>,
41+
) -> Array<C, Felt<C::F>> {
42+
assert!(
43+
matches!(exts, Array::Dyn(_, _)),
44+
"Expected dynamic array of Exts"
45+
);
4046
let f_len: Usize<C::N> = builder.eval(exts.len() * Usize::from(C::EF::D));
4147
let f_arr: Array<C, Felt<C::F>> = Array::Dyn(exts.ptr(), f_len);
4248
f_arr
@@ -45,15 +51,22 @@ pub unsafe fn exts_to_felts<C: Config>(builder: &mut Builder<C>, exts: &Array<C,
4551
pub fn challenger_multi_observe<C: Config>(
4652
builder: &mut Builder<C>,
4753
challenger: &mut DuplexChallengerVariable<C>,
48-
arr: &Array<C, Felt<C::F>>
54+
arr: &Array<C, Felt<C::F>>,
4955
) {
50-
let next_input_ptr = builder.poseidon2_multi_observe(&challenger.sponge_state, challenger.input_ptr, &arr);
51-
builder.assign(&challenger.input_ptr, challenger.io_empty_ptr + next_input_ptr.clone());
52-
builder.if_ne(next_input_ptr, Usize::from(0)).then_or_else(|builder| {
53-
builder.assign(&challenger.output_ptr, challenger.io_empty_ptr);
54-
}, |builder| {
55-
builder.assign(&challenger.output_ptr, challenger.io_full_ptr);
56-
});
56+
let next_input_ptr =
57+
builder.poseidon2_multi_observe(&challenger.sponge_state, challenger.input_ptr, &arr);
58+
builder.assign(
59+
&challenger.input_ptr,
60+
challenger.io_empty_ptr + next_input_ptr.clone(),
61+
);
62+
builder.if_ne(next_input_ptr, Usize::from(0)).then_or_else(
63+
|builder| {
64+
builder.assign(&challenger.output_ptr, challenger.io_empty_ptr);
65+
},
66+
|builder| {
67+
builder.assign(&challenger.output_ptr, challenger.io_full_ptr);
68+
},
69+
);
5770
}
5871

5972
pub fn is_smaller_than<C: Config>(
@@ -685,7 +698,7 @@ pub fn max_usize_arr<C: Config>(
685698
}
686699

687700
pub struct UniPolyExtrapolator<C: Config> {
688-
constants: [Ext<C::F, C::EF>; 12], // 0, 1, 2, 3, 4, -1, 1/2, -1/2, 1/6, -1/6, 1/4, 1/24
701+
constants: [Ext<C::F, C::EF>; 12], // 0, 1, 2, 3, 4, -1, 1/2, -1/2, 1/6, -1/6, 1/4, 1/24
689702
}
690703

691704
impl<C: Config> UniPolyExtrapolator<C> {
@@ -719,39 +732,62 @@ impl<C: Config> UniPolyExtrapolator<C> {
719732
neg_six_inverse,
720733
four_inverse,
721734
twenty_four_inverse,
722-
]
735+
],
723736
}
724737
}
725738

726-
pub fn extrapolate_uni_poly(&mut self, builder: &mut Builder<C>, p_i: &Array<C, Ext<C::F, C::EF>>, eval_at: Ext<C::F, C::EF>) -> Ext<C::F, C::EF> {
739+
pub fn extrapolate_uni_poly(
740+
&mut self,
741+
builder: &mut Builder<C>,
742+
p_i: &Array<C, Ext<C::F, C::EF>>,
743+
eval_at: Ext<C::F, C::EF>,
744+
) -> Ext<C::F, C::EF> {
727745
let res: Ext<C::F, C::EF> = builder.eval(self.constants[0] + self.constants[0]);
728746

729-
builder.if_eq(p_i.len(), Usize::from(4)).then_or_else(|builder| {
730-
let ext = self.extrapolate_uni_poly_deg_3(builder, p_i, eval_at);
731-
builder.assign(&res, ext);
732-
}, |builder| {
733-
builder.if_eq(p_i.len(), Usize::from(3)).then_or_else(|builder| {
734-
let ext = self.extrapolate_uni_poly_deg_2(builder, p_i, eval_at);
747+
builder.if_eq(p_i.len(), Usize::from(4)).then_or_else(
748+
|builder| {
749+
let ext = self.extrapolate_uni_poly_deg_3(builder, p_i, eval_at);
735750
builder.assign(&res, ext);
736-
}, |builder| {
737-
builder.if_eq(p_i.len(), Usize::from(2)).then_or_else(|builder| {
738-
let ext = self.extrapolate_uni_poly_deg_1(builder, p_i, eval_at);
739-
builder.assign(&res, ext);
740-
}, |builder| {
741-
builder.if_eq(p_i.len(), Usize::from(5)).then_or_else(|builder| {
742-
let ext = self.extrapolate_uni_poly_deg_4(builder, p_i, eval_at);
751+
},
752+
|builder| {
753+
builder.if_eq(p_i.len(), Usize::from(3)).then_or_else(
754+
|builder| {
755+
let ext = self.extrapolate_uni_poly_deg_2(builder, p_i, eval_at);
743756
builder.assign(&res, ext);
744-
}, |builder| {
745-
builder.error();
746-
});
747-
});
748-
});
749-
});
757+
},
758+
|builder| {
759+
builder.if_eq(p_i.len(), Usize::from(2)).then_or_else(
760+
|builder| {
761+
let ext = self.extrapolate_uni_poly_deg_1(builder, p_i, eval_at);
762+
builder.assign(&res, ext);
763+
},
764+
|builder| {
765+
builder.if_eq(p_i.len(), Usize::from(5)).then_or_else(
766+
|builder| {
767+
let ext =
768+
self.extrapolate_uni_poly_deg_4(builder, p_i, eval_at);
769+
builder.assign(&res, ext);
770+
},
771+
|builder| {
772+
builder.error();
773+
},
774+
);
775+
},
776+
);
777+
},
778+
);
779+
},
780+
);
750781

751782
res
752783
}
753784

754-
fn extrapolate_uni_poly_deg_1(&self, builder: &mut Builder<C>, p_i: &Array<C, Ext<C::F, C::EF>>, eval_at: Ext<C::F, C::EF>) -> Ext<C::F, C::EF> {
785+
fn extrapolate_uni_poly_deg_1(
786+
&self,
787+
builder: &mut Builder<C>,
788+
p_i: &Array<C, Ext<C::F, C::EF>>,
789+
eval_at: Ext<C::F, C::EF>,
790+
) -> Ext<C::F, C::EF> {
755791
// w0 = 1 / (0−1) = -1
756792
// w1 = 1 / (1−0) = 1
757793
let d0: Ext<C::F, C::EF> = builder.eval(eval_at - self.constants[0]);
@@ -767,7 +803,12 @@ impl<C: Config> UniPolyExtrapolator<C> {
767803
builder.eval(l * (t0 + t1))
768804
}
769805

770-
fn extrapolate_uni_poly_deg_2(&self, builder: &mut Builder<C>, p_i: &Array<C, Ext<C::F, C::EF>>, eval_at: Ext<C::F, C::EF>) -> Ext<C::F, C::EF> {
806+
fn extrapolate_uni_poly_deg_2(
807+
&self,
808+
builder: &mut Builder<C>,
809+
p_i: &Array<C, Ext<C::F, C::EF>>,
810+
eval_at: Ext<C::F, C::EF>,
811+
) -> Ext<C::F, C::EF> {
771812
// w0 = 1 / ((0−1)(0−2)) = 1/2
772813
// w1 = 1 / ((1−0)(1−2)) = -1
773814
// w2 = 1 / ((2−0)(2−1)) = 1/2
@@ -788,7 +829,12 @@ impl<C: Config> UniPolyExtrapolator<C> {
788829
builder.eval(l * (t0 + t1 + t2))
789830
}
790831

791-
fn extrapolate_uni_poly_deg_3(&self, builder: &mut Builder<C>, p_i: &Array<C, Ext<C::F, C::EF>>, eval_at: Ext<C::F, C::EF>) -> Ext<C::F, C::EF> {
832+
fn extrapolate_uni_poly_deg_3(
833+
&self,
834+
builder: &mut Builder<C>,
835+
p_i: &Array<C, Ext<C::F, C::EF>>,
836+
eval_at: Ext<C::F, C::EF>,
837+
) -> Ext<C::F, C::EF> {
792838
// w0 = 1 / ((0−1)(0−2)(0−3)) = -1/6
793839
// w1 = 1 / ((1−0)(1−2)(1−3)) = 1/2
794840
// w2 = 1 / ((2−0)(2−1)(2−3)) = -1/2
@@ -813,7 +859,12 @@ impl<C: Config> UniPolyExtrapolator<C> {
813859
builder.eval(l * (t0 + t1 + t2 + t3))
814860
}
815861

816-
fn extrapolate_uni_poly_deg_4(&self, builder: &mut Builder<C>, p_i: &Array<C, Ext<C::F, C::EF>>, eval_at: Ext<C::F, C::EF>) -> Ext<C::F, C::EF> {
862+
fn extrapolate_uni_poly_deg_4(
863+
&self,
864+
builder: &mut Builder<C>,
865+
p_i: &Array<C, Ext<C::F, C::EF>>,
866+
eval_at: Ext<C::F, C::EF>,
867+
) -> Ext<C::F, C::EF> {
817868
// w0 = 1 / ((0−1)(0−2)(0−3)(0−4)) = 1/24
818869
// w1 = 1 / ((1−0)(1−2)(1−3)(1−4)) = -1/6
819870
// w2 = 1 / ((2−0)(2−1)(2−3)(2−4)) = 1/4

src/e2e/mod.rs

Lines changed: 10 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ use mpcs::{Basefold, BasefoldRSParams};
1111
use openvm_circuit::arch::{instructions::program::Program, SystemConfig, VmExecutor};
1212
use openvm_native_circuit::{Native, NativeConfig};
1313
use openvm_native_compiler::{
14-
asm::AsmBuilder,
15-
conversion::{CompilerOptions, convert_program},
16-
prelude::AsmCompiler
14+
asm::AsmBuilder,
15+
conversion::{convert_program, CompilerOptions},
16+
prelude::AsmCompiler,
1717
};
1818
use openvm_native_recursion::hints::Hintable;
1919
use openvm_stark_backend::config::StarkGenericConfig;
@@ -458,13 +458,15 @@ pub fn test_zkvm_proof_verifier_from_bincode_exports() {
458458
let asm_code = compiler.code();
459459

460460
// _debug: print out assembly
461-
/*
461+
/*
462462
println!("=> AssemblyCode:");
463463
println!("{asm_code}");
464464
return ();
465465
*/
466466

467-
let program: Program<p3_monty_31::MontyField31<openvm_stark_sdk::p3_baby_bear::BabyBearParameters>,> = convert_program(asm_code, options);
467+
let program: Program<
468+
p3_monty_31::MontyField31<openvm_stark_sdk::p3_baby_bear::BabyBearParameters>,
469+
> = convert_program(asm_code, options);
468470
let mut system_config = SystemConfig::default()
469471
.with_public_values(4)
470472
.with_max_segment_len((1 << 25) - 100);
@@ -473,14 +475,9 @@ pub fn test_zkvm_proof_verifier_from_bincode_exports() {
473475

474476
let executor = VmExecutor::<BabyBear, NativeConfig>::new(config);
475477

476-
let res = executor.execute_and_then(
477-
program,
478-
witness_stream,
479-
|_, seg| {
480-
Ok(seg)
481-
},
482-
|err| err,
483-
).unwrap();
478+
let res = executor
479+
.execute_and_then(program, witness_stream, |_, seg| Ok(seg), |err| err)
480+
.unwrap();
484481

485482
for (i, seg) in res.iter().enumerate() {
486483
println!("=> segment {:?} metrics: {:?}", i, seg.metrics);

src/extensions/mod.rs

Lines changed: 27 additions & 34 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,13 @@
11
use crate::arithmetics::{challenger_multi_observe, exts_to_felts, print_felt_arr};
2+
use crate::e2e::SubcircuitParams;
23
use crate::tower_verifier::binding::IOPProverMessage;
4+
use crate::tower_verifier::program::verify_tower_proof;
5+
use crate::transcript::transcript_observe_label;
36
use crate::zkvm_verifier::binding::ZKVMProofInput;
47
use crate::zkvm_verifier::binding::{
58
TowerProofInput, ZKVMOpcodeProofInput, ZKVMTableProofInput, E, F,
69
};
710
use crate::zkvm_verifier::verifier::verify_zkvm_proof;
8-
use ff_ext::BabyBearExt4;
9-
use itertools::Itertools;
10-
use mpcs::BasefoldCommitment;
11-
use mpcs::{Basefold, BasefoldRSParams};
12-
use openvm_circuit::arch::{instructions::program::Program, SystemConfig, VmExecutor};
13-
use openvm_native_circuit::{Native, NativeConfig};
14-
use openvm_native_compiler::{asm::AsmBuilder, conversion::CompilerOptions};
15-
use openvm_native_recursion::challenger::{self, CanSampleVariable};
16-
use openvm_native_recursion::hints::Hintable;
17-
use openvm_stark_backend::config::StarkGenericConfig;
18-
use openvm_stark_sdk::{
19-
config::baby_bear_poseidon2::BabyBearPoseidon2Config, p3_baby_bear::BabyBear,
20-
};
21-
use openvm_native_compiler::conversion::convert_program;
22-
use std::collections::HashMap;
23-
use std::fs::File;
24-
use std::marker::PhantomData;
25-
use crate::e2e::SubcircuitParams;
26-
use crate::tower_verifier::program::verify_tower_proof;
27-
use crate::transcript::transcript_observe_label;
2811
use crate::{
2912
arithmetics::{
3013
build_eq_x_r_vec_sequential, ceil_log2, concat, dot_product as ext_dot_product,
@@ -39,14 +22,31 @@ use crate::{
3922
};
4023
use ceno_zkvm::circuit_builder::SetTableSpec;
4124
use ceno_zkvm::{expression::StructuralWitIn, scheme::verifier::ZKVMVerifier};
25+
use ff_ext::BabyBearExt4;
4226
use itertools::interleave;
4327
use itertools::max;
28+
use itertools::Itertools;
29+
use mpcs::BasefoldCommitment;
30+
use mpcs::{Basefold, BasefoldRSParams};
31+
use openvm_circuit::arch::{instructions::program::Program, SystemConfig, VmExecutor};
32+
use openvm_native_circuit::{Native, NativeConfig};
33+
use openvm_native_compiler::conversion::convert_program;
4434
use openvm_native_compiler::prelude::*;
35+
use openvm_native_compiler::{asm::AsmBuilder, conversion::CompilerOptions};
4536
use openvm_native_compiler_derive::iter_zip;
37+
use openvm_native_recursion::challenger::{self, CanSampleVariable};
4638
use openvm_native_recursion::challenger::{
4739
duplex::DuplexChallengerVariable, CanObserveVariable, FeltChallenger,
4840
};
41+
use openvm_native_recursion::hints::Hintable;
42+
use openvm_stark_backend::config::StarkGenericConfig;
43+
use openvm_stark_sdk::{
44+
config::baby_bear_poseidon2::BabyBearPoseidon2Config, p3_baby_bear::BabyBear,
45+
};
4946
use p3_field::{Field, FieldAlgebra, FieldExtensionAlgebra};
47+
use std::collections::HashMap;
48+
use std::fs::File;
49+
use std::marker::PhantomData;
5050

5151
type Pcs = Basefold<E, BasefoldRSParams>;
5252
const NUM_FANIN: usize = 2;
@@ -84,27 +84,20 @@ pub fn test_native_multi_observe() {
8484
let config = NativeConfig::new(system_config, Native);
8585

8686
let executor = VmExecutor::<BabyBear, NativeConfig>::new(config);
87-
87+
8888
// Alternative execution
8989
// executor.execute(program, witness_stream).unwrap();
9090

91-
let res = executor.execute_and_then(
92-
program,
93-
witness_stream,
94-
|_, seg| {
95-
Ok(seg)
96-
},
97-
|err| err,
98-
).unwrap();
91+
let res = executor
92+
.execute_and_then(program, witness_stream, |_, seg| Ok(seg), |err| err)
93+
.unwrap();
9994

10095
for (i, seg) in res.iter().enumerate() {
10196
println!("=> segment {:?} metrics: {:?}", i, seg.metrics);
10297
}
10398
}
10499

105-
fn vm_program<C: Config>(
106-
builder: &mut Builder<C>,
107-
) {
100+
fn vm_program<C: Config>(builder: &mut Builder<C>) {
108101
let e1: Ext<C::F, C::EF> = builder.constant(C::EF::GENERATOR.exp_power_of_2(16));
109102
let e2: Ext<C::F, C::EF> = builder.constant(C::EF::GENERATOR.exp_power_of_2(32));
110103
let e3: Ext<C::F, C::EF> = builder.constant(C::EF::GENERATOR.exp_power_of_2(64));
@@ -123,10 +116,10 @@ fn vm_program<C: Config>(
123116
let mut c1 = DuplexChallengerVariable::new(builder);
124117
let mut c2 = DuplexChallengerVariable::new(builder);
125118

126-
let f_arr1 = exts_to_felts(builder, &e_arr);
119+
let f_arr1 = exts_to_felts(builder, &e_arr);
127120
let f_arr2 = f_arr1.clone();
128121

129-
challenger_multi_observe(builder, &mut c1, &f_arr1);
122+
challenger_multi_observe(builder, &mut c1, &f_arr1);
130123
let test_e1 = c1.sample(builder);
131124

132125
c2.observe_slice(builder, f_arr2);

src/transcript/mod.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
use ff_ext::{BabyBearExt4, ExtensionField as CenoExtensionField, SmallField};
22
use openvm_native_compiler::prelude::*;
33
use openvm_native_recursion::challenger::ChallengerVariable;
4-
use p3_field::FieldAlgebra;
54
use openvm_native_recursion::challenger::{
65
duplex::DuplexChallengerVariable, CanObserveVariable, FeltChallenger,
76
};
7+
use p3_field::FieldAlgebra;
88

99
pub fn transcript_observe_label<C: Config>(
1010
builder: &mut Builder<C>,

0 commit comments

Comments
 (0)