@@ -20,6 +20,7 @@ use crate::{
2020 ffi:: aiur:: {
2121 lean_unbox_g, lean_unbox_nat_as_usize, toplevel:: decode_toplevel,
2222 } ,
23+ lean:: { LeanAiurFriParameters , LeanAiurToplevel } ,
2324} ;
2425
2526// =============================================================================
@@ -63,12 +64,12 @@ extern "C" fn rs_aiur_proof_of_bytes(
6364/// `AiurSystem.build : @&Bytecode.Toplevel → @&CommitmentParameters → AiurSystem`
6465#[ unsafe( no_mangle) ]
6566extern "C" fn rs_aiur_system_build (
66- toplevel : LeanObject ,
67+ toplevel : LeanAiurToplevel ,
6768 commitment_parameters : LeanObject ,
6869) -> LeanExternal < AiurSystem > {
6970 let system = AiurSystem :: build (
7071 decode_toplevel ( toplevel) ,
71- lean_ptr_to_commitment_parameters ( commitment_parameters) ,
72+ decode_commitment_parameters ( commitment_parameters) ,
7273 ) ;
7374 LeanExternal :: alloc ( system_class ( ) , system)
7475}
@@ -77,12 +78,12 @@ extern "C" fn rs_aiur_system_build(
7778#[ unsafe( no_mangle) ]
7879extern "C" fn rs_aiur_system_verify (
7980 aiur_system_obj : LeanExternal < AiurSystem > ,
80- fri_parameters : LeanObject ,
81- claim : LeanObject ,
81+ fri_parameters : LeanAiurFriParameters ,
82+ claim : LeanArray ,
8283 proof_obj : LeanExternal < Proof > ,
8384) -> LeanExcept {
84- let fri_parameters = lean_ctor_to_fri_parameters ( fri_parameters) ;
85- let claim = claim. as_array ( ) . map ( lean_unbox_g) ;
85+ let fri_parameters = decode_fri_parameters ( fri_parameters) ;
86+ let claim = claim. map ( lean_unbox_g) ;
8687 match aiur_system_obj. get ( ) . verify ( fri_parameters, & claim, proof_obj. get ( ) ) {
8788 Ok ( ( ) ) => LeanExcept :: ok ( LeanObject :: box_usize ( 0 ) ) ,
8889 Err ( err) => LeanExcept :: error_string ( & format ! ( "{err:?}" ) ) ,
@@ -94,17 +95,17 @@ extern "C" fn rs_aiur_system_verify(
9495#[ unsafe( no_mangle) ]
9596extern "C" fn rs_aiur_system_prove (
9697 aiur_system_obj : LeanExternal < AiurSystem > ,
97- fri_parameters : LeanObject ,
98+ fri_parameters : LeanAiurFriParameters ,
9899 fun_idx : LeanObject ,
99- args : LeanObject ,
100- io_data_arr : LeanObject ,
101- io_map_arr : LeanObject ,
100+ args : LeanArray ,
101+ io_data_arr : LeanArray ,
102+ io_map_arr : LeanArray ,
102103) -> LeanObject {
103- let fri_parameters = lean_ctor_to_fri_parameters ( fri_parameters) ;
104+ let fri_parameters = decode_fri_parameters ( fri_parameters) ;
104105 let fun_idx = lean_unbox_nat_as_usize ( fun_idx) ;
105- let args = args. as_array ( ) . map ( lean_unbox_g) ;
106- let io_data = io_data_arr. as_array ( ) . map ( lean_unbox_g) ;
107- let io_map = lean_array_to_io_buffer_map ( io_map_arr) ;
106+ let args = args. map ( lean_unbox_g) ;
107+ let io_data = io_data_arr. map ( lean_unbox_g) ;
108+ let io_map = decode_io_buffer_map ( io_map_arr) ;
108109 let mut io_buffer = IOBuffer { data : io_data, map : io_map } ;
109110
110111 let ( claim, proof) =
@@ -158,19 +159,19 @@ extern "C" fn rs_aiur_system_prove(
158159// =============================================================================
159160
160161/// Build a Lean `Array G` from a slice of field elements.
161- fn build_g_array ( values : & [ G ] ) -> LeanObject {
162+ fn build_g_array ( values : & [ G ] ) -> LeanArray {
162163 let arr = LeanArray :: alloc ( values. len ( ) ) ;
163164 for ( i, g) in values. iter ( ) . enumerate ( ) {
164165 arr. set ( i, LeanObject :: box_u64 ( g. as_canonical_u64 ( ) ) ) ;
165166 }
166- * arr
167+ arr
167168}
168169
169- fn lean_ptr_to_commitment_parameters ( obj : LeanObject ) -> CommitmentParameters {
170+ fn decode_commitment_parameters ( obj : LeanObject ) -> CommitmentParameters {
170171 CommitmentParameters { log_blowup : lean_unbox_nat_as_usize ( obj) }
171172}
172173
173- fn lean_ctor_to_fri_parameters ( obj : LeanObject ) -> FriParameters {
174+ fn decode_fri_parameters ( obj : LeanAiurFriParameters ) -> FriParameters {
174175 let ctor = obj. as_ctor ( ) ;
175176 FriParameters {
176177 log_final_poly_len : lean_unbox_nat_as_usize ( ctor. get ( 0 ) ) ,
@@ -180,10 +181,9 @@ fn lean_ctor_to_fri_parameters(obj: LeanObject) -> FriParameters {
180181 }
181182}
182183
183- fn lean_array_to_io_buffer_map (
184- obj : LeanObject ,
184+ fn decode_io_buffer_map (
185+ arr : LeanArray ,
185186) -> FxHashMap < Vec < G > , IOKeyInfo > {
186- let arr = obj. as_array ( ) ;
187187 let mut map = FxHashMap :: with_capacity_and_hasher ( arr. len ( ) , FxBuildHasher ) ;
188188 for elt in arr. iter ( ) {
189189 let pair = elt. as_ctor ( ) ;
0 commit comments