sp1_recursion_compiler/ir/
fold.rs

1use sp1_recursion_derive::DslVariable;
2
3use super::{Ext, Felt, Var};
4use crate::ir::{Array, Builder, Config, MemIndex, MemVariable, Ptr, Variable};
5
6#[derive(DslVariable, Debug, Clone)]
7pub struct FriFoldInput<C: Config> {
8    pub z: Ext<C::F, C::EF>,
9    pub alpha: Ext<C::F, C::EF>,
10    pub x: Felt<C::F>,
11    pub log_height: Var<C::N>,
12    pub mat_opening: Array<C, Ext<C::F, C::EF>>,
13    pub ps_at_z: Array<C, Ext<C::F, C::EF>>,
14    pub alpha_pow: Array<C, Ext<C::F, C::EF>>,
15    pub ro: Array<C, Ext<C::F, C::EF>>,
16}
17
18#[derive(Debug, Clone)]
19pub struct CircuitV2FriFoldInput<C: Config> {
20    pub z: Ext<C::F, C::EF>,
21    pub alpha: Ext<C::F, C::EF>,
22    pub x: Felt<C::F>,
23    pub mat_opening: Vec<Ext<C::F, C::EF>>,
24    pub ps_at_z: Vec<Ext<C::F, C::EF>>,
25    pub alpha_pow_input: Vec<Ext<C::F, C::EF>>,
26    pub ro_input: Vec<Ext<C::F, C::EF>>,
27}
28
29#[derive(Debug, Clone)]
30pub struct CircuitV2FriFoldOutput<C: Config> {
31    pub alpha_pow_output: Vec<Ext<C::F, C::EF>>,
32    pub ro_output: Vec<Ext<C::F, C::EF>>,
33}