diff --git a/rustdoc/arrabiata/all.html b/rustdoc/arrabiata/all.html index 21c9255c5b..2773b62f12 100644 --- a/rustdoc/arrabiata/all.html +++ b/rustdoc/arrabiata/all.html @@ -1 +1 @@ -List of all items in this crate

List of all items

Structs

Enums

Traits

Functions

Type Definitions

Constants

\ No newline at end of file +List of all items in this crate

List of all items

Structs

Enums

Traits

Functions

Type Definitions

Constants

\ No newline at end of file diff --git a/rustdoc/arrabiata/columns/enum.ChallengeTerm.html b/rustdoc/arrabiata/columns/enum.ChallengeTerm.html index 640b5ec3a5..8386d097f0 100644 --- a/rustdoc/arrabiata/columns/enum.ChallengeTerm.html +++ b/rustdoc/arrabiata/columns/enum.ChallengeTerm.html @@ -1,4 +1,4 @@ -ChallengeTerm in arrabiata::columns - Rust
pub enum ChallengeTerm {
+ChallengeTerm in arrabiata::columns - Rust
pub enum ChallengeTerm {
     Alpha,
     Beta,
     Gamma,
@@ -8,25 +8,25 @@
 
§

Beta

Both challenges used in the permutation argument

§

Gamma

§

HomogenousChallenge

Challenge to homogenize the constraints

§

R

Random coin used to aggregate witnesses while folding

-

Trait Implementations§

source§

impl<'a> AlphaChallengeTerm<'a> for ChallengeTerm

source§

const ALPHA: Self = Self::Alpha

source§

impl Clone for ChallengeTerm

source§

fn clone(&self) -> ChallengeTerm

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ChallengeTerm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for ChallengeTerm

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where - __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for ChallengeTerm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Index<ChallengeTerm> for Challenges<F>

§

type Output = F

The returned type after indexing.
source§

fn index(&self, term: ChallengeTerm) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl PartialEq<ChallengeTerm> for ChallengeTerm

source§

fn eq(&self, other: &ChallengeTerm) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl<'a> AlphaChallengeTerm<'a> for ChallengeTerm

source§

const ALPHA: Self = Self::Alpha

source§

impl Clone for ChallengeTerm

source§

fn clone(&self) -> ChallengeTerm

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for ChallengeTerm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'de> Deserialize<'de> for ChallengeTerm

source§

fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where + __D: Deserializer<'de>,

Deserialize this value from the given Serde deserializer. Read more
source§

impl Display for ChallengeTerm

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<F: Field> Index<ChallengeTerm> for Challenges<F>

§

type Output = F

The returned type after indexing.
source§

fn index(&self, term: ChallengeTerm) -> &Self::Output

Performs the indexing (container[index]) operation. Read more
source§

impl PartialEq<ChallengeTerm> for ChallengeTerm

source§

fn eq(&self, other: &ChallengeTerm) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Serialize for ChallengeTerm

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where - __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ChallengeTerm

source§

impl Eq for ChallengeTerm

source§

impl StructuralEq for ChallengeTerm

source§

impl StructuralPartialEq for ChallengeTerm

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

source§

impl Serialize for ChallengeTerm

source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>where + __S: Serializer,

Serialize this value into the given Serde serializer. Read more
source§

impl Copy for ChallengeTerm

source§

impl Eq for ChallengeTerm

source§

impl StructuralEq for ChallengeTerm

source§

impl StructuralPartialEq for ChallengeTerm

Auto Trait Implementations§

§

impl RefUnwindSafe for ChallengeTerm

§

impl Send for ChallengeTerm

§

impl Sync for ChallengeTerm

§

impl Unpin for ChallengeTerm

§

impl UnwindSafe for ChallengeTerm

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<Q, K> Equivalent<K> for Qwhere Q: Eq + ?Sized, - K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
§

impl<'a, ChallengeTerm> FormattedOutput for ChallengeTermwhere - ChallengeTerm: AlphaChallengeTerm<'a>,

§

fn is_alpha(&self) -> bool

§

fn ocaml( + K: Borrow<Q> + ?Sized,

§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
source§

impl<'a, ChallengeTerm> FormattedOutput for ChallengeTermwhere + ChallengeTerm: AlphaChallengeTerm<'a>,

source§

fn is_alpha(&self) -> bool

source§

fn ocaml( &self, - _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> -) -> String

§

fn latex( + _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> +) -> String

source§

fn latex( &self, - _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> -) -> String

§

fn text( + _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> +) -> String

source§

fn text( &self, - _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> + _cache: &mut HashMap<CacheId, ChallengeTerm, RandomState> ) -> String

source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

diff --git a/rustdoc/arrabiata/columns/enum.Column.html b/rustdoc/arrabiata/columns/enum.Column.html index 00357e3223..09d8af064f 100644 --- a/rustdoc/arrabiata/columns/enum.Column.html +++ b/rustdoc/arrabiata/columns/enum.Column.html @@ -1,10 +1,10 @@ -Column in arrabiata::columns - Rust
pub enum Column {
+Column in arrabiata::columns - Rust
pub enum Column {
     Selector(Gadget),
     PublicInput(usize),
     X(usize),
-}

Variants§

§

Selector(Gadget)

§

PublicInput(usize)

§

X(usize)

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl PartialEq<Column> for Column

source§

fn eq(&self, other: &Column) -> bool

This method tests for self and other values to be equal, and is used +}

Variants§

§

Selector(Gadget)

§

PublicInput(usize)

§

X(usize)

Trait Implementations§

source§

impl Clone for Column

source§

fn clone(&self) -> Column

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Column

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl FormattedOutput for Column

source§

fn latex(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn text(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn ocaml(&self, _cache: &mut HashMap<CacheId, Self>) -> String

source§

fn is_alpha(&self) -> bool

source§

impl PartialEq<Column> for Column

source§

fn eq(&self, other: &Column) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
source§

impl Copy for Column

source§

impl StructuralPartialEq for Column

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +sufficient, and should not be overridden without very good reason.

source§

impl Copy for Column

source§

impl StructuralPartialEq for Column

Auto Trait Implementations§

§

impl RefUnwindSafe for Column

§

impl Send for Column

§

impl Sync for Column

§

impl Unpin for Column

§

impl UnwindSafe for Column

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/arrabiata/columns/enum.Gadget.html b/rustdoc/arrabiata/columns/enum.Gadget.html index c36f4a754e..b4eaef9396 100644 --- a/rustdoc/arrabiata/columns/enum.Gadget.html +++ b/rustdoc/arrabiata/columns/enum.Gadget.html @@ -1,30 +1,17 @@ -Gadget in arrabiata::columns - Rust
pub enum Gadget {
+Gadget in arrabiata::columns - Rust
pub enum Gadget {
     App,
-    PermutationArgument,
-    SixteenBitsDecomposition,
-    BitDecompositionFrom16Bits,
-    BitDecomposition,
     EllipticCurveAddition,
     EllipticCurveScaling,
     Poseidon,
-    PoseidonNextRow,
 }
Expand description

This enum represents the different gadgets that can be used in the circuit. The selectors are defined at setup time, can take only the values 0 or 1 and are public.

-

Variants§

§

App

§

PermutationArgument

§

SixteenBitsDecomposition

Decompose a 255 bits scalar into 16 chunks of 16 bits.

-
§

BitDecompositionFrom16Bits

Decompose a 16bits chunk into individual bits.

-
§

BitDecomposition

This gadget decomposes a 255 bits value into bits using 17 lines and 17 -columns.

-
§

EllipticCurveAddition

§

EllipticCurveScaling

§

Poseidon

This gadget implement the Poseidon hash instance described in the -top-level documentation. The implementation does not use the “next row” -and is unsafe at the moment as no permutation argument is implemented.

-
§

PoseidonNextRow

This gadget implement the Poseidon hash instance described in the -top-level documentation. Compared to the previous one (that might be -deprecated in the future), this implementation does use the “next row” +

Variants§

§

App

§

EllipticCurveAddition

§

EllipticCurveScaling

§

Poseidon

This gadget implement the Poseidon hash instance described in the +top-level documentation. This implementation does use the “next row” to allow the computation of one additional round per row. In the current setup, with crate::NUMBER_OF_COLUMNS columns, we can compute 5 full rounds per row.

-

Trait Implementations§

source§

impl Clone for Gadget

source§

fn clone(&self) -> Gadget

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Gadget

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl EnumCount for Gadget

source§

const COUNT: usize = 9usize

source§

impl IntoEnumIterator for Gadget

source§

impl PartialEq<Gadget> for Gadget

source§

fn eq(&self, other: &Gadget) -> bool

This method tests for self and other values to be equal, and is used +

Trait Implementations§

source§

impl Clone for Gadget

source§

fn clone(&self) -> Gadget

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Gadget

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl EnumCount for Gadget

source§

const COUNT: usize = 4usize

source§

impl IntoEnumIterator for Gadget

source§

impl PartialEq<Gadget> for Gadget

source§

fn eq(&self, other: &Gadget) -> bool

This method tests for self and other values to be equal, and is used by ==.
1.0.0 · source§

fn ne(&self, other: &Rhs) -> bool

This method tests for !=. The default implementation is almost always sufficient, and should not be overridden without very good reason.
source§

impl Copy for Gadget

source§

impl StructuralPartialEq for Gadget

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere diff --git a/rustdoc/arrabiata/columns/index.html b/rustdoc/arrabiata/columns/index.html index 23b3360ba7..69e4bbe860 100644 --- a/rustdoc/arrabiata/columns/index.html +++ b/rustdoc/arrabiata/columns/index.html @@ -1,3 +1,3 @@ -arrabiata::columns - Rust

Module arrabiata::columns

source ·

Structs

Enums

source§

fn allocate(&mut self) -> Self::Position

Allocate a new variable in the circuit for the current row
source§

fn allocate_next_row(&mut self) -> Self::Position

Allocate a new variable in the circuit for the next row
source§

fn read_position(&self, pos: Self::Position) -> Self::Variable

Return the corresponding variable at the given position
source§

fn allocate_public_input(&mut self) -> Self::Position

source§

fn constant(&self, value: BigInt) -> Self::Variable

source§

fn activate_gadget(&mut self, gadget: Gadget)

Activate the gadget for the row.
source§

fn add_constraint(&mut self, constraint: Self::Variable)

source§

fn constrain_boolean(&mut self, x: Self::Variable)

source§

fn assert_zero(&mut self, x: Self::Variable)

Assert that the variable is zero
source§

fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)

Assert that the two variables are equal
source§

unsafe fn bitmask_be( &mut self, _x: &Self::Variable, _highest_bit: u32, _lowest_bit: u32, pos: Self::Position -) -> Self::Variable

Flagged as unsafe as it does require an additional range check Read more
source§

fn range_check16(&mut self, _x: Self::Position)

Check if the variable is between [0, 2^16 - 1]
source§

fn square(&mut self, pos: Self::Position, x: Self::Variable) -> Self::Variable

Compute the square a field element
source§

fn fetch_input(&mut self, pos: Self::Position) -> Self::Variable

Fetch an input of the application
source§

fn reset(&mut self)

Reset the environment to build the next row
source§

fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

Return the folding combiner
source§

unsafe fn read_sixteen_bits_chunks_folding_combiner( +) -> Self::Variable

Flagged as unsafe as it does require an additional range check Read more
source§

fn range_check16(&mut self, _x: Self::Position)

Check if the variable is between [0, 2^16 - 1]
source§

fn square(&mut self, pos: Self::Position, x: Self::Variable) -> Self::Variable

Compute the square a field element
source§

fn fetch_input(&mut self, pos: Self::Position) -> Self::Variable

Fetch an input of the application
source§

fn reset(&mut self)

Reset the environment to build the next row
source§

fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

Return the folding combiner
source§

unsafe fn read_sixteen_bits_chunks_folding_combiner( &mut self, pos: Self::Position, _i: u32 -) -> Self::Variable

Get the 16bits chunks of the folding combiner, and save it into pos. Read more
source§

unsafe fn read_bit_of_folding_combiner( +) -> Self::Variable

Get the 16bits chunks of the folding combiner, and save it into pos. Read more
source§

unsafe fn read_bit_of_folding_combiner( &mut self, pos: Self::Position, _i: u64 ) -> Self::Variable

Read the i-th bit of the folding combiner, in little endian, and safe it -in the column given by pos. Read more
source§

fn load_poseidon_state( +in the column given by pos. Read more

source§

fn load_poseidon_state( &mut self, pos: Self::Position, _i: usize -) -> Self::Variable

Load the state of the Poseidon hash function into the environment
source§

unsafe fn save_poseidon_state(&mut self, _x: Self::Variable, _i: usize)

Save the state of poseidon into the environment Read more
source§

fn get_poseidon_round_constant( +) -> Self::Variable

Load the state of the Poseidon hash function into the environment
source§

unsafe fn save_poseidon_state(&mut self, _x: Self::Variable, _i: usize)

Save the state of poseidon into the environment Read more
source§

fn get_poseidon_round_constant( &mut self, pos: Self::Position, _round: usize, _i: usize -) -> Self::Variable

source§

fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

Return the requested MDS matrix coefficient
source§

unsafe fn fetch_value_to_absorb( +) -> Self::Variable

source§

fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

Return the requested MDS matrix coefficient
source§

unsafe fn fetch_value_to_absorb( &mut self, pos: Self::Position, _curr_round: usize ) -> Self::Variable

Load the public value to absorb at the current step. -The position should be a public column. Read more
source§

unsafe fn load_temporary_accumulators( +The position should be a public column. Read more

source§

unsafe fn load_temporary_accumulators( &mut self, pos_x: Self::Position, pos_y: Self::Position, @@ -87,19 +88,19 @@

Safety
) -> (Self::Variable, Self::Variable)
Load the affine coordinates of the elliptic curve point currently saved in the temporary accumulators. Temporary accumulators could be seen as a CPU cache, an intermediate storage between the RAM (random access -memory) and the CPU registers (memory cells that are constrained). Read more
source§

unsafe fn save_temporary_accumulators( +memory) and the CPU registers (memory cells that are constrained). Read more

source§

unsafe fn save_temporary_accumulators( &mut self, _x: Self::Variable, _y: Self::Variable, _side: Side -)

Save temporary accumulators into the environment Read more
source§

unsafe fn is_same_ec_point( +)

Save temporary accumulators into the environment Read more
source§

unsafe fn is_same_ec_point( &mut self, pos: Self::Position, _x1: Self::Variable, _y1: Self::Variable, _x2: Self::Variable, _y2: Self::Variable -) -> Self::Variable

Check if the points given by (x1, y1) and (x2, y2) are equals. Read more
source§

fn zero(&self) -> Self::Variable

Build the constant zero
source§

fn one(&self) -> Self::Variable

Build the constant one
source§

fn compute_lambda( +) -> Self::Variable

Check if the points given by (x1, y1) and (x2, y2) are equals. Read more
source§

fn zero(&self) -> Self::Variable

Build the constant zero
source§

fn one(&self) -> Self::Variable

Build the constant one
source§

fn compute_lambda( &mut self, pos: Self::Position, is_same_point: Self::Variable, @@ -108,7 +109,7 @@

Safety
x2: Self::Variable, y2: Self::Variable ) -> Self::Variable
Compute the coefficient λ used in the elliptic curve addition. -If the two points are the same, the λ is computed as follows: Read more
source§

fn compute_x5(&self, x: Self::Variable) -> Self::Variable

Compute the x^5 of the given variable

Auto Trait Implementations§

§

impl<Fp> RefUnwindSafe for Env<Fp>where +If the two points are the same, the λ is computed as follows: Read more

source§

fn compute_x5(&self, x: Self::Variable) -> Self::Variable

Compute the x^5 of the given variable

Auto Trait Implementations§

§

impl<Fp> RefUnwindSafe for Env<Fp>where Fp: RefUnwindSafe,

§

impl<Fp> Send for Env<Fp>

§

impl<Fp> Sync for Env<Fp>

§

impl<Fp> Unpin for Env<Fp>where Fp: Unpin,

§

impl<Fp> UnwindSafe for Env<Fp>where Fp: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere diff --git a/rustdoc/arrabiata/index.html b/rustdoc/arrabiata/index.html index 9aac9df5f4..173cf27914 100644 --- a/rustdoc/arrabiata/index.html +++ b/rustdoc/arrabiata/index.html @@ -1,16 +1,14 @@ -arrabiata - Rust

Crate arrabiata

source ·

Modules

Variants§

§

BitDecomposition(usize)

This gadget decomposes a 255 bits value into bits using 17 lines and 17 -columns. The constructor parameter is the line number.

-
§

SixteenBitsDecomposition

Decompose a 255 bits scalar into 16 chunks of 16 bits.

-
§

BitDecompositionFrom16Bits(usize)

Decompose a 16bits chunk into individual bits. The constructor parameter -is the index of the chunk (it is supposed to be less than 16, as there -are 16 chunks of 16 bits for a 255 bits scalar).

-
§

Poseidon(usize)

This gadget implement the Poseidon hash instance described in the -top-level documentation. The implementation does not use the “next row” -and is unsafe at the moment as no permutation argument is implemented.

-
§

PoseidonNextRow(usize)

This gadget implement the Poseidon hash instance described in the +

Variants§

§

Poseidon(usize)

This gadget implement the Poseidon hash instance described in the top-level documentation. Compared to the previous one (that might be deprecated in the future), this implementation does use the “next row” to allow the computation of one additional round per row. In the current setup, with NUMBER_OF_COLUMNS columns, we can compute 5 full rounds per row.

-
§

EllipticCurveScaling(usize, u64)

§

EllipticCurveAddition(usize)

§

NoOp

Trait Implementations§

source§

impl Clone for Instruction

source§

fn clone(&self) -> Instruction

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Instruction

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for Instruction

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere +

§

EllipticCurveScaling(usize, u64)

§

EllipticCurveAddition(usize)

§

NoOp

Trait Implementations§

source§

impl Clone for Instruction

source§

fn clone(&self) -> Instruction

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl Debug for Instruction

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl Copy for Instruction

Auto Trait Implementations§

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

diff --git a/rustdoc/arrabiata/interpreter/enum.Side.html b/rustdoc/arrabiata/interpreter/enum.Side.html index 1b0bca4b86..8656820e63 100644 --- a/rustdoc/arrabiata/interpreter/enum.Side.html +++ b/rustdoc/arrabiata/interpreter/enum.Side.html @@ -1,4 +1,4 @@ -Side in arrabiata::interpreter - Rust
pub enum Side {
+Side in arrabiata::interpreter - Rust
pub enum Side {
     Left,
     Right,
 }
Expand description

Define the side of the temporary accumulator. diff --git a/rustdoc/arrabiata/interpreter/fn.run_app.html b/rustdoc/arrabiata/interpreter/fn.run_app.html index 4ee3f86587..79eec9f817 100644 --- a/rustdoc/arrabiata/interpreter/fn.run_app.html +++ b/rustdoc/arrabiata/interpreter/fn.run_app.html @@ -1,2 +1,2 @@ -run_app in arrabiata::interpreter - Rust

Function arrabiata::interpreter::run_app

source ·
pub fn run_app<E: InterpreterEnv>(env: &mut E)
Expand description

Run the application

+run_app in arrabiata::interpreter - Rust

Function arrabiata::interpreter::run_app

source ·
pub fn run_app<E: InterpreterEnv>(env: &mut E)
Expand description

Run the application

\ No newline at end of file diff --git a/rustdoc/arrabiata/interpreter/fn.run_ivc.html b/rustdoc/arrabiata/interpreter/fn.run_ivc.html index fdad79090c..598db5b9a9 100644 --- a/rustdoc/arrabiata/interpreter/fn.run_ivc.html +++ b/rustdoc/arrabiata/interpreter/fn.run_ivc.html @@ -1,4 +1,4 @@ -run_ivc in arrabiata::interpreter - Rust

Function arrabiata::interpreter::run_ivc

source ·
pub fn run_ivc<E: InterpreterEnv>(env: &mut E, instr: Instruction)
Expand description

Run an iteration of the IVC scheme

+run_ivc in arrabiata::interpreter - Rust

Function arrabiata::interpreter::run_ivc

source ·
pub fn run_ivc<E: InterpreterEnv>(env: &mut E, instr: Instruction)
Expand description

Run an iteration of the IVC scheme

It consists of the following steps:

  1. Compute the hash of the public input.
  2. diff --git a/rustdoc/arrabiata/interpreter/index.html b/rustdoc/arrabiata/interpreter/index.html index 0969ee91ad..ec8164dbc6 100644 --- a/rustdoc/arrabiata/interpreter/index.html +++ b/rustdoc/arrabiata/interpreter/index.html @@ -1,4 +1,4 @@ -arrabiata::interpreter - Rust

    Module arrabiata::interpreter

    source ·
    Expand description

    This module contains the implementation of the IVC scheme in addition to +arrabiata::interpreter - Rust

    Module arrabiata::interpreter

    source ·
    Expand description

    This module contains the implementation of the IVC scheme in addition to running an arbitrary function that can use up to crate::NUMBER_OF_COLUMNS columns. At the moment, all constraints must be of maximum degree @@ -32,7 +32,6 @@

  3. Gadget layout
  4. -
  5. Bit composition instruction
  6. Handle the combinaison of constraints
  7. @@ -174,25 +173,6 @@
    Gadget layout
    as described in Efficient MSMs in Kimchi Circuits. We leave this for future work.

    -

    Bit composition instruction (deprecated)

    -

    Decomposing a 255 bits value into bits can also be done using -NUMBER_OF_COLUMNS columns and BIT_DECOMPOSITION_NUMBER_OF_CHUNKS rows -without lookups using the following layout:

    -
    | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 |
    -| y  | x  | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7  | b8  | b9  | b10 | b11 | b12 | b13 | b14 |
    -| -- | -- | -- | -- | -- | -- | -- | -- | -- | --- | --- | --- | --- | --- | --- | --- | --- |
    -| x0 | x  | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -| x1 | x0 | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -| x2 | x1 | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -| .. | .. | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -| x16| x15| .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -
    -

    where:

    -
      -
    • x is the input value 14
    • -
    • for each row i, we have x_i = x_{i - 1} << 15 - Σ 2^j b_{i * 15 + j}
    • -
    • b_i is the i-th bit of the input value j=0
    • -

    Handle the combinaison of constraints

    The prover will have to combine the constraints to generate the full circuit at the end. The constraints will be combined using a diff --git a/rustdoc/arrabiata/interpreter/trait.InterpreterEnv.html b/rustdoc/arrabiata/interpreter/trait.InterpreterEnv.html index 6f4cb54596..28e924fd06 100644 --- a/rustdoc/arrabiata/interpreter/trait.InterpreterEnv.html +++ b/rustdoc/arrabiata/interpreter/trait.InterpreterEnv.html @@ -1,4 +1,4 @@ -InterpreterEnv in arrabiata::interpreter - Rust

    Required Associated Types§

    source

    type Position: Clone + Copy

    source

    type Variable: Clone + Add<Self::Variable, Output = Self::Variable> + Sub<Self::Variable, Output = Self::Variable> + Mul<Self::Variable, Output = Self::Variable> + Debug + Zero + One

    The variable should be seen as a certain object that can be built by +

    Required Associated Types§

    source

    type Position: Clone + Copy

    source

    type Variable: Clone + Add<Self::Variable, Output = Self::Variable> + Sub<Self::Variable, Output = Self::Variable> + Mul<Self::Variable, Output = Self::Variable> + Debug + Zero + One

    The variable should be seen as a certain object that can be built by multiplying and adding, i.e. the variable can be seen as a solution to a polynomial. When instantiating as expressions - “constraints” - it defines multivariate polynomials.

    -

    Required Methods§

    source

    fn allocate(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the current row

    -
    source

    fn allocate_next_row(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the next row

    -
    source

    fn read_position(&self, pos: Self::Position) -> Self::Variable

    Return the corresponding variable at the given position

    -
    source

    fn allocate_public_input(&mut self) -> Self::Position

    source

    fn write_column( +

    Required Methods§

    source

    fn allocate(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the current row

    +
    source

    fn allocate_next_row(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the next row

    +
    source

    fn read_position(&self, pos: Self::Position) -> Self::Variable

    Return the corresponding variable at the given position

    +
    source

    fn allocate_public_input(&mut self) -> Self::Position

    source

    fn write_column( &mut self, col: Self::Position, v: Self::Variable ) -> Self::Variable

    Set the value of the variable at the given position for the current row

    -
    source

    fn write_public_input(&mut self, x: Self::Position, v: BigInt) -> Self::Variable

    Write the corresponding public inputs.

    -
    source

    fn activate_gadget(&mut self, gadget: Gadget)

    Activate the gadget for the row.

    -
    source

    fn zero(&self) -> Self::Variable

    Build the constant zero

    -
    source

    fn one(&self) -> Self::Variable

    Build the constant one

    -
    source

    fn constant(&self, v: BigInt) -> Self::Variable

    source

    fn assert_zero(&mut self, x: Self::Variable)

    Assert that the variable is zero

    -
    source

    fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)

    Assert that the two variables are equal

    -
    source

    fn range_check16(&mut self, x: Self::Position)

    Check if the variable is between [0, 2^16 - 1]

    -
    source

    fn add_constraint(&mut self, x: Self::Variable)

    source

    fn constrain_boolean(&mut self, x: Self::Variable)

    source

    fn square(&mut self, res: Self::Position, x: Self::Variable) -> Self::Variable

    Compute the square a field element

    -
    source

    unsafe fn bitmask_be( +

source

fn write_public_input(&mut self, x: Self::Position, v: BigInt) -> Self::Variable

Write the corresponding public inputs.

+
source

fn activate_gadget(&mut self, gadget: Gadget)

Activate the gadget for the row.

+
source

fn zero(&self) -> Self::Variable

Build the constant zero

+
source

fn one(&self) -> Self::Variable

Build the constant one

+
source

fn constant(&self, v: BigInt) -> Self::Variable

source

fn assert_zero(&mut self, x: Self::Variable)

Assert that the variable is zero

+
source

fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)

Assert that the two variables are equal

+
source

fn range_check16(&mut self, x: Self::Position)

Check if the variable is between [0, 2^16 - 1]

+
source

fn add_constraint(&mut self, x: Self::Variable)

source

fn constrain_boolean(&mut self, x: Self::Variable)

source

fn square(&mut self, res: Self::Position, x: Self::Variable) -> Self::Variable

Compute the square a field element

+
source

unsafe fn bitmask_be( &mut self, x: &Self::Variable, highest_bit: u32, @@ -149,10 +149,10 @@

Safety

There are no constraints on the returned value; callers must assert the relationship with the source variable x and that the returned value fits in highest_bit - lowest_bit bits.

-
source

fn fetch_input(&mut self, res: Self::Position) -> Self::Variable

Fetch an input of the application

-
source

fn reset(&mut self)

Reset the environment to build the next row

-
source

fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

Return the folding combiner

-
source

unsafe fn read_sixteen_bits_chunks_folding_combiner( +

source

fn fetch_input(&mut self, res: Self::Position) -> Self::Variable

Fetch an input of the application

+
source

fn reset(&mut self)

Reset the environment to build the next row

+
source

fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

Return the folding combiner

+
source

unsafe fn read_sixteen_bits_chunks_folding_combiner( &mut self, pos: Self::Position, i: u32 @@ -161,7 +161,7 @@

Safety

There are no constraints saying that it is actually the previous computed value. We should do something like a runtime lookup/permutation check. It is left for when the lookup is implemented.

-
source

unsafe fn read_bit_of_folding_combiner( +

source

unsafe fn read_bit_of_folding_combiner( &mut self, pos: Self::Position, i: u64 @@ -169,21 +169,21 @@

Safety
in the column given by pos.

Safety

There is no check that the output is actually a boolean

-
source

fn load_poseidon_state( +

source

fn load_poseidon_state( &mut self, pos: Self::Position, i: usize ) -> Self::Variable

Load the state of the Poseidon hash function into the environment

-
source

unsafe fn save_poseidon_state(&mut self, v: Self::Variable, i: usize)

Save the state of poseidon into the environment

+
source

unsafe fn save_poseidon_state(&mut self, v: Self::Variable, i: usize)

Save the state of poseidon into the environment

Safety

It does not have any effect on the constraints

-
source

fn get_poseidon_round_constant( +

source

fn get_poseidon_round_constant( &mut self, pos: Self::Position, round: usize, i: usize -) -> Self::Variable

source

fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

Return the requested MDS matrix coefficient

-
source

unsafe fn fetch_value_to_absorb( +) -> Self::Variable

source

fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

Return the requested MDS matrix coefficient

+
source

unsafe fn fetch_value_to_absorb( &mut self, pos: Self::Position, curr_round: usize @@ -194,7 +194,7 @@

Safety
interpreter simple.

Safety

No constraint is added. It should be used with caution.

-
source

unsafe fn is_same_ec_point( +

source

unsafe fn is_same_ec_point( &mut self, pos: Self::Position, x1: Self::Variable, @@ -204,7 +204,7 @@

Safety
) -> Self::Variable

Check if the points given by (x1, y1) and (x2, y2) are equals.

Safety

No constraint is added. It should be used with caution.

-
source

unsafe fn inverse( +

source

unsafe fn inverse( &mut self, pos: Self::Position, x: Self::Variable @@ -212,7 +212,7 @@

Safety
Safety

Zero is not allowed as an input. Witness only

-
source

fn compute_lambda( +

source

fn compute_lambda( &mut self, pos: Self::Position, is_same_point: Self::Variable, @@ -227,7 +227,7 @@

Safety
Otherwise, the λ is computed as follows:
  • λ = (Y1 - Y2) / (X1 - X2)
  • -
    source

    fn double_ec_point( +

    source

    fn double_ec_point( &mut self, pos_x: Self::Position, pos_y: Self::Position, @@ -238,7 +238,7 @@

    Safety
    The last argument, row, is used to decide if the result should be written in the current or the next row of the variable position pos_x and pos_y.

    -
    source

    unsafe fn load_temporary_accumulators( +

    source

    unsafe fn load_temporary_accumulators( &mut self, pos_x: Self::Position, pos_y: Self::Position, @@ -253,7 +253,7 @@

    Safety
    Safety

    No constraints are enforced. It is not also enforced that the accumulators have been cleaned between two different gadgets.

    -
    source

    unsafe fn save_temporary_accumulators( +

    source

    unsafe fn save_temporary_accumulators( &mut self, _v1: Self::Variable, _v2: Self::Variable, @@ -261,12 +261,12 @@

    Safety
    )

    Save temporary accumulators into the environment

    Safety

    It does not have any effect on the constraints.

    -

    Provided Methods§

    source

    fn compute_x5(&self, x: Self::Variable) -> Self::Variable

    Compute the x^5 of the given variable

    -

    Implementors§

    source§

    impl<Fp: PrimeField> InterpreterEnv for arrabiata::constraints::Env<Fp>

    An environment to build constraints. +

    Provided Methods§

    source

    fn compute_x5(&self, x: Self::Variable) -> Self::Variable

    Compute the x^5 of the given variable

    +

    Implementors§

    source§

    impl<Fp: PrimeField> InterpreterEnv for arrabiata::constraints::Env<Fp>

    An environment to build constraints. The constraint environment is mostly useful when we want to perform a Nova proof. The constraint environment must be instantiated only once, at the last step of the computation.

    -
    §

    type Position = (Column, CurrOrNext)

    §

    type Variable = Operations<ExprInner<Operations<ConstantExprInner<Fp, ChallengeTerm>>, Column>>

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> InterpreterEnv for arrabiata::witness::Env<Fp, Fq, E1, E2>where +

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> InterpreterEnv for arrabiata::witness::Env<Fp, Fq, E1, E2>where <E1::Params as CurveConfig>::BaseField: PrimeField, - <E2::Params as CurveConfig>::BaseField: PrimeField,

    §

    type Position = (Column, CurrOrNext)

    §

    type Variable = BigInt

    \ No newline at end of file + <E2::Params as CurveConfig>::BaseField: PrimeField, \ No newline at end of file diff --git a/rustdoc/arrabiata/sidebar-items.js b/rustdoc/arrabiata/sidebar-items.js index 82f4596611..bacc8d2a6d 100644 --- a/rustdoc/arrabiata/sidebar-items.js +++ b/rustdoc/arrabiata/sidebar-items.js @@ -1 +1 @@ -window.SIDEBAR_ITEMS = {"constant":["BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK","BIT_DECOMPOSITION_NUMBER_OF_CHUNKS","IVC_CIRCUIT_SIZE","MAXIMUM_FIELD_SIZE_IN_BITS","MAX_DEGREE","MIN_SRS_LOG2_SIZE","NUMBER_OF_COLUMNS","NUMBER_OF_PUBLIC_INPUTS","NUMBER_OF_SELECTORS","NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO","POSEIDON_ALPHA","POSEIDON_ROUNDS_FULL","POSEIDON_STATE_SIZE"],"mod":["column_env","columns","constraints","interpreter","logup","poseidon_3_60_0_5_5_fp","poseidon_3_60_0_5_5_fq","proof","prover","verifier","witness"]}; \ No newline at end of file +window.SIDEBAR_ITEMS = {"constant":["IVC_CIRCUIT_SIZE","MAXIMUM_FIELD_SIZE_IN_BITS","MAX_DEGREE","MIN_SRS_LOG2_SIZE","NUMBER_OF_COLUMNS","NUMBER_OF_PUBLIC_INPUTS","NUMBER_OF_SELECTORS","NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO","POSEIDON_ALPHA","POSEIDON_ROUNDS_FULL","POSEIDON_STATE_SIZE"],"mod":["column_env","columns","constraints","interpreter","logup","poseidon_3_60_0_5_5_fp","poseidon_3_60_0_5_5_fq","proof","prover","verifier","witness"]}; \ No newline at end of file diff --git a/rustdoc/arrabiata/witness/constant.IVC_STARTING_INSTRUCTION.html b/rustdoc/arrabiata/witness/constant.IVC_STARTING_INSTRUCTION.html index 339d59a86c..ea8482f589 100644 --- a/rustdoc/arrabiata/witness/constant.IVC_STARTING_INSTRUCTION.html +++ b/rustdoc/arrabiata/witness/constant.IVC_STARTING_INSTRUCTION.html @@ -1 +1 @@ -IVC_STARTING_INSTRUCTION in arrabiata::witness - Rust
    pub const IVC_STARTING_INSTRUCTION: Instruction;
    \ No newline at end of file +IVC_STARTING_INSTRUCTION in arrabiata::witness - Rust
    pub const IVC_STARTING_INSTRUCTION: Instruction;
    \ No newline at end of file diff --git a/rustdoc/arrabiata/witness/index.html b/rustdoc/arrabiata/witness/index.html index 93009dd065..bebc19dd76 100644 --- a/rustdoc/arrabiata/witness/index.html +++ b/rustdoc/arrabiata/witness/index.html @@ -1 +1 @@ -arrabiata::witness - Rust

    Module arrabiata::witness

    source ·

    Structs

    • An environment that can be shared between IVC instances.

    Constants

    \ No newline at end of file +arrabiata::witness - Rust

    Module arrabiata::witness

    source ·

    Structs

    • An environment that can be shared between IVC instances.

    Constants

    \ No newline at end of file diff --git a/rustdoc/arrabiata/witness/struct.Env.html b/rustdoc/arrabiata/witness/struct.Env.html index c1ed561f15..43f8086380 100644 --- a/rustdoc/arrabiata/witness/struct.Env.html +++ b/rustdoc/arrabiata/witness/struct.Env.html @@ -1,6 +1,6 @@ -Env in arrabiata::witness - Rust

    Struct arrabiata::witness::Env

    source ·
    pub struct Env<Fp: PrimeField, Fq: PrimeField, E1: AffineRepr<ScalarField = Fp, BaseField = Fq>, E2: AffineRepr<ScalarField = Fq, BaseField = Fp>> {
    Show 29 fields - pub domain_fp: EvaluationDomains<Fp>, - pub domain_fq: EvaluationDomains<Fq>, +Env in arrabiata::witness - Rust

    Struct arrabiata::witness::Env

    source ·
    pub struct Env<Fp: PrimeField, Fq: PrimeField, E1: AffineRepr<ScalarField = Fp, BaseField = Fq>, E2: AffineRepr<ScalarField = Fq, BaseField = Fp>> {
    Show 29 fields + pub domain_fp: EvaluationDomains<Fp>, + pub domain_fq: EvaluationDomains<Fq>, pub srs_e1: SRS<E1>, pub srs_e2: SRS<E2>, pub ivc_accumulator_e1: Vec<PolyComm<E1>>, @@ -11,8 +11,8 @@ pub idx_var_next_row: usize, pub idx_var_pi: usize, pub current_row: usize, - pub state: [BigInt; 17], - pub next_state: [BigInt; 17], + pub state: [BigInt; 15], + pub next_state: [BigInt; 15], pub public_state: [BigInt; 17], pub selectors: Vec<Vec<bool>>, pub challenges: Vec<BigInt>, @@ -34,8 +34,8 @@

    The environment is run over big integers to avoid performing reduction at all step. Instead the user implementing the interpreter can reduce in the corresponding field when they want.

    -

    Fields§

    §domain_fp: EvaluationDomains<Fp>

    Domain for Fp

    -
    §domain_fq: EvaluationDomains<Fq>

    Domain for Fq

    +

    Fields§

    §domain_fp: EvaluationDomains<Fp>

    Domain for Fp

    +
    §domain_fq: EvaluationDomains<Fq>

    Domain for Fq

    §srs_e1: SRS<E1>

    SRS for the first curve

    §srs_e2: SRS<E2>

    SRS for the second curve

    §ivc_accumulator_e1: Vec<PolyComm<E1>>§ivc_accumulator_e2: Vec<PolyComm<E2>>§previous_commitments_e1: Vec<PolyComm<E1>>

    Commitments to the previous instances

    @@ -46,8 +46,8 @@ It is used to allocate new public inputs without having to keep track of the position.

    §current_row: usize

    Current processing row. Used to build the witness.

    -
    §state: [BigInt; 17]

    State of the current row in the execution trace

    -
    §next_state: [BigInt; 17]

    Next row in the execution trace. It is useful when we deal with +

    §state: [BigInt; 15]

    State of the current row in the execution trace

    +
    §next_state: [BigInt; 15]

    Next row in the execution trace. It is useful when we deal with polynomials accessing “the next row”, i.e. witness columns where we do evaluate at ζ and ζω.

    §public_state: [BigInt; 17]

    Contain the public state

    @@ -90,19 +90,19 @@ column when committing to the witness.

    §z0: BigInt

    Initial input

    §zi: BigInt

    Current input

    -
    §_marker: PhantomData<(Fp, Fq, E1, E2)>

    Implementations§

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> Env<Fp, Fq, E1, E2>

    source

    pub fn new( +

    §_marker: PhantomData<(Fp, Fq, E1, E2)>

    Implementations§

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> Env<Fp, Fq, E1, E2>

    source

    pub fn new( srs_log2_size: usize, z0: BigInt, sponge_e1: [BigInt; 3], sponge_e2: [BigInt; 3] -) -> Self

    source

    pub fn reset_for_next_iteration(&mut self)

    Reset the environment to build the next iteration

    -
    source

    pub fn accumulate_commitment_blinder(&mut self)

    The blinder used to commit, to avoid committing to the zero polynomial +) -> Self

    source

    pub fn reset_for_next_iteration(&mut self)

    Reset the environment to build the next iteration

    +
    source

    pub fn accumulate_commitment_blinder(&mut self)

    The blinder used to commit, to avoid committing to the zero polynomial and accumulate it in the IVC.

    It is part of the instance, and it is accumulated in the IVC.

    -
    source

    pub fn compute_and_update_previous_commitments(&mut self)

    Compute the commitments to the current witness, and update the previous +

    source

    pub fn compute_and_update_previous_commitments(&mut self)

    Compute the commitments to the current witness, and update the previous instances.

    -
    source

    pub fn compute_output(&mut self)

    Compute the output of the application on the previous output

    -
    source

    pub fn fetch_instruction(&self) -> Instruction

    source

    pub fn fetch_next_instruction(&mut self) -> Instruction

    Describe the control-flow for the IVC circuit.

    +
    source

    pub fn compute_output(&mut self)

    Compute the output of the application on the previous output

    +
    source

    pub fn fetch_instruction(&self) -> Instruction

    source

    pub fn fetch_next_instruction(&mut self) -> Instruction

    Describe the control-flow for the IVC circuit.

    For a step i + 1, the IVC circuit receives as public input the following values:

      @@ -154,29 +154,29 @@
    • We compute the next hash we give to the next instance
    hash' = H(i + 1, acc'_1, ..., acc'_17, z_0, z_(i + 1))
    -

    Trait Implementations§

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> InterpreterEnv for Env<Fp, Fq, E1, E2>where +

    Trait Implementations§

    source§

    impl<Fp: PrimeField, Fq: PrimeField, E1: CommitmentCurve<ScalarField = Fp, BaseField = Fq>, E2: CommitmentCurve<ScalarField = Fq, BaseField = Fp>> InterpreterEnv for Env<Fp, Fq, E1, E2>where <E1::Params as CurveConfig>::BaseField: PrimeField, <E2::Params as CurveConfig>::BaseField: PrimeField,

    §

    type Variable = BigInt

    For efficiency, and for having a single interpreter, we do not use one of the fields. We use a generic BigInt to represent the values. When building the witness, we will reduce into the corresponding field.

    -
    source§

    fn activate_gadget(&mut self, gadget: Gadget)

    Activate the gadget for the current row

    -
    source§

    unsafe fn bitmask_be( +

    source§

    fn activate_gadget(&mut self, gadget: Gadget)

    Activate the gadget for the current row

    +
    source§

    unsafe fn bitmask_be( &mut self, x: &Self::Variable, highest_bit: u32, lowest_bit: u32, pos: Self::Position ) -> Self::Variable

    Flagged as unsafe as it does require an additional range check

    -
    source§

    fn reset(&mut self)

    Reset the environment to build the next row

    -
    source§

    fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

    FIXME: check if we need to pick the left or right sponge

    -
    source§

    unsafe fn inverse( +

    source§

    fn reset(&mut self)

    Reset the environment to build the next row

    +
    source§

    fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable

    FIXME: check if we need to pick the left or right sponge

    +
    source§

    unsafe fn inverse( &mut self, pos: Self::Position, x: Self::Variable ) -> Self::Variable

    Inverse of a variable

    Safety

    Zero is not allowed as an input.

    -
    source§

    fn double_ec_point( +

    source§

    fn double_ec_point( &mut self, pos_x: Self::Position, pos_y: Self::Position, @@ -184,38 +184,38 @@

    Safety
    y1: Self::Variable ) -> (Self::Variable, Self::Variable)

    Double the elliptic curve point given by the affine coordinates (x1, y1) and save the result in the registers pos_x and pos_y.

    -
    §

    type Position = (Column, CurrOrNext)

    source§

    fn allocate(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the current row
    source§

    fn allocate_next_row(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the next row
    source§

    fn read_position(&self, pos: Self::Position) -> Self::Variable

    Return the corresponding variable at the given position
    source§

    fn allocate_public_input(&mut self) -> Self::Position

    source§

    fn write_column( +

    §

    type Position = (Column, CurrOrNext)

    source§

    fn allocate(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the current row
    source§

    fn allocate_next_row(&mut self) -> Self::Position

    Allocate a new variable in the circuit for the next row
    source§

    fn read_position(&self, pos: Self::Position) -> Self::Variable

    Return the corresponding variable at the given position
    source§

    fn allocate_public_input(&mut self) -> Self::Position

    source§

    fn write_column( &mut self, pos: Self::Position, v: Self::Variable -) -> Self::Variable

    Set the value of the variable at the given position for the current row
    source§

    fn write_public_input( +) -> Self::Variable

    Set the value of the variable at the given position for the current row
    source§

    fn write_public_input( &mut self, pos: Self::Position, v: BigInt -) -> Self::Variable

    Write the corresponding public inputs.
    source§

    fn constrain_boolean(&mut self, x: Self::Variable)

    source§

    fn constant(&self, v: BigInt) -> Self::Variable

    source§

    fn add_constraint(&mut self, _x: Self::Variable)

    source§

    fn assert_zero(&mut self, var: Self::Variable)

    Assert that the variable is zero
    source§

    fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)

    Assert that the two variables are equal
    source§

    fn range_check16(&mut self, pos: Self::Position)

    Check if the variable is between [0, 2^16 - 1]
    source§

    fn square(&mut self, pos: Self::Position, x: Self::Variable) -> Self::Variable

    Compute the square a field element
    source§

    fn fetch_input(&mut self, pos: Self::Position) -> Self::Variable

    Fetch an input of the application
    source§

    unsafe fn read_sixteen_bits_chunks_folding_combiner( +) -> Self::Variable

    Write the corresponding public inputs.
    source§

    fn constrain_boolean(&mut self, x: Self::Variable)

    source§

    fn constant(&self, v: BigInt) -> Self::Variable

    source§

    fn add_constraint(&mut self, _x: Self::Variable)

    source§

    fn assert_zero(&mut self, var: Self::Variable)

    Assert that the variable is zero
    source§

    fn assert_equal(&mut self, x: Self::Variable, y: Self::Variable)

    Assert that the two variables are equal
    source§

    fn range_check16(&mut self, pos: Self::Position)

    Check if the variable is between [0, 2^16 - 1]
    source§

    fn square(&mut self, pos: Self::Position, x: Self::Variable) -> Self::Variable

    Compute the square a field element
    source§

    fn fetch_input(&mut self, pos: Self::Position) -> Self::Variable

    Fetch an input of the application
    source§

    unsafe fn read_sixteen_bits_chunks_folding_combiner( &mut self, pos: Self::Position, i: u32 -) -> Self::Variable

    Get the 16bits chunks of the folding combiner, and save it into pos. Read more
    source§

    unsafe fn read_bit_of_folding_combiner( +) -> Self::Variable

    Get the 16bits chunks of the folding combiner, and save it into pos. Read more
    source§

    unsafe fn read_bit_of_folding_combiner( &mut self, pos: Self::Position, i: u64 ) -> Self::Variable

    Read the i-th bit of the folding combiner, in little endian, and safe it -in the column given by pos. Read more
    source§

    fn load_poseidon_state( +in the column given by pos. Read more

    source§

    fn load_poseidon_state( &mut self, pos: Self::Position, i: usize -) -> Self::Variable

    Load the state of the Poseidon hash function into the environment
    source§

    fn get_poseidon_round_constant( +) -> Self::Variable

    Load the state of the Poseidon hash function into the environment
    source§

    fn get_poseidon_round_constant( &mut self, pos: Self::Position, round: usize, i: usize -) -> Self::Variable

    source§

    fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

    Return the requested MDS matrix coefficient
    source§

    unsafe fn save_poseidon_state(&mut self, x: Self::Variable, i: usize)

    Save the state of poseidon into the environment Read more
    source§

    unsafe fn fetch_value_to_absorb( +) -> Self::Variable

    source§

    fn get_poseidon_mds_matrix(&mut self, i: usize, j: usize) -> Self::Variable

    Return the requested MDS matrix coefficient
    source§

    unsafe fn save_poseidon_state(&mut self, x: Self::Variable, i: usize)

    Save the state of poseidon into the environment Read more
    source§

    unsafe fn fetch_value_to_absorb( &mut self, pos: Self::Position, curr_round: usize ) -> Self::Variable

    Load the public value to absorb at the current step. -The position should be a public column. Read more
    source§

    unsafe fn load_temporary_accumulators( +The position should be a public column. Read more

    source§

    unsafe fn load_temporary_accumulators( &mut self, pos_x: Self::Position, pos_y: Self::Position, @@ -223,19 +223,19 @@

    Safety
    ) -> (Self::Variable, Self::Variable)
    Load the affine coordinates of the elliptic curve point currently saved in the temporary accumulators. Temporary accumulators could be seen as a CPU cache, an intermediate storage between the RAM (random access -memory) and the CPU registers (memory cells that are constrained). Read more
    source§

    unsafe fn save_temporary_accumulators( +memory) and the CPU registers (memory cells that are constrained). Read more

    source§

    unsafe fn save_temporary_accumulators( &mut self, x: Self::Variable, y: Self::Variable, side: Side -)

    Save temporary accumulators into the environment Read more
    source§

    unsafe fn is_same_ec_point( +)

    Save temporary accumulators into the environment Read more
    source§

    unsafe fn is_same_ec_point( &mut self, pos: Self::Position, x1: Self::Variable, y1: Self::Variable, x2: Self::Variable, y2: Self::Variable -) -> Self::Variable

    Check if the points given by (x1, y1) and (x2, y2) are equals. Read more
    source§

    fn zero(&self) -> Self::Variable

    Build the constant zero
    source§

    fn one(&self) -> Self::Variable

    Build the constant one
    source§

    fn compute_lambda( +) -> Self::Variable

    Check if the points given by (x1, y1) and (x2, y2) are equals. Read more
    source§

    fn zero(&self) -> Self::Variable

    Build the constant zero
    source§

    fn one(&self) -> Self::Variable

    Build the constant one
    source§

    fn compute_lambda( &mut self, pos: Self::Position, is_same_point: Self::Variable, @@ -244,7 +244,7 @@

    Safety
    x2: Self::Variable, y2: Self::Variable ) -> Self::Variable
    Compute the coefficient λ used in the elliptic curve addition. -If the two points are the same, the λ is computed as follows: Read more
    source§

    fn compute_x5(&self, x: Self::Variable) -> Self::Variable

    Compute the x^5 of the given variable

    Auto Trait Implementations§

    §

    impl<Fp, Fq, E1, E2> RefUnwindSafe for Env<Fp, Fq, E1, E2>where +If the two points are the same, the λ is computed as follows: Read more

    source§

    fn compute_x5(&self, x: Self::Variable) -> Self::Variable

    Compute the x^5 of the given variable

    Auto Trait Implementations§

    §

    impl<Fp, Fq, E1, E2> RefUnwindSafe for Env<Fp, Fq, E1, E2>where E1: RefUnwindSafe, E2: RefUnwindSafe, Fp: RefUnwindSafe, diff --git a/rustdoc/folding/decomposable_folding/struct.DecomposableFoldingScheme.html b/rustdoc/folding/decomposable_folding/struct.DecomposableFoldingScheme.html index c35411986b..d404f7983a 100644 --- a/rustdoc/folding/decomposable_folding/struct.DecomposableFoldingScheme.html +++ b/rustdoc/folding/decomposable_folding/struct.DecomposableFoldingScheme.html @@ -38,7 +38,7 @@ &self, a: A, b: B, - error_commitments: [PolyComm<CF::Curve>; 2], + error_commitments: [PolyComm<CF::Curve>; 2], fq_sponge: &mut Sponge ) -> RelaxedInstance<CF::Curve, CF::Instance>where A: RelaxableInstance<CF::Curve, CF::Instance>, diff --git a/rustdoc/folding/instance_witness/struct.ExtendedInstance.html b/rustdoc/folding/instance_witness/struct.ExtendedInstance.html index 2eeaafe046..c8bd1f63f0 100644 --- a/rustdoc/folding/instance_witness/struct.ExtendedInstance.html +++ b/rustdoc/folding/instance_witness/struct.ExtendedInstance.html @@ -1,6 +1,6 @@ -ExtendedInstance in folding::instance_witness - Rust
    pub struct ExtendedInstance<G: CommitmentCurve, I: Instance<G>> {
    +ExtendedInstance in folding::instance_witness - Rust
    pub struct ExtendedInstance<G: CommitmentCurve, I: Instance<G>> {
         pub instance: I,
    -    pub extended: Vec<PolyComm<G>>,
    +    pub extended: Vec<PolyComm<G>>,
     }
    Expand description

    An extended instance is an instance that has been extended with extra columns by quadraticization. The original instance is stored in the instance field. @@ -9,15 +9,15 @@ described by a degree 3 polynomial, an additional column will be added, and extended will contain 1 commitment.

    Fields§

    §instance: I

    The original instance.

    -
    §extended: Vec<PolyComm<G>>

    Commitments to the extra columns added by quadraticization

    -

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for ExtendedInstance<G, I>

    source§

    fn clone(&self) -> ExtendedInstance<G, I>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedInstance<G, I>

    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Instance<G> for ExtendedInstance<G, I>

    source§

    fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)

    Return the elements to be absorbed by the sponge

    +
    §extended: Vec<PolyComm<G>>

    Commitments to the extra columns added by quadraticization

    +

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for ExtendedInstance<G, I>

    source§

    fn clone(&self) -> ExtendedInstance<G, I>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedInstance<G, I>

    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Instance<G> for ExtendedInstance<G, I>

    source§

    fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)

    Return the elements to be absorbed by the sponge

    The commitments to the additional columns created by quadriticization are appended to the existing commitments of the initial instance to be absorbed. The scalars are unchanged.

    source§

    fn get_blinder(&self) -> G::ScalarField

    Returns the blinder value. It is the same as the one of the original

    -
    source§

    fn get_alphas(&self) -> &Alphas<G::ScalarField>

    Returns the alphas values for the instance
    source§

    impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<ExtendedInstance<G, I>> for ExtendedInstance<G, I>

    source§

    fn eq(&self, other: &ExtendedInstance<G, I>) -> bool

    This method tests for self and other values to be equal, and is used +
    source§

    fn get_alphas(&self) -> &Alphas<G::ScalarField>

    Returns the alphas values for the instance
    source§

    impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<ExtendedInstance<G, I>> for ExtendedInstance<G, I>

    source§

    fn eq(&self, other: &ExtendedInstance<G, I>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for ExtendedInstance<G, I>

    Auto Trait Implementations§

    §

    impl<G, I> RefUnwindSafe for ExtendedInstance<G, I>where +sufficient, and should not be overridden without very good reason.

    source§

    impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for ExtendedInstance<G, I>

    Auto Trait Implementations§

    §

    impl<G, I> RefUnwindSafe for ExtendedInstance<G, I>where G: RefUnwindSafe, I: RefUnwindSafe,

    §

    impl<G, I> Send for ExtendedInstance<G, I>where I: Send,

    §

    impl<G, I> Sync for ExtendedInstance<G, I>where @@ -36,7 +36,7 @@

    That is, this conversion is whatever the implementation of From<T> for U chooses to do.

    §

    impl<T> Pointable for T

    §

    const ALIGN: usize = mem::align_of::<T>()

    The alignment of pointer.
    §

    type Init = T

    The type for initializers.
    §

    unsafe fn init(init: <T as Pointable>::Init) -> usize

    Initializes a with the given initializer. Read more
    §

    unsafe fn deref<'a>(ptr: usize) -> &'a T

    Dereferences the given pointer. Read more
    §

    unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

    Mutably dereferences the given pointer. Read more
    §

    unsafe fn drop(ptr: usize)

    Drops the object pointed to by the given pointer. Read more
    source§

    impl<G, I> RelaxableInstance<G, I> for Iwhere - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G>,

    source§

    fn relax(self) -> RelaxedInstance<G, I>

    This method takes an Instance and a commitment to zero and extends the instance, returning a relaxed instance which is composed by the extended instance, the scalar one, and the error commitment which is set to the diff --git a/rustdoc/folding/instance_witness/struct.ExtendedWitness.html b/rustdoc/folding/instance_witness/struct.ExtendedWitness.html index 1b6d77b870..3199efaf31 100644 --- a/rustdoc/folding/instance_witness/struct.ExtendedWitness.html +++ b/rustdoc/folding/instance_witness/struct.ExtendedWitness.html @@ -1,4 +1,4 @@ -ExtendedWitness in folding::instance_witness - Rust

    pub struct ExtendedWitness<G: CommitmentCurve, W: Witness<G>> {
    +ExtendedWitness in folding::instance_witness - Rust
    pub struct ExtendedWitness<G: CommitmentCurve, W: Witness<G>> {
         pub witness: W,
         pub extended: BTreeMap<usize, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>,
     }
    Expand description

    This structure represents a witness extended with extra columns that are @@ -6,12 +6,12 @@

    Fields§

    §witness: W

    This is the original witness, without quadraticization

    §extended: BTreeMap<usize, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

    Extra columns added by quadraticization to lower the degree of expressions to 2

    -

    Implementations§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> ExtendedWitness<G, W>

    source

    pub fn is_extended(&self) -> bool

    Return true if the no extra columns are added by quadraticization

    +

    Implementations§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> ExtendedWitness<G, W>

    source

    pub fn is_extended(&self) -> bool

    Return true if the no extra columns are added by quadraticization

    Can be used to know if the extended witness columns are already computed, to avoid overriding them

    -

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for ExtendedWitness<G, W>where - G::ScalarField: Clone,

    source§

    fn clone(&self) -> ExtendedWitness<G, W>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for ExtendedWitness<G, W>where - G::ScalarField: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedWitness<G, W>

    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Witness<G> for ExtendedWitness<G, W>

    Auto Trait Implementations§

    §

    impl<G, W> RefUnwindSafe for ExtendedWitness<G, W>where +

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for ExtendedWitness<G, W>where + G::ScalarField: Clone,

    source§

    fn clone(&self) -> ExtendedWitness<G, W>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for ExtendedWitness<G, W>where + G::ScalarField: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedWitness<G, W>

    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Witness<G> for ExtendedWitness<G, W>

    Auto Trait Implementations§

    §

    impl<G, W> RefUnwindSafe for ExtendedWitness<G, W>where W: RefUnwindSafe, <G as AffineRepr>::ScalarField: RefUnwindSafe,

    §

    impl<G, W> Send for ExtendedWitness<G, W>where W: Send,

    §

    impl<G, W> Sync for ExtendedWitness<G, W>where @@ -27,7 +27,7 @@

    That is, this conversion is whatever the implementation of From<T> for U chooses to do.

    §

    impl<T> Pointable for T

    §

    const ALIGN: usize = mem::align_of::<T>()

    The alignment of pointer.
    §

    type Init = T

    The type for initializers.
    §

    unsafe fn init(init: <T as Pointable>::Init) -> usize

    Initializes a with the given initializer. Read more
    §

    unsafe fn deref<'a>(ptr: usize) -> &'a T

    Dereferences the given pointer. Read more
    §

    unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

    Mutably dereferences the given pointer. Read more
    §

    unsafe fn drop(ptr: usize)

    Drops the object pointed to by the given pointer. Read more
    source§

    impl<G, W> RelaxableWitness<G, W> for Wwhere - G: CommitmentCurve, + G: CommitmentCurve, W: Witness<G>,

    source§

    fn relax( self, zero_poly: &Evaluations<<G as AffineRepr>::ScalarField, Radix2EvaluationDomain<<G as AffineRepr>::ScalarField>> diff --git a/rustdoc/folding/instance_witness/struct.RelaxedInstance.html b/rustdoc/folding/instance_witness/struct.RelaxedInstance.html index 6b73209163..9586b32c02 100644 --- a/rustdoc/folding/instance_witness/struct.RelaxedInstance.html +++ b/rustdoc/folding/instance_witness/struct.RelaxedInstance.html @@ -1,7 +1,7 @@ -RelaxedInstance in folding::instance_witness - Rust
    pub struct RelaxedInstance<G: CommitmentCurve, I: Instance<G>> {
    +RelaxedInstance in folding::instance_witness - Rust
    pub struct RelaxedInstance<G: CommitmentCurve, I: Instance<G>> {
         pub extended_instance: ExtendedInstance<G, I>,
         pub u: G::ScalarField,
    -    pub error_commitment: PolyComm<G>,
    +    pub error_commitment: PolyComm<G>,
         pub blinder: G::ScalarField,
     }
    Expand description

    A relaxed instance is an instance that has been relaxed by the folding scheme. It contains the original instance, extended with the columns added by @@ -11,23 +11,23 @@

    Fields§

    §extended_instance: ExtendedInstance<G, I>

    The original instance, extended with the columns added by quadriticization

    §u: G::ScalarField

    The scalar u that is used to homogenize the polynomials

    -
    §error_commitment: PolyComm<G>

    The commitment to the error term, introduced when homogenizing the +

    §error_commitment: PolyComm<G>

    The commitment to the error term, introduced when homogenizing the polynomials

    §blinder: G::ScalarField

    Blinder used for the commitments to the cross terms

    -

    Implementations§

    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxedInstance<G, I>

    source

    pub fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)

    Returns the elements to be absorbed by the sponge

    +

    Implementations§

    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxedInstance<G, I>

    source

    pub fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>)

    Returns the elements to be absorbed by the sponge

    The scalar elements of the are appended with the scalar u and the commitments are appended by the commitment to the error term.

    -
    source

    pub fn get_extended_column_commitment(&self, i: usize) -> Option<&PolyComm<G>>

    Provides access to commitments to the extra columns added by +

    source

    pub fn get_extended_column_commitment(&self, i: usize) -> Option<&PolyComm<G>>

    Provides access to commitments to the extra columns added by quadraticization

    -

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for RelaxedInstance<G, I>where - G::ScalarField: Clone,

    source§

    fn clone(&self) -> RelaxedInstance<G, I>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedInstance<G, I>

    A relaxed instance can be folded.

    +

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for RelaxedInstance<G, I>where + G::ScalarField: Clone,

    source§

    fn clone(&self) -> RelaxedInstance<G, I>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedInstance<G, I>

    A relaxed instance can be folded.

    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two relaxed instances into a new relaxed instance.

    -
    source§

    impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<RelaxedInstance<G, I>> for RelaxedInstance<G, I>where +

    source§

    impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<RelaxedInstance<G, I>> for RelaxedInstance<G, I>where G::ScalarField: PartialEq,

    source§

    fn eq(&self, other: &RelaxedInstance<G, I>) -> bool

    This method tests for self and other values to be equal, and is used by ==.
    1.0.0 · source§

    fn ne(&self, other: &Rhs) -> bool

    This method tests for !=. The default implementation is almost always -sufficient, and should not be overridden without very good reason.
    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for RelaxedInstance<G, I>

    A relaxed instance is trivially relaxable.

    -
    source§

    fn relax(self) -> RelaxedInstance<G, I>

    source§

    impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for RelaxedInstance<G, I>where - G::ScalarField: Eq,

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for RelaxedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for RelaxedInstance<G, I>

    Auto Trait Implementations§

    §

    impl<G, I> RefUnwindSafe for RelaxedInstance<G, I>where +sufficient, and should not be overridden without very good reason.

    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for RelaxedInstance<G, I>

    A relaxed instance is trivially relaxable.

    +
    source§

    fn relax(self) -> RelaxedInstance<G, I>

    source§

    impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for RelaxedInstance<G, I>where + G::ScalarField: Eq,

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for RelaxedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for RelaxedInstance<G, I>

    Auto Trait Implementations§

    §

    impl<G, I> RefUnwindSafe for RelaxedInstance<G, I>where G: RefUnwindSafe, I: RefUnwindSafe, <G as AffineRepr>::ScalarField: RefUnwindSafe,

    §

    impl<G, I> Send for RelaxedInstance<G, I>where diff --git a/rustdoc/folding/instance_witness/struct.RelaxedWitness.html b/rustdoc/folding/instance_witness/struct.RelaxedWitness.html index b574f2d15e..0a40347819 100644 --- a/rustdoc/folding/instance_witness/struct.RelaxedWitness.html +++ b/rustdoc/folding/instance_witness/struct.RelaxedWitness.html @@ -1,18 +1,18 @@ -RelaxedWitness in folding::instance_witness - Rust
    pub struct RelaxedWitness<G: CommitmentCurve, W: Witness<G>> {
    +RelaxedWitness in folding::instance_witness - Rust
    pub struct RelaxedWitness<G: CommitmentCurve, W: Witness<G>> {
         pub extended_witness: ExtendedWitness<G, W>,
         pub error_vec: Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>,
     }

    Fields§

    §extended_witness: ExtendedWitness<G, W>

    The original witness, extended with the columns added by quadriticization.

    §error_vec: Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>

    The error vector, introduced when homogenizing the polynomials. For degree 3 folding, it is E1 - c T1 - c^2 T2 + c^3 E2

    -

    Implementations§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxedWitness<G, W>

    Implementations§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxedWitness<G, W>

    source

    pub fn get_extended_column( &self, i: &usize ) -> Option<&Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>

    Provides access to the extra columns added by quadraticization

    -

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for RelaxedWitness<G, W>where - G::ScalarField: Clone,

    source§

    fn clone(&self) -> RelaxedWitness<G, W>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for RelaxedWitness<G, W>where - G::ScalarField: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedWitness<G, W>

    A relaxed/homogenized witness can be folded.

    -
    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxableWitness<G, W> for RelaxedWitness<G, W>

    Trait Implementations§

    source§

    impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for RelaxedWitness<G, W>where + G::ScalarField: Clone,

    source§

    fn clone(&self) -> RelaxedWitness<G, W>

    Returns a copy of the value. Read more
    1.0.0 · source§

    fn clone_from(&mut self, source: &Self)

    Performs copy-assignment from source. Read more
    source§

    impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for RelaxedWitness<G, W>where + G::ScalarField: Debug,

    source§

    fn fmt(&self, f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedWitness<G, W>

    A relaxed/homogenized witness can be folded.

    +
    source§

    fn combine(a: Self, b: Self, challenge: G::ScalarField) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.
    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxableWitness<G, W> for RelaxedWitness<G, W>

    source§

    fn relax( self, _zero_poly: &Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>> ) -> RelaxedWitness<G, W>

    Auto Trait Implementations§

    §

    impl<G, W> RefUnwindSafe for RelaxedWitness<G, W>where diff --git a/rustdoc/folding/instance_witness/trait.Foldable.html b/rustdoc/folding/instance_witness/trait.Foldable.html index 795b6cd63f..9a55738426 100644 --- a/rustdoc/folding/instance_witness/trait.Foldable.html +++ b/rustdoc/folding/instance_witness/trait.Foldable.html @@ -2,6 +2,6 @@ // Required method fn combine(a: Self, b: Self, challenge: F) -> Self; }

    Required Methods§

    source

    fn combine(a: Self, b: Self, challenge: F) -> Self

    Combine two objects ‘a’ and ‘b’ into a new object using the challenge.

    -

    Implementors§

    source§

    impl<F: Field> Foldable<F> for Alphas<F>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedInstance<G, I>

    A relaxed instance can be folded.

    -
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedWitness<G, W>

    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedWitness<G, W>

    A relaxed/homogenized witness can be folded.

    +

    Implementors§

    source§

    impl<F: Field> Foldable<F> for Alphas<F>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedInstance<G, I>

    source§

    impl<G: CommitmentCurve, I: Instance<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedInstance<G, I>

    A relaxed instance can be folded.

    +
    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for ExtendedWitness<G, W>

    source§

    impl<G: CommitmentCurve, W: Witness<G>> Foldable<<G as AffineRepr>::ScalarField> for RelaxedWitness<G, W>

    A relaxed/homogenized witness can be folded.

    \ No newline at end of file diff --git a/rustdoc/folding/instance_witness/trait.Instance.html b/rustdoc/folding/instance_witness/trait.Instance.html index 82b6207f25..2040f5ca6e 100644 --- a/rustdoc/folding/instance_witness/trait.Instance.html +++ b/rustdoc/folding/instance_witness/trait.Instance.html @@ -1,4 +1,4 @@ -Instance in folding::instance_witness - Rust
    pub trait Instance<G: CommitmentCurve>: Sized + Foldable<G::ScalarField> {
    +Instance in folding::instance_witness - Rust
    pub trait Instance<G: CommitmentCurve>: Sized + Foldable<G::ScalarField> {
         // Required methods
         fn to_absorb(&self) -> (Vec<G::ScalarField>, Vec<G>);
         fn get_alphas(&self) -> &Alphas<G::ScalarField>;
    @@ -26,4 +26,4 @@
     
    let challenge_r = sponge.challenge();
     
    source

    fn get_alphas(&self) -> &Alphas<G::ScalarField>

    Returns the alphas values for the instance

    source

    fn get_blinder(&self) -> G::ScalarField

    Return the blinder that can be used while committing to polynomials.

    -

    Implementors§

    \ No newline at end of file +

    Implementors§

    source§

    impl<G: CommitmentCurve, I: Instance<G>> Instance<G> for ExtendedInstance<G, I>

    \ No newline at end of file diff --git a/rustdoc/folding/instance_witness/trait.RelaxableInstance.html b/rustdoc/folding/instance_witness/trait.RelaxableInstance.html index adaa5d34d4..1502fdfe1b 100644 --- a/rustdoc/folding/instance_witness/trait.RelaxableInstance.html +++ b/rustdoc/folding/instance_witness/trait.RelaxableInstance.html @@ -1,5 +1,5 @@ -RelaxableInstance in folding::instance_witness - Rust
    pub trait RelaxableInstance<G: CommitmentCurve, I: Instance<G>> {
    +RelaxableInstance in folding::instance_witness - Rust
    pub trait RelaxableInstance<G: CommitmentCurve, I: Instance<G>> {
         // Required method
         fn relax(self) -> RelaxedInstance<G, I>;
    -}

    Required Methods§

    source

    fn relax(self) -> RelaxedInstance<G, I>

    Implementors§

    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for RelaxedInstance<G, I>

    A relaxed instance is trivially relaxable.

    -
    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for I

    \ No newline at end of file +}

    Required Methods§

    source

    fn relax(self) -> RelaxedInstance<G, I>

    Implementors§

    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for RelaxedInstance<G, I>

    A relaxed instance is trivially relaxable.

    +
    source§

    impl<G: CommitmentCurve, I: Instance<G>> RelaxableInstance<G, I> for I

    \ No newline at end of file diff --git a/rustdoc/folding/instance_witness/trait.RelaxablePair.html b/rustdoc/folding/instance_witness/trait.RelaxablePair.html index 832b2cd657..6dd60f6206 100644 --- a/rustdoc/folding/instance_witness/trait.RelaxablePair.html +++ b/rustdoc/folding/instance_witness/trait.RelaxablePair.html @@ -1,4 +1,4 @@ -RelaxablePair in folding::instance_witness - Rust
    pub trait RelaxablePair<G: CommitmentCurve, I: Instance<G>, W: Witness<G>> {
    +RelaxablePair in folding::instance_witness - Rust
    pub trait RelaxablePair<G: CommitmentCurve, I: Instance<G>, W: Witness<G>> {
         // Required method
         fn relax(
             self,
    @@ -8,13 +8,13 @@
         self,
         zero_poly: &Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>
     ) -> (RelaxedInstance<G, I>, RelaxedWitness<G, W>)

    Implementations on Foreign Types§

    source§

    impl<G, I, W> RelaxablePair<G, I, W> for (RelaxedInstance<G, I>, RelaxedWitness<G, W>)where - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + RelaxableInstance<G, I>, W: Witness<G> + RelaxableWitness<G, W>,

    source§

    fn relax( self, _zero_poly: &Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>> ) -> (RelaxedInstance<G, I>, RelaxedWitness<G, W>)

    source§

    impl<G, I, W> RelaxablePair<G, I, W> for (I, W)where - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + RelaxableInstance<G, I>, W: Witness<G> + RelaxableWitness<G, W>,

    source§

    fn relax( self, diff --git a/rustdoc/folding/instance_witness/trait.RelaxableWitness.html b/rustdoc/folding/instance_witness/trait.RelaxableWitness.html index 28d739e10a..c315cf4606 100644 --- a/rustdoc/folding/instance_witness/trait.RelaxableWitness.html +++ b/rustdoc/folding/instance_witness/trait.RelaxableWitness.html @@ -1,4 +1,4 @@ -RelaxableWitness in folding::instance_witness - Rust
    pub trait RelaxableWitness<G: CommitmentCurve, W: Witness<G>> {
    +RelaxableWitness in folding::instance_witness - Rust
    pub trait RelaxableWitness<G: CommitmentCurve, W: Witness<G>> {
         // Required method
         fn relax(
             self,
    @@ -8,4 +8,4 @@
     

    Required Methods§

    source

    fn relax( self, zero_poly: &Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>> -) -> RelaxedWitness<G, W>

    Implementors§

    \ No newline at end of file +) -> RelaxedWitness<G, W>

    Implementors§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxableWitness<G, W> for RelaxedWitness<G, W>

    source§

    impl<G: CommitmentCurve, W: Witness<G>> RelaxableWitness<G, W> for W

    \ No newline at end of file diff --git a/rustdoc/folding/instance_witness/trait.Witness.html b/rustdoc/folding/instance_witness/trait.Witness.html index 2f1f3010e6..df7874827e 100644 --- a/rustdoc/folding/instance_witness/trait.Witness.html +++ b/rustdoc/folding/instance_witness/trait.Witness.html @@ -1 +1 @@ -Witness in folding::instance_witness - Rust
    pub trait Witness<G: CommitmentCurve>: Sized + Foldable<G::ScalarField> { }

    Implementors§

    \ No newline at end of file +Witness in folding::instance_witness - Rust
    pub trait Witness<G: CommitmentCurve>: Sized + Foldable<G::ScalarField> { }

    Implementors§

    source§

    impl<G: CommitmentCurve, W: Witness<G>> Witness<G> for ExtendedWitness<G, W>

    \ No newline at end of file diff --git a/rustdoc/folding/standard_config/struct.Env.html b/rustdoc/folding/standard_config/struct.Env.html index d7da25e9d4..5f99676910 100644 --- a/rustdoc/folding/standard_config/struct.Env.html +++ b/rustdoc/folding/standard_config/struct.Env.html @@ -1,10 +1,10 @@ Env in folding::standard_config - Rust
    pub struct Env<G, Col, Chall, Sel, Str, I, W>where
    -    G: CommitmentCurve,
    +    G: CommitmentCurve,
         I: Instance<G> + Index<Chall, Output = G::ScalarField> + Clone,
         W: Witness<G> + Clone + Index<Col, Output = [G::ScalarField]> + Index<Sel, Output = [G::ScalarField]>,
         Col: Hash + Eq,{ /* private fields */ }
    Expand description

    A generic Index based environment

    Trait Implementations§

    source§

    impl<G, Col, Chall, Sel, Str, I, W> FoldingEnv<<G as AffineRepr>::ScalarField, I, W, Col, Chall, Sel> for Env<G, Col, Chall, Sel, Str, I, W>where - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + Index<Chall, Output = G::ScalarField> + Clone, W: Witness<G> + Clone + Index<Col, Output = [G::ScalarField]> + Index<Sel, Output = [G::ScalarField]>, Col: FoldingColumnTrait + Eq + Hash, diff --git a/rustdoc/folding/standard_config/struct.StandardConfig.html b/rustdoc/folding/standard_config/struct.StandardConfig.html index 29d5bdd4ca..2a66db1eb8 100644 --- a/rustdoc/folding/standard_config/struct.StandardConfig.html +++ b/rustdoc/folding/standard_config/struct.StandardConfig.html @@ -33,10 +33,10 @@ let _output = scheme.fold_instance_witness_pair(left, right, &mut fq_sponge);

    Trait Implementations§

    source§

    impl<G, Col, Chall, I, W, Srs, Sel, Str> Debug for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>

    source§

    fn fmt(&self, __f: &mut Formatter<'_>) -> Result

    Formats the value using the given formatter. Read more
    source§

    impl<G, Col, Chall, Sel, Str, I, W, Srs> FoldingConfig for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>where Self: 'static, - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + Index<Chall, Output = G::ScalarField> + Clone, W: Witness<G> + Clone + Index<Col, Output = [G::ScalarField]> + Index<Sel, Output = [G::ScalarField]>, - Srs: SRS<G>, + Srs: SRS<G>, Col: Hash + Eq + Debug + Clone + FoldingColumnTrait, Sel: Ord + Copy + Hash + Debug, Chall: Hash + Eq + Debug + Copy, diff --git a/rustdoc/folding/struct.FoldingOutput.html b/rustdoc/folding/struct.FoldingOutput.html index 3f7bd99d0b..ba7cf6fcf9 100644 --- a/rustdoc/folding/struct.FoldingOutput.html +++ b/rustdoc/folding/struct.FoldingOutput.html @@ -1,8 +1,8 @@ FoldingOutput in folding - Rust

    Struct folding::FoldingOutput

    source ·
    pub struct FoldingOutput<C: FoldingConfig> {
         pub folded_instance: RelaxedInstance<C::Curve, C::Instance>,
         pub folded_witness: RelaxedWitness<C::Curve, C::Witness>,
    -    pub t_0: PolyComm<C::Curve>,
    -    pub t_1: PolyComm<C::Curve>,
    +    pub t_0: PolyComm<C::Curve>,
    +    pub t_1: PolyComm<C::Curve>,
         pub relaxed_extended_left_instance: RelaxedInstance<C::Curve, C::Instance>,
         pub relaxed_extended_right_instance: RelaxedInstance<C::Curve, C::Instance>,
         pub to_absorb: (Vec<<<C as FoldingConfig>::Curve as AffineRepr>::ScalarField>, Vec<C::Curve>),
    @@ -10,9 +10,9 @@
     

    Fields§

    §folded_instance: RelaxedInstance<C::Curve, C::Instance>

    The folded instance, containing, in particular, the result C_l + r C_r

    §folded_witness: RelaxedWitness<C::Curve, C::Witness>

    Folded witness, containing, in particular, the result of the evaluations W_l + r W_r

    -
    §t_0: PolyComm<C::Curve>

    The error terms of degree 1, see the top-level documentation of +

    §t_0: PolyComm<C::Curve>

    The error terms of degree 1, see the top-level documentation of crate::expressions

    -
    §t_1: PolyComm<C::Curve>

    The error terms of degree 2, see the top-level documentation of +

    §t_1: PolyComm<C::Curve>

    The error terms of degree 2, see the top-level documentation of crate::expressions

    §relaxed_extended_left_instance: RelaxedInstance<C::Curve, C::Instance>

    The left relaxed instance, including the potential additional columns added by quadritization

    diff --git a/rustdoc/folding/struct.FoldingScheme.html b/rustdoc/folding/struct.FoldingScheme.html index ae97a553a8..2dbb677d8a 100644 --- a/rustdoc/folding/struct.FoldingScheme.html +++ b/rustdoc/folding/struct.FoldingScheme.html @@ -36,7 +36,7 @@ &self, a: A, b: B, - error_commitments: [PolyComm<CF::Curve>; 2], + error_commitments: [PolyComm<CF::Curve>; 2], fq_sponge: &mut Sponge ) -> RelaxedInstance<CF::Curve, CF::Instance>where A: RelaxableInstance<CF::Curve, CF::Instance>, @@ -49,8 +49,8 @@ &self, left_instance: RelaxedInstance<CF::Curve, CF::Instance>, right_instance: RelaxedInstance<CF::Curve, CF::Instance>, - t_0: PolyComm<CF::Curve>, - t_1: PolyComm<CF::Curve>, + t_0: PolyComm<CF::Curve>, + t_1: PolyComm<CF::Curve>, fq_sponge: &mut Sponge ) -> RelaxedInstance<CF::Curve, CF::Instance>where Sponge: FqSponge<<<CF as FoldingConfig>::Curve as AffineRepr>::BaseField, CF::Curve, <<CF as FoldingConfig>::Curve as AffineRepr>::ScalarField>,

    Verifier of the folding scheme; returns a new folded instance, diff --git a/rustdoc/folding/trait.FoldingConfig.html b/rustdoc/folding/trait.FoldingConfig.html index f71f822f40..00bd668ad6 100644 --- a/rustdoc/folding/trait.FoldingConfig.html +++ b/rustdoc/folding/trait.FoldingConfig.html @@ -2,16 +2,16 @@ type Column: FoldingColumnTrait + Debug + Eq + Hash; type Selector: Clone + Debug + Eq + Hash + Copy + Ord + PartialOrd; type Challenge: Clone + Copy + Debug + Eq + Hash; - type Curve: CommitmentCurve; - type Srs: SRS<Self::Curve>; + type Curve: CommitmentCurve; + type Srs: SRS<Self::Curve>; type Instance: Instance<Self::Curve> + Clone; type Witness: Witness<Self::Curve> + Clone; type Structure: Clone; type Env: FoldingEnv<<Self::Curve as AffineRepr>::ScalarField, Self::Instance, Self::Witness, Self::Column, Self::Challenge, Self::Selector, Structure = Self::Structure>; }

    Required Associated Types§

    source

    type Column: FoldingColumnTrait + Debug + Eq + Hash

    source

    type Selector: Clone + Debug + Eq + Hash + Copy + Ord + PartialOrd

    source

    type Challenge: Clone + Copy + Debug + Eq + Hash

    The type of an abstract challenge that can be found in the expressions provided as constraints.

    -
    source

    type Curve: CommitmentCurve

    The target curve used by the polynomial commitment

    -
    source

    type Srs: SRS<Self::Curve>

    The SRS used by the polynomial commitment. The SRS is used to commit to +

    source

    type Curve: CommitmentCurve

    The target curve used by the polynomial commitment

    +
    source

    type Srs: SRS<Self::Curve>

    The SRS used by the polynomial commitment. The SRS is used to commit to the additional columns that are added by the quadraticization.

    source

    type Instance: Instance<Self::Curve> + Clone

    For Plonk, it will be the commitments to the polynomials and the challenges

    source

    type Witness: Witness<Self::Curve> + Clone

    For PlonK, it will be the polynomials in evaluation form that we commit @@ -19,10 +19,10 @@ In the generic prover/verifier, it would be kimchi_msm::witness::Witness.

    source

    type Structure: Clone

    source

    type Env: FoldingEnv<<Self::Curve as AffineRepr>::ScalarField, Self::Instance, Self::Witness, Self::Column, Self::Challenge, Self::Selector, Structure = Self::Structure>

    Implementors§

    source§

    impl<G, Col, Chall, Sel, Str, I, W, Srs> FoldingConfig for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>where Self: 'static, - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + Index<Chall, Output = G::ScalarField> + Clone, W: Witness<G> + Clone + Index<Col, Output = [G::ScalarField]> + Index<Sel, Output = [G::ScalarField]>, - Srs: SRS<G>, + Srs: SRS<G>, Col: Hash + Eq + Debug + Clone + FoldingColumnTrait, Sel: Ord + Copy + Hash + Debug, Chall: Hash + Eq + Debug + Copy, diff --git a/rustdoc/folding/trait.FoldingEnv.html b/rustdoc/folding/trait.FoldingEnv.html index 3e8b2d7986..74a80a9adb 100644 --- a/rustdoc/folding/trait.FoldingEnv.html +++ b/rustdoc/folding/trait.FoldingEnv.html @@ -33,7 +33,7 @@

    source

    fn selector(&self, s: &Selector, side: Side) -> &[F]

    similar to Self::col, but folding may ask for a dynamic selector directly instead of just column that happens to be a selector

    Implementors§

    source§

    impl<G, Col, Chall, Sel, Str, I, W> FoldingEnv<<G as AffineRepr>::ScalarField, I, W, Col, Chall, Sel> for Env<G, Col, Chall, Sel, Str, I, W>where - G: CommitmentCurve, + G: CommitmentCurve, I: Instance<G> + Index<Chall, Output = G::ScalarField> + Clone, W: Witness<G> + Clone + Index<Col, Output = [G::ScalarField]> + Index<Sel, Output = [G::ScalarField]>, Col: FoldingColumnTrait + Eq + Hash, diff --git a/rustdoc/help.html b/rustdoc/help.html index 5b57a161fa..f74e384bbd 100644 --- a/rustdoc/help.html +++ b/rustdoc/help.html @@ -1 +1 @@ -Rustdoc help

    Rustdoc help

    Back
    \ No newline at end of file +Rustdoc help

    Rustdoc help

    Back
    \ No newline at end of file diff --git a/rustdoc/implementors/core/clone/trait.Clone.js b/rustdoc/implementors/core/clone/trait.Clone.js index 81fc4d802c..d1d0d2c687 100644 --- a/rustdoc/implementors/core/clone/trait.Clone.js +++ b/rustdoc/implementors/core/clone/trait.Clone.js @@ -1,6 +1,6 @@ (function() {var implementors = { "arrabiata":[["impl Clone for ChallengeTerm"],["impl Clone for Instruction"],["impl<Fp: Clone + Field> Clone for Env<Fp>"],["impl Clone for GadgetIter"],["impl Clone for Gadget"],["impl Clone for Column"]], -"folding":[["impl<F: Clone + Field> Clone for Alphas<F>"],["impl Clone for Sign"],["impl<G: Clone + KimchiCurve> Clone for EmptyStructure<G>where\n G::ScalarField: Clone,"],["impl Clone for Column"],["impl Clone for Degree"],["impl<C> Clone for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<C> Clone for IntegratedFoldingExpr<C>where\n C: FoldingConfig,"],["impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for ExtendedInstance<G, I>"],["impl<'a, F: Clone> Clone for EvalLeaf<'a, F>"],["impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for RelaxedInstance<G, I>where\n G::ScalarField: Clone,"],["impl<C> Clone for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Clone for ExpExtension<C>where\n C: FoldingConfig,"],["impl<C> Clone for FoldingExp<C>where\n C: FoldingConfig,"],["impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for RelaxedWitness<G, W>where\n G::ScalarField: Clone,"],["impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for ExtendedWitness<G, W>where\n G::ScalarField: Clone,"],["impl<C> Clone for Term<C>where\n C: FoldingConfig,"],["impl Clone for Side"],["impl<C> Clone for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"]], +"folding":[["impl<F: Clone + Field> Clone for Alphas<F>"],["impl Clone for Sign"],["impl<G: Clone + KimchiCurve> Clone for EmptyStructure<G>where\n G::ScalarField: Clone,"],["impl Clone for Column"],["impl Clone for Degree"],["impl<C> Clone for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<C> Clone for IntegratedFoldingExpr<C>where\n C: FoldingConfig,"],["impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for ExtendedInstance<G, I>"],["impl<'a, F: Clone> Clone for EvalLeaf<'a, F>"],["impl<G: Clone + CommitmentCurve, I: Clone + Instance<G>> Clone for RelaxedInstance<G, I>where\n G::ScalarField: Clone,"],["impl<C> Clone for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Clone for ExpExtension<C>where\n C: FoldingConfig,"],["impl<C> Clone for FoldingExp<C>where\n C: FoldingConfig,"],["impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for RelaxedWitness<G, W>where\n G::ScalarField: Clone,"],["impl<G: Clone + CommitmentCurve, W: Clone + Witness<G>> Clone for ExtendedWitness<G, W>where\n G::ScalarField: Clone,"],["impl<C> Clone for Term<C>where\n C: FoldingConfig,"],["impl Clone for Side"],["impl<C> Clone for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"]], "groupmap":[["impl<G: Clone + SWCurveConfig> Clone for BWParameters<G>where\n G::BaseField: Clone,"]], "ivc":[["impl<Ff: Clone> Clone for IVCLookupTable<Ff>"],["impl<G: Clone + CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Clone for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where\n G::ScalarField: Clone,"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Clone for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> Clone for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Clone + KimchiCurve, OpeningProof: Clone + OpenProof<G>> Clone for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where\n G::ScalarField: Clone,"],["impl Clone for ProverError"],["impl<const N_WIT: usize, G: Clone + KimchiCurve> Clone for ProofCommitments<N_WIT, G>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Clone for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl Clone for PlonkishChallengeIter"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> Clone for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>"],["impl Clone for IVCColumn"],["impl Clone for PlonkSpongeConstantsIVC"],["impl<G: Clone + KimchiCurve> Clone for GenericVecStructure<G>where\n G::ScalarField: Clone,"],["impl Clone for PlonkishChallenge"],["impl Clone for PlonkSpongeConstantsIVC"],["impl<const N_COL: usize, const N_FSEL: usize, F: Clone + Field, Evals: Clone> Clone for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"]], "kimchi":[["impl Clone for GateLookupTables"],["impl Clone for GateLookupTable"],["impl<F: Clone> Clone for RuntimeTable<F>"],["impl<F: Clone> Clone for FullChallenge<F>"],["impl Clone for SnarkyCompilationError"],["impl<F: Clone + FftField> Clone for WitnessEvals<F>"],["impl<G: Clone + AffineRepr, OpeningProof: Clone> Clone for ProverProof<G, OpeningProof>where\n G::ScalarField: Clone,"],["impl<F: Clone> Clone for Alphas<F>"],["impl<Evals: Clone> Clone for PointEvaluations<Evals>"],["impl<CamlG: Clone> Clone for CamlLookupCommitments<CamlG>"],["impl<T: Clone> Clone for DisjointSet<T>"],["impl Clone for LookupError"],["impl Clone for FeatureFlags"],["impl<F: Clone + PrimeField> Clone for EvaluatedColumnCoefficients<F>"],["impl Clone for LookupInfo"],["impl Clone for LookupPatterns"],["impl Clone for ProverError"],["impl<F: Clone> Clone for ForeignElement<F>"],["impl Clone for Wire"],["impl<F: Clone> Clone for LookupTable<F>"],["impl<G: Clone + KimchiCurve, OpeningProof: Clone + OpenProof<G>> Clone for VerifierIndex<G, OpeningProof>where\n G::ScalarField: Clone,\n OpeningProof::SRS: Clone,"],["impl Clone for LookupPatternIter"],["impl Clone for Domain"],["impl<F: Clone> Clone for GenericGateSpec<F>"],["impl<F: Clone + PrimeField> Clone for ColumnEvaluations<F>"],["impl<F: Clone + FftField> Clone for LookupPolys<F>"],["impl Clone for FFOps"],["impl Clone for DomainCreationError"],["impl<F: Clone + Field> Clone for RandomOracles<F>"],["impl Clone for LookupFeatures"],["impl<F: Clone> Clone for LookupConfiguration<F>"],["impl<T: Clone> Clone for Operations<T>"],["impl Clone for SetupError"],["impl Clone for LookupTableID"],["impl<F: Clone + FftField> Clone for WitnessOverDomains<F>"],["impl Clone for VerifyError"],["impl Clone for CurrOrNext"],["impl<G: Clone> Clone for TestSRS<G>"],["impl<Evals: Clone> Clone for ProofEvaluations<Evals>"],["impl Clone for FeatureFlag"],["impl Clone for RuntimeTableSpec"],["impl Clone for SnarkyRuntimeError"],["impl<F: Clone + PrimeField> Clone for CircuitGate<F>"],["impl<E: Clone, Column: Clone> Clone for Linearization<E, Column>"],["impl Clone for LookupPattern"],["impl<F: Clone> Clone for ConstantTerm<F>"],["impl Clone for RowOffset"],["impl<G: Clone + KimchiCurve, OpeningProof: Clone + OpenProof<G>> Clone for ProverIndex<G, OpeningProof>where\n G::ScalarField: Clone,\n OpeningProof::SRS: Clone,\n G::BaseField: Clone,"],["impl<F: Clone + FftField> Clone for LookupShifts<F>"],["impl Clone for VerifierIndexError"],["impl<SingleLookup: Clone, LookupTableID: Clone> Clone for JointLookup<SingleLookup, LookupTableID>"],["impl<F: Clone + FftField> Clone for WitnessShifts<F>"],["impl<G> Clone for RecursionChallenge<G>where\n G: AffineRepr + Clone,\n G::ScalarField: Clone,"],["impl<C: Clone, Column: Clone> Clone for ExprInner<C, Column>"],["impl<F: Clone + FftField> Clone for LookupEvals<F>"],["impl Clone for CacheId"],["impl Clone for ArgumentType"],["impl Clone for BerkeleyChallengeTerm"],["impl<F: Clone, Column: Clone, ChallengeTerm: Clone> Clone for PolishToken<F, Column, ChallengeTerm>"],["impl<G: Clone + AffineRepr> Clone for LookupCommitments<G>"],["impl<F: Clone + 'static> Clone for Constants<F>"],["impl<F: Clone, ChallengeTerm: Clone> Clone for ConstantExprInner<F, ChallengeTerm>"],["impl<CamlG: Clone> Clone for CamlProverCommitments<CamlG>"],["impl<G: Clone + AffineRepr> Clone for ProverCommitments<G>"],["impl<F: Clone + FftField> Clone for EvaluationDomains<F>"],["impl<CamlG: Clone, CamlF: Clone> Clone for CamlRecursionChallenge<CamlG, CamlF>"],["impl<F: Clone + FftField> Clone for DomainConstantEvaluations<F>"],["impl<F: Clone + PrimeField> Clone for ConstraintSystem<F>"],["impl Clone for SnarkyError"],["impl Clone for Traces"],["impl<CamlF: Clone> Clone for CamlProofEvaluations<CamlF>"],["impl<F: Clone> Clone for SingleLookup<F>"],["impl Clone for RotMode"],["impl Clone for CircuitGateError"],["impl<F: Clone + FftField> Clone for LookupConstraintSystem<F>"],["impl Clone for LocalPosition"],["impl<T: Clone> Clone for LookupSelectors<T>"],["impl<F: Clone + PrimeField> Clone for Boolean<F>"],["impl Clone for GateType"],["impl<Field> Clone for SnarkyConstraintSystem<Field>where\n Field: PrimeField + Clone,"],["impl<F: Clone> Clone for RuntimeTableCfg<F>"],["impl Clone for StoredSRSType"],["impl Clone for Column"],["impl<Column: Clone> Clone for Variable<Column>"],["impl<F: Clone + Field> Clone for Constants<F>"],["impl<F> Clone for FieldVar<F>where\n F: PrimeField + Clone,"],["impl<G: Clone + CommitmentCurve> Clone for LookupVerifierIndex<G>"]], diff --git a/rustdoc/implementors/core/cmp/trait.Eq.js b/rustdoc/implementors/core/cmp/trait.Eq.js index 36b36eedbb..a45480ceef 100644 --- a/rustdoc/implementors/core/cmp/trait.Eq.js +++ b/rustdoc/implementors/core/cmp/trait.Eq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "arrabiata":[["impl Eq for ChallengeTerm"]], -"folding":[["impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for RelaxedInstance<G, I>where\n G::ScalarField: Eq,"],["impl Eq for Sign"],["impl<C> Eq for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Eq for FoldingExp<C>where\n C: FoldingConfig,"],["impl<F: Field> Eq for Alphas<F>"],["impl Eq for Degree"],["impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for ExtendedInstance<G, I>"],["impl Eq for Column"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> Eq for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"]], +"folding":[["impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for RelaxedInstance<G, I>where\n G::ScalarField: Eq,"],["impl Eq for Sign"],["impl<C> Eq for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Eq for FoldingExp<C>where\n C: FoldingConfig,"],["impl<F: Field> Eq for Alphas<F>"],["impl Eq for Degree"],["impl<G: Eq + CommitmentCurve, I: Eq + Instance<G>> Eq for ExtendedInstance<G, I>"],["impl Eq for Column"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> Eq for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"]], "ivc":[["impl Eq for IVCColumn"],["impl Eq for PlonkishChallenge"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Eq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> Eq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl<const N_COL: usize, const N_FSEL: usize, F: Eq + Field, Evals: Eq> Eq for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Eq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<Ff: Eq> Eq for IVCLookupTable<Ff>"],["impl<G: Eq + CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Eq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where\n G::ScalarField: Eq,"]], "kimchi":[["impl Eq for LookupPatterns"],["impl Eq for ArgumentType"],["impl Eq for LookupFeatures"],["impl Eq for CurrOrNext"],["impl Eq for RotMode"],["impl Eq for LookupPattern"],["impl Eq for GateType"],["impl<F: Eq> Eq for ConstantTerm<F>"],["impl<G: Eq> Eq for TestSRS<G>"],["impl Eq for GateLookupTable"],["impl Eq for BerkeleyChallengeTerm"],["impl<T: Eq> Eq for Operations<T>"],["impl Eq for CacheId"],["impl Eq for GateLookupTables"],["impl Eq for FFOps"],["impl Eq for FeatureFlag"],["impl Eq for CircuitGateError"],["impl<Column: Eq> Eq for Variable<Column>"],["impl<F: Eq, Column: Eq, ChallengeTerm: Eq> Eq for PolishToken<F, Column, ChallengeTerm>"],["impl Eq for Column"],["impl Eq for RowOffset"],["impl Eq for Wire"],["impl Eq for StoredSRSType"]], "kimchi_msm":[["impl<F: Eq, ID: Eq + LookupTableID> Eq for LogupWitness<F, ID>"],["impl Eq for FECColumn"],["impl<F: Eq, ID: Eq + LookupTableID> Eq for Logup<F, ID>"],["impl<Ff: Eq> Eq for LookupTable<Ff>"],["impl Eq for Column"],["impl Eq for LookupTable"],["impl Eq for LookupTable"],["impl<const N_WIT: usize, F: Eq + PrimeField, ID: Eq + LookupTableID> Eq for ProofInputs<N_WIT, F, ID>"],["impl Eq for TestColumn"],["impl Eq for LookupTableIDs"],["impl Eq for FFAColumn"],["impl Eq for SerializationColumn"],["impl<Ff: Eq> Eq for LookupTable<Ff>"],["impl Eq for DummyLookupTable"],["impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>"],["impl Eq for FECColumnInput"],["impl Eq for FECColumnOutput"],["impl Eq for FECColumnInter"],["impl<Pair: Eq + Pairing> Eq for TestPairingSRS<Pair>where\n Pair::G1Affine: Eq,\n Pair::G2Affine: Eq,"]], diff --git a/rustdoc/implementors/core/cmp/trait.PartialEq.js b/rustdoc/implementors/core/cmp/trait.PartialEq.js index f8b02dba38..efc480ea45 100644 --- a/rustdoc/implementors/core/cmp/trait.PartialEq.js +++ b/rustdoc/implementors/core/cmp/trait.PartialEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "arrabiata":[["impl PartialEq<ChallengeTerm> for ChallengeTerm"],["impl PartialEq<Column> for Column"],["impl PartialEq<Gadget> for Gadget"]], -"folding":[["impl<F: Field> PartialEq<Alphas<F>> for Alphas<F>"],["impl<C> PartialEq<ExpExtension<C>> for ExpExtension<C>where\n C: FoldingConfig,"],["impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<ExtendedInstance<G, I>> for ExtendedInstance<G, I>"],["impl PartialEq<Column> for Column"],["impl PartialEq<Sign> for Sign"],["impl<C> PartialEq<FoldingExp<C>> for FoldingExp<C>where\n C: FoldingConfig,"],["impl<C> PartialEq<FoldingCompatibleExpr<C>> for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<C> PartialEq<ExtendedFoldingColumn<C>> for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl PartialEq<Degree> for Degree"],["impl<C> PartialEq<FoldingCompatibleExprInner<C>> for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> PartialEq<StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>> for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"],["impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<RelaxedInstance<G, I>> for RelaxedInstance<G, I>where\n G::ScalarField: PartialEq,"]], +"folding":[["impl<F: Field> PartialEq<Alphas<F>> for Alphas<F>"],["impl<C> PartialEq<ExpExtension<C>> for ExpExtension<C>where\n C: FoldingConfig,"],["impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<ExtendedInstance<G, I>> for ExtendedInstance<G, I>"],["impl PartialEq<Column> for Column"],["impl PartialEq<Sign> for Sign"],["impl<C> PartialEq<FoldingExp<C>> for FoldingExp<C>where\n C: FoldingConfig,"],["impl<C> PartialEq<FoldingCompatibleExpr<C>> for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<C> PartialEq<ExtendedFoldingColumn<C>> for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl PartialEq<Degree> for Degree"],["impl<C> PartialEq<FoldingCompatibleExprInner<C>> for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> PartialEq<StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>> for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"],["impl<G: PartialEq + CommitmentCurve, I: PartialEq + Instance<G>> PartialEq<RelaxedInstance<G, I>> for RelaxedInstance<G, I>where\n G::ScalarField: PartialEq,"]], "ivc":[["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> PartialEq<PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>> for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl PartialEq<IVCColumn> for IVCColumn"],["impl<Ff: PartialEq> PartialEq<IVCLookupTable<Ff>> for IVCLookupTable<Ff>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> PartialEq<PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>> for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl PartialEq<PlonkishChallenge> for PlonkishChallenge"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> PartialEq<PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>> for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<G: PartialEq + CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> PartialEq<PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>> for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where\n G::ScalarField: PartialEq,"],["impl<const N_COL: usize, const N_FSEL: usize, F: PartialEq + Field, Evals: PartialEq> PartialEq<PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>> for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"]], "kimchi":[["impl PartialEq<GateLookupTables> for GateLookupTables"],["impl PartialEq<CacheId> for CacheId"],["impl<C: PartialEq, Column: PartialEq> PartialEq<ExprInner<C, Column>> for ExprInner<C, Column>"],["impl PartialEq<Column> for Column"],["impl PartialEq<Wire> for Wire"],["impl<Column: PartialEq> PartialEq<Variable<Column>> for Variable<Column>"],["impl<T: PartialEq> PartialEq<Operations<T>> for Operations<T>"],["impl PartialEq<LookupPatterns> for LookupPatterns"],["impl PartialEq<CircuitGateError> for CircuitGateError"],["impl PartialEq<ArgumentType> for ArgumentType"],["impl PartialEq<BerkeleyChallengeTerm> for BerkeleyChallengeTerm"],["impl PartialEq<GateType> for GateType"],["impl PartialEq<CurrOrNext> for CurrOrNext"],["impl PartialEq<FeatureFlag> for FeatureFlag"],["impl PartialEq<RowOffset> for RowOffset"],["impl PartialEq<LookupPattern> for LookupPattern"],["impl PartialEq<GateLookupTable> for GateLookupTable"],["impl<G: PartialEq> PartialEq<TestSRS<G>> for TestSRS<G>"],["impl PartialEq<FFOps> for FFOps"],["impl PartialEq<RotMode> for RotMode"],["impl<F: PartialEq, Column: PartialEq, ChallengeTerm: PartialEq> PartialEq<PolishToken<F, Column, ChallengeTerm>> for PolishToken<F, Column, ChallengeTerm>"],["impl PartialEq<LookupFeatures> for LookupFeatures"],["impl PartialEq<StoredSRSType> for StoredSRSType"],["impl PartialEq<Domain> for Domain"],["impl<F: PartialEq, ChallengeTerm: PartialEq> PartialEq<ConstantExprInner<F, ChallengeTerm>> for ConstantExprInner<F, ChallengeTerm>"],["impl<F: PartialEq> PartialEq<ConstantTerm<F>> for ConstantTerm<F>"]], "kimchi_msm":[["impl<F: PartialEq, ID: PartialEq + LookupTableID> PartialEq<Logup<F, ID>> for Logup<F, ID>"],["impl<Pair: PartialEq + Pairing> PartialEq<TestPairingSRS<Pair>> for TestPairingSRS<Pair>where\n Pair::G1Affine: PartialEq,\n Pair::G2Affine: PartialEq,"],["impl PartialEq<LookupTable> for LookupTable"],["impl PartialEq<DummyLookupTable> for DummyLookupTable"],["impl<const N_WIT: usize, F: PartialEq + PrimeField, ID: PartialEq + LookupTableID> PartialEq<ProofInputs<N_WIT, F, ID>> for ProofInputs<N_WIT, F, ID>"],["impl PartialEq<LookupTable> for LookupTable"],["impl PartialEq<FECColumn> for FECColumn"],["impl<Ff: PartialEq> PartialEq<LookupTable<Ff>> for LookupTable<Ff>"],["impl<Ff: PartialEq> PartialEq<LookupTable<Ff>> for LookupTable<Ff>"],["impl PartialEq<FECColumnOutput> for FECColumnOutput"],["impl PartialEq<TestColumn> for TestColumn"],["impl PartialEq<FECColumnInput> for FECColumnInput"],["impl PartialEq<FECColumnInter> for FECColumnInter"],["impl<F: PartialEq, ID: PartialEq + LookupTableID> PartialEq<LogupWitness<F, ID>> for LogupWitness<F, ID>"],["impl PartialEq<LookupTableIDs> for LookupTableIDs"],["impl PartialEq<Column> for Column"],["impl PartialEq<FFAColumn> for FFAColumn"],["impl PartialEq<SerializationColumn> for SerializationColumn"],["impl<const N_WIT: usize, T: PartialEq> PartialEq<Witness<N_WIT, T>> for Witness<N_WIT, T>"]], diff --git a/rustdoc/implementors/core/fmt/trait.Debug.js b/rustdoc/implementors/core/fmt/trait.Debug.js index 73aab3f1e6..9828c574e2 100644 --- a/rustdoc/implementors/core/fmt/trait.Debug.js +++ b/rustdoc/implementors/core/fmt/trait.Debug.js @@ -1,7 +1,7 @@ (function() {var implementors = { "arrabiata":[["impl Debug for Column"],["impl Debug for Gadget"],["impl Debug for Instruction"],["impl Debug for GadgetIter"],["impl<Fp: Debug + Field> Debug for Env<Fp>"],["impl Debug for ChallengeTerm"]], "export_test_vectors":[["impl Debug for TestVector"],["impl Debug for Mode"],["impl Debug for ParamType"],["impl Debug for TestVectors"]], -"folding":[["impl<'a, F: Debug> Debug for EvalLeaf<'a, F>"],["impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for RelaxedWitness<G, W>where\n G::ScalarField: Debug,"],["impl<C> Debug for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Debug for FoldingExp<C>where\n C: FoldingConfig,"],["impl Debug for Degree"],["impl<C> Debug for Term<C>where\n C: Debug + FoldingConfig,"],["impl<F: Debug + Field> Debug for Alphas<F>"],["impl<C> Debug for ExpExtension<C>where\n C: FoldingConfig,"],["impl Debug for Sign"],["impl<C> Debug for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"],["impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for ExtendedWitness<G, W>where\n G::ScalarField: Debug,"],["impl Debug for Column"],["impl<C> Debug for IntegratedFoldingExpr<C>where\n C: FoldingConfig,"],["impl<C> Debug for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> Debug for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"]], +"folding":[["impl<'a, F: Debug> Debug for EvalLeaf<'a, F>"],["impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for RelaxedWitness<G, W>where\n G::ScalarField: Debug,"],["impl<C> Debug for ExtendedFoldingColumn<C>where\n C: FoldingConfig,"],["impl<C> Debug for FoldingExp<C>where\n C: FoldingConfig,"],["impl Debug for Degree"],["impl<C> Debug for Term<C>where\n C: Debug + FoldingConfig,"],["impl<F: Debug + Field> Debug for Alphas<F>"],["impl<C> Debug for ExpExtension<C>where\n C: FoldingConfig,"],["impl Debug for Sign"],["impl<C> Debug for FoldingCompatibleExprInner<C>where\n C: FoldingConfig,"],["impl<G: Debug + CommitmentCurve, W: Debug + Witness<G>> Debug for ExtendedWitness<G, W>where\n G::ScalarField: Debug,"],["impl Debug for Column"],["impl<C> Debug for IntegratedFoldingExpr<C>where\n C: FoldingConfig,"],["impl<C> Debug for FoldingCompatibleExpr<C>where\n C: FoldingConfig,"],["impl<G, Col, Chall, I, W, Srs, Sel, Str> Debug for StandardConfig<G, Col, Chall, I, W, Srs, Sel, Str>"]], "ivc":[["impl Debug for PlonkishChallenge"],["impl Debug for PlonkishChallengeIter"],["impl<Ff: Debug> Debug for IVCLookupTable<Ff>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Debug for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> Debug for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl<const N_COL: usize, const N_FSEL: usize, F: Debug + Field, Evals: Debug> Debug for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"],["impl Debug for IVCColumn"],["impl<const N_WIT: usize, G: Debug + KimchiCurve> Debug for ProofCommitments<N_WIT, G>"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Debug + KimchiCurve, OpeningProof: Debug + OpenProof<G>> Debug for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where\n G::ScalarField: Debug,"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> Debug for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl Debug for ProverError"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Debug> Debug for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>"],["impl<G: Debug + CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> Debug for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>where\n G::ScalarField: Debug,"]], "kimchi":[["impl<F: Debug + PrimeField> Debug for CircuitGate<F>"],["impl<G: Debug + CommitmentCurve> Debug for LookupVerifierIndex<G>"],["impl Debug for Column"],["impl<G: Debug + KimchiCurve, OpeningProof: Debug + OpenProof<G>> Debug for ProverIndex<G, OpeningProof>where\n G::ScalarField: Debug,\n OpeningProof::SRS: Debug,\n G::BaseField: Debug,"],["impl Debug for RuntimeTableSpec"],["impl<G: Debug + KimchiCurve, OpeningProof: Debug + OpenProof<G>> Debug for VerifierIndex<G, OpeningProof>where\n G::ScalarField: Debug,\n OpeningProof::SRS: Debug,"],["impl Debug for GateError"],["impl Debug for FFOps"],["impl Debug for FeatureFlags"],["impl<F: Debug + FftField> Debug for LookupConstraintSystem<F>"],["impl Debug for LookupFeatures"],["impl<F: Debug + FftField> Debug for EvaluationDomains<F>"],["impl<Evals: Debug> Debug for ProofEvaluations<Evals>"],["impl<E: Debug, Column: Debug> Debug for Linearization<E, Column>"],["impl Debug for LookupInfo"],["impl Debug for Wire"],["impl<T: Debug> Debug for DisjointSet<T>"],["impl Debug for SnarkyRuntimeError"],["impl Debug for LookupError"],["impl<F: Debug, ChallengeTerm: Debug> Debug for ConstantExprInner<F, ChallengeTerm>"],["impl<G: Debug + AffineRepr> Debug for LookupCommitments<G>"],["impl Debug for RotMode"],["impl<F: Debug> Debug for ConstantTerm<F>"],["impl Debug for LocalPosition"],["impl<Var: Debug> Debug for EcAddCompleteInput<Var>"],["impl<G: Debug + AffineRepr> Debug for ProverCommitments<G>"],["impl Debug for ArgumentType"],["impl Debug for VerifierIndexError"],["impl Debug for ProverError"],["impl<F: Debug + PrimeField> Debug for EvaluatedColumnCoefficients<F>"],["impl<F: Debug, Column: Debug, ChallengeTerm: Debug> Debug for PolishToken<F, Column, ChallengeTerm>"],["impl<G: Debug> Debug for TestSRS<G>"],["impl Debug for GateLookupTable"],["impl<F: Debug> Debug for ForeignElement<F>"],["impl<Var: Debug> Debug for PoseidonInput<Var>"],["impl<F: Debug + Field> Debug for Constants<F>"],["impl Debug for VerifyError"],["impl<Field> Debug for SnarkyConstraintSystem<Field>where\n Field: PrimeField + Debug,"],["impl<F: Debug> Debug for Alphas<F>"],["impl Debug for LookupTableID"],["impl<F: Debug + PrimeField> Debug for Constraint<F>"],["impl Debug for LookupPatterns"],["impl Debug for Domain"],["impl<I, T> Debug for MustConsumeIterator<I, T>where\n I: Iterator<Item = T> + Debug,\n T: Display + Debug,"],["impl Debug for GateLookupTables"],["impl Debug for BerkeleyChallengeTerm"],["impl<F: Debug> Debug for RuntimeTableCfg<F>"],["impl<Column: Debug> Debug for Variable<Column>"],["impl Debug for SetupError"],["impl<F: Debug + Field> Debug for RandomOracles<F>"],["impl Debug for FeatureFlag"],["impl<F: Debug> Debug for LookupTable<F>"],["impl<F: Debug + PrimeField> Debug for Boolean<F>"],["impl Debug for LookupPatternIter"],["impl<Evals: Debug> Debug for PointEvaluations<Evals>"],["impl<F: Debug> Debug for Witness<F>"],["impl<F: Debug + FftField> Debug for DomainConstantEvaluations<F>"],["impl<F> Debug for RunState<F>where\n F: PrimeField + Debug,"],["impl<A: Debug> Debug for EndoscaleRound<A>"],["impl<F> Debug for FieldVar<F>where\n F: PrimeField + Debug,"],["impl Debug for CamlTraces"],["impl<A: Debug> Debug for EndoscaleScalarRound<A>"],["impl<C: Debug, Column: Debug> Debug for ExprInner<C, Column>"],["impl<F: Debug + PrimeField> Debug for ColumnEvaluations<F>"],["impl<F: Debug> Debug for LookupConfiguration<F>"],["impl Debug for RowOffset"],["impl Debug for GateType"],["impl<F: Debug + PrimeField> Debug for ConstraintSystem<F>"],["impl<G: Debug + AffineRepr, OpeningProof: Debug> Debug for ProverProof<G, OpeningProof>where\n G::ScalarField: Debug,"],["impl Debug for SnarkyCompilationError"],["impl<A: Debug> Debug for ScaleRound<A>"],["impl<SingleLookup: Debug, LookupTableID: Debug> Debug for JointLookup<SingleLookup, LookupTableID>"],["impl Debug for RealSnarkyError"],["impl<F: Debug> Debug for FullChallenge<F>"],["impl<F: Debug> Debug for RuntimeTable<F>"],["impl<T: Debug> Debug for LookupSelectors<T>"],["impl Debug for Traces"],["impl<Column: Debug> Debug for ExprError<Column>"],["impl<Var: Debug> Debug for BasicSnarkyConstraint<Var>"],["impl Debug for LookupPattern"],["impl<Var: Debug> Debug for EcEndoscaleInput<Var>"],["impl Debug for CacheId"],["impl<Var: Debug, Field: Debug> Debug for BasicInput<Var, Field>"],["impl<G> Debug for RecursionChallenge<G>where\n G: AffineRepr + Debug,\n G::ScalarField: Debug,"],["impl Debug for DomainCreationError"],["impl Debug for CircuitGateError"],["impl<T: Debug> Debug for Operations<T>"],["impl Debug for CurrOrNext"],["impl<Var: Debug, Field: Debug> Debug for KimchiConstraint<Var, Field>"],["impl Debug for SnarkyError"]], "kimchi_msm":[["impl Debug for FECColumnInter"],["impl Debug for LookupTableIter"],["impl<F: Debug, ID: Debug + LookupTableID> Debug for LookupTable<F, ID>"],["impl Debug for DummyLookupTable"],["impl Debug for LookupTable"],["impl<Ff: Debug> Debug for LookupTable<Ff>"],["impl<const N_WIT: usize, F: Debug + PrimeField, ID: Debug + LookupTableID> Debug for ProofInputs<N_WIT, F, ID>"],["impl<T: Debug> Debug for IdMPrism<T>"],["impl<const N_WIT: usize, T: Debug> Debug for Witness<N_WIT, T>"],["impl<Ff> Debug for LookupTableIter<Ff>"],["impl Debug for ProverError"],["impl<Pair: Debug + Pairing> Debug for TestPairingSRS<Pair>where\n Pair::G1Affine: Debug,\n Pair::G2Affine: Debug,"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: Debug + KimchiCurve, OpeningProof: Debug + OpenProof<G>, ID: Debug + LookupTableID> Debug for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof, ID>where\n G::ScalarField: Debug,"],["impl Debug for LookupTable"],["impl Debug for Column"],["impl Debug for LookupTableIter"],["impl Debug for FECColumnOutput"],["impl Debug for SerializationColumn"],["impl Debug for FFAColumn"],["impl Debug for FECColumn"],["impl Debug for LookupTableIDs"],["impl Debug for FECColumnInput"],["impl<Ff> Debug for LookupTableIter<Ff>"],["impl<F: Debug, ID: Debug + LookupTableID> Debug for Logup<F, ID>"],["impl Debug for TestColumn"],["impl<T: Debug, ID: Debug> Debug for LookupProof<T, ID>"],["impl<const N_WIT: usize, G: Debug + KimchiCurve, ID: Debug + LookupTableID> Debug for ProofCommitments<N_WIT, G, ID>"],["impl<Ff: Debug> Debug for LookupTable<Ff>"],["impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Debug, ID: Debug + LookupTableID> Debug for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F, ID>"],["impl<F: Debug, ID: Debug + LookupTableID> Debug for LogupWitness<F, ID>"]], diff --git a/rustdoc/implementors/core/marker/trait.StructuralEq.js b/rustdoc/implementors/core/marker/trait.StructuralEq.js index 7e99f7d8a2..9bd15760a8 100644 --- a/rustdoc/implementors/core/marker/trait.StructuralEq.js +++ b/rustdoc/implementors/core/marker/trait.StructuralEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "arrabiata":[["impl StructuralEq for ChallengeTerm"]], -"folding":[["impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for ExtendedInstance<G, I>"],["impl StructuralEq for Degree"],["impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for RelaxedInstance<G, I>"],["impl StructuralEq for Column"],["impl StructuralEq for Sign"]], +"folding":[["impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for ExtendedInstance<G, I>"],["impl StructuralEq for Degree"],["impl<G: CommitmentCurve, I: Instance<G>> StructuralEq for RelaxedInstance<G, I>"],["impl StructuralEq for Column"],["impl StructuralEq for Sign"]], "ivc":[["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> StructuralEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> StructuralEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl<G: CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>"],["impl StructuralEq for IVCColumn"],["impl StructuralEq for PlonkishChallenge"],["impl<const N_COL: usize, const N_FSEL: usize, F: Field, Evals> StructuralEq for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"],["impl<Ff> StructuralEq for IVCLookupTable<Ff>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> StructuralEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"]], "kimchi":[["impl StructuralEq for Wire"],["impl StructuralEq for LookupPattern"],["impl StructuralEq for Column"],["impl StructuralEq for CircuitGateError"],["impl<F> StructuralEq for ConstantTerm<F>"],["impl StructuralEq for FeatureFlag"],["impl<T> StructuralEq for Operations<T>"],["impl StructuralEq for ArgumentType"],["impl StructuralEq for RowOffset"],["impl StructuralEq for BerkeleyChallengeTerm"],["impl StructuralEq for LookupPatterns"],["impl StructuralEq for LookupFeatures"],["impl StructuralEq for FFOps"],["impl StructuralEq for RotMode"],["impl StructuralEq for StoredSRSType"],["impl StructuralEq for GateType"],["impl StructuralEq for GateLookupTable"],["impl<F, Column, ChallengeTerm> StructuralEq for PolishToken<F, Column, ChallengeTerm>"],["impl<G> StructuralEq for TestSRS<G>"],["impl StructuralEq for CacheId"],["impl<Column> StructuralEq for Variable<Column>"],["impl StructuralEq for GateLookupTables"],["impl StructuralEq for CurrOrNext"]], "kimchi_msm":[["impl<Ff> StructuralEq for LookupTable<Ff>"],["impl StructuralEq for LookupTable"],["impl StructuralEq for FECColumnInter"],["impl StructuralEq for Column"],["impl StructuralEq for SerializationColumn"],["impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>"],["impl StructuralEq for FECColumnInput"],["impl StructuralEq for FECColumn"],["impl StructuralEq for DummyLookupTable"],["impl<const N_WIT: usize, F: PrimeField, ID: LookupTableID> StructuralEq for ProofInputs<N_WIT, F, ID>"],["impl StructuralEq for FFAColumn"],["impl<Pair: Pairing> StructuralEq for TestPairingSRS<Pair>"],["impl StructuralEq for LookupTableIDs"],["impl StructuralEq for FECColumnOutput"],["impl<F, ID: LookupTableID> StructuralEq for Logup<F, ID>"],["impl StructuralEq for LookupTable"],["impl<Ff> StructuralEq for LookupTable<Ff>"],["impl StructuralEq for TestColumn"],["impl<F, ID: LookupTableID> StructuralEq for LogupWitness<F, ID>"]], diff --git a/rustdoc/implementors/core/marker/trait.StructuralPartialEq.js b/rustdoc/implementors/core/marker/trait.StructuralPartialEq.js index c90c9cbb06..7bd64d8a87 100644 --- a/rustdoc/implementors/core/marker/trait.StructuralPartialEq.js +++ b/rustdoc/implementors/core/marker/trait.StructuralPartialEq.js @@ -1,6 +1,6 @@ (function() {var implementors = { "arrabiata":[["impl StructuralPartialEq for Column"],["impl StructuralPartialEq for ChallengeTerm"],["impl StructuralPartialEq for Gadget"]], -"folding":[["impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for ExtendedInstance<G, I>"],["impl StructuralPartialEq for Sign"],["impl StructuralPartialEq for Degree"],["impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for RelaxedInstance<G, I>"],["impl StructuralPartialEq for Column"]], +"folding":[["impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for ExtendedInstance<G, I>"],["impl StructuralPartialEq for Sign"],["impl StructuralPartialEq for Degree"],["impl<G: CommitmentCurve, I: Instance<G>> StructuralPartialEq for RelaxedInstance<G, I>"],["impl StructuralPartialEq for Column"]], "ivc":[["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> StructuralPartialEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"],["impl StructuralPartialEq for IVCColumn"],["impl StructuralPartialEq for PlonkishChallenge"],["impl<const N_COL: usize, const N_FSEL: usize, F: Field, Evals> StructuralPartialEq for PlonkishWitnessGeneric<N_COL, N_FSEL, F, Evals>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize, const NB_PARTIAL_ROUND: usize> StructuralPartialEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND, NB_PARTIAL_ROUND>"],["impl<G: CommitmentCurve, const N_COL: usize, const N_CHALS: usize, const N_ALPHAS: usize> StructuralPartialEq for PlonkishInstance<G, N_COL, N_CHALS, N_ALPHAS>"],["impl<Ff> StructuralPartialEq for IVCLookupTable<Ff>"],["impl<const STATE_SIZE: usize, const NB_FULL_ROUND: usize> StructuralPartialEq for PoseidonColumn<STATE_SIZE, NB_FULL_ROUND>"]], "kimchi":[["impl StructuralPartialEq for RowOffset"],["impl<C, Column> StructuralPartialEq for ExprInner<C, Column>"],["impl StructuralPartialEq for CacheId"],["impl StructuralPartialEq for LookupPattern"],["impl StructuralPartialEq for StoredSRSType"],["impl StructuralPartialEq for Column"],["impl StructuralPartialEq for GateLookupTables"],["impl StructuralPartialEq for FeatureFlag"],["impl StructuralPartialEq for GateLookupTable"],["impl StructuralPartialEq for ArgumentType"],["impl StructuralPartialEq for Domain"],["impl StructuralPartialEq for CurrOrNext"],["impl StructuralPartialEq for CircuitGateError"],["impl<T> StructuralPartialEq for Operations<T>"],["impl<G> StructuralPartialEq for TestSRS<G>"],["impl StructuralPartialEq for FFOps"],["impl StructuralPartialEq for GateType"],["impl<F> StructuralPartialEq for ConstantTerm<F>"],["impl<Column> StructuralPartialEq for Variable<Column>"],["impl StructuralPartialEq for Wire"],["impl StructuralPartialEq for LookupFeatures"],["impl StructuralPartialEq for LookupPatterns"],["impl<F, Column, ChallengeTerm> StructuralPartialEq for PolishToken<F, Column, ChallengeTerm>"],["impl StructuralPartialEq for RotMode"],["impl<F, ChallengeTerm> StructuralPartialEq for ConstantExprInner<F, ChallengeTerm>"],["impl StructuralPartialEq for BerkeleyChallengeTerm"]], "kimchi_msm":[["impl<F, ID: LookupTableID> StructuralPartialEq for Logup<F, ID>"],["impl StructuralPartialEq for FECColumnInter"],["impl<Ff> StructuralPartialEq for LookupTable<Ff>"],["impl StructuralPartialEq for LookupTable"],["impl StructuralPartialEq for SerializationColumn"],["impl StructuralPartialEq for LookupTableIDs"],["impl StructuralPartialEq for TestColumn"],["impl StructuralPartialEq for FECColumnInput"],["impl<F, ID: LookupTableID> StructuralPartialEq for LogupWitness<F, ID>"],["impl StructuralPartialEq for FECColumn"],["impl StructuralPartialEq for FECColumnOutput"],["impl<Pair: Pairing> StructuralPartialEq for TestPairingSRS<Pair>"],["impl StructuralPartialEq for Column"],["impl StructuralPartialEq for DummyLookupTable"],["impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>"],["impl StructuralPartialEq for FFAColumn"],["impl<Ff> StructuralPartialEq for LookupTable<Ff>"],["impl StructuralPartialEq for LookupTable"],["impl<const N_WIT: usize, F: PrimeField, ID: LookupTableID> StructuralPartialEq for ProofInputs<N_WIT, F, ID>"]], diff --git a/rustdoc/implementors/kimchi/circuits/expr/trait.AlphaChallengeTerm.js b/rustdoc/implementors/kimchi/circuits/expr/trait.AlphaChallengeTerm.js index 9a4af45c06..a6830f20a7 100644 --- a/rustdoc/implementors/kimchi/circuits/expr/trait.AlphaChallengeTerm.js +++ b/rustdoc/implementors/kimchi/circuits/expr/trait.AlphaChallengeTerm.js @@ -1,4 +1,4 @@ (function() {var implementors = { -"arrabiata":[["impl<'a> AlphaChallengeTerm<'a> for ChallengeTerm"]], +"arrabiata":[["impl<'a> AlphaChallengeTerm<'a> for ChallengeTerm"]], "kimchi":[] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/implementors/kimchi/circuits/expr/trait.FormattedOutput.js b/rustdoc/implementors/kimchi/circuits/expr/trait.FormattedOutput.js index 6c38faf3d8..4f3d187179 100644 --- a/rustdoc/implementors/kimchi/circuits/expr/trait.FormattedOutput.js +++ b/rustdoc/implementors/kimchi/circuits/expr/trait.FormattedOutput.js @@ -1,5 +1,5 @@ (function() {var implementors = { -"arrabiata":[["impl FormattedOutput for Column"]], +"arrabiata":[["impl FormattedOutput for Column"]], "kimchi":[], "kimchi_msm":[["impl FormattedOutput for Column"]] };if (window.register_implementors) {window.register_implementors(implementors);} else {window.pending_implementors = implementors;}})() \ No newline at end of file diff --git a/rustdoc/index.html b/rustdoc/index.html index 23bdc52640..5bef40e864 100644 --- a/rustdoc/index.html +++ b/rustdoc/index.html @@ -1 +1 @@ -Index of crates
    \ No newline at end of file +Index of crates
    \ No newline at end of file diff --git a/rustdoc/search-index.js b/rustdoc/search-index.js index 6c4efd6fd6..fce9cc73fd 100644 --- a/rustdoc/search-index.js +++ b/rustdoc/search-index.js @@ -1,5 +1,5 @@ var searchIndex = JSON.parse('{\ -"arrabiata":{"doc":"","t":"RRRRRRRRRRRRRAAAAAAAAAAANNNNNEDEGNNEDNNNNNNNNNNMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDMLLLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLMLLLLLLLLLLLLLLLLNNNNEINNNNQNENQKKKKKKKKLLLLLLKKLKKLLLLKLLKKLLLKKLLLLKKKKKKKKKKFFKKKLLLLLLLLLKKKFFDLLLLLLLLLLLLFDRMLLLLLLLLLLLMLLLLLLMMMLLMMLLLLLLLLLMMMMLLLLMMLLLMLMMMMMLLLLLLLLMMMLMMMMLLLLMLLMLM","n":["BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK","BIT_DECOMPOSITION_NUMBER_OF_CHUNKS","IVC_CIRCUIT_SIZE","MAXIMUM_FIELD_SIZE_IN_BITS","MAX_DEGREE","MIN_SRS_LOG2_SIZE","NUMBER_OF_COLUMNS","NUMBER_OF_PUBLIC_INPUTS","NUMBER_OF_SELECTORS","NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO","POSEIDON_ALPHA","POSEIDON_ROUNDS_FULL","POSEIDON_STATE_SIZE","column_env","columns","constraints","interpreter","logup","poseidon_3_60_0_5_5_fp","poseidon_3_60_0_5_5_fq","proof","prover","verifier","witness","Alpha","App","Beta","BitDecomposition","BitDecompositionFrom16Bits","ChallengeTerm","Challenges","Column","E","EllipticCurveAddition","EllipticCurveScaling","Gadget","GadgetIter","Gamma","HomogenousChallenge","PermutationArgument","Poseidon","PoseidonNextRow","PublicInput","R","Selector","SixteenBitsDecomposition","X","alpha","beta","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","gamma","homogenous_challenge","index","init","init","init","init","init","into","into","into","into","into","into_iter","is_alpha","is_alpha","iter","latex","latex","len","next","next_back","nth","ocaml","ocaml","par_bridge","r","serialize","size_hint","text","text","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Env","a","activate_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow_mut","clone","clone_into","coin_folding_combiner","compute_lambda","constant","constrain_boolean","constraints","deref","deref_mut","double_ec_point","drop","fetch_input","fetch_value_to_absorb","fmt","from","get_all_constraints","get_all_constraints_for_ivc","get_poseidon_mds_matrix","get_poseidon_round_constant","idx_var","idx_var_next_row","idx_var_pi","init","into","inverse","is_same_ec_point","load_poseidon_state","load_temporary_accumulators","new","one","poseidon_mds","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","save_poseidon_state","save_temporary_accumulators","square","to_owned","try_from","try_into","type_id","vzip","write_column","write_public_input","zero","BitDecomposition","BitDecompositionFrom16Bits","EllipticCurveAddition","EllipticCurveScaling","Instruction","InterpreterEnv","Left","NoOp","Poseidon","PoseidonNextRow","Position","Right","Side","SixteenBitsDecomposition","Variable","activate_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","coin_folding_combiner","compute_lambda","compute_x5","constant","constrain_boolean","deref","deref","deref_mut","deref_mut","double_ec_point","drop","drop","fetch_input","fetch_value_to_absorb","fmt","from","from","get_poseidon_mds_matrix","get_poseidon_round_constant","init","init","into","into","inverse","is_same_ec_point","load_poseidon_state","load_temporary_accumulators","one","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","run_app","run_ivc","save_poseidon_state","save_temporary_accumulators","square","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_column","write_public_input","zero","static_params","static_params","Proof","borrow","borrow_mut","deref","deref_mut","drop","from","init","into","try_from","try_into","type_id","vzip","prove","Env","IVC_STARTING_INSTRUCTION","_marker","accumulate_commitment_blinder","activate_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow_mut","challenges","coin_folding_combiner","compute_and_update_previous_commitments","compute_lambda","compute_output","constant","constrain_boolean","current_instruction","current_iteration","current_row","deref","deref_mut","domain_fp","domain_fq","double_ec_point","drop","fetch_input","fetch_instruction","fetch_next_instruction","fetch_value_to_absorb","from","get_poseidon_mds_matrix","get_poseidon_round_constant","idx_values_to_absorb","idx_var","idx_var_next_row","idx_var_pi","init","into","inverse","is_same_ec_point","ivc_accumulator_e1","ivc_accumulator_e2","load_poseidon_state","load_temporary_accumulators","new","next_state","one","previous_commitments_e1","previous_commitments_e2","previous_hash","public_state","r","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","reset_for_next_iteration","save_poseidon_state","save_temporary_accumulators","selectors","sponge_e1","sponge_e2","square","srs_e1","srs_e2","state","temporary_accumulators","try_from","try_into","type_id","vzip","witness","write_column","write_public_input","z0","zero","zi"],"q":[[0,"arrabiata"],[24,"arrabiata::columns"],[154,"arrabiata::constraints"],[213,"arrabiata::interpreter"],[292,"arrabiata::poseidon_3_60_0_5_5_fp"],[293,"arrabiata::poseidon_3_60_0_5_5_fq"],[294,"arrabiata::proof"],[307,"arrabiata::prover"],[308,"arrabiata::witness"]],"d":["The number of bits per chunk in the bit decomposition. It …","","The number of rows the IVC circuit requires.","The maximum number of bits the fields can be. It is …","The maximum degree of the polynomial that can be …","The minimum SRS size required to use Nova, in base 2. …","The maximum number of columns that can be used in the …","The maximum number of public inputs the circuit can use …","The number of selectors used in the circuit.","Define the number of values we must absorb when …","The low-exponentiation value used by the Poseidon hash …","The number of full rounds in the Poseidon hash function.","The number of elements in the state of the Poseidon hash …","This module will be used by the prover to evaluate at a …","","","This module contains the implementation of the IVC scheme …","This file will implement a logup argument to allow users …","","","","A prover for the folding/accumulation scheme","A verifier for the folding/accumulation scheme","","Challenge used to aggregate the constraints","","Both challenges used in the permutation argument","This gadget decomposes a 255 bits value into bits using 17 …","Decompose a 16bits chunk into individual bits.","","","","","","","This enum represents the different gadgets that can be …","An iterator over the variants of Gadget","","Challenge to homogenize the constraints","","This gadget implement the Poseidon hash instance described …","This gadget implement the Poseidon hash instance described …","","Random coin used to aggregate witnesses while folding","","Decompose a 255 bits scalar into 16 chunks of 16 bits.","","Challenge used to aggregate the constraints","Both challenges used in the permutation argument","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Challenge to homogenize the constraints","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Random coin used to aggregate witnesses while folding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The parameter a is the coefficients of the elliptic curve …","","","","","","","","","","","","","","","","","","","","Double the elliptic curve point given by the affine …","","","","","Returns the argument unchanged.","Get all the constraints for the IVC circuit and the …","Get all the constraints for the IVC circuit, only.","","","","","","","Calls U::from(self).","Inverse of a variable","","","","","","","","","","","","","","","","","","","","Return the corresponding expression regarding the selected …","Return the corresponding expression regarding the selected …","","This gadget decomposes a 255 bits value into bits using 17 …","Decompose a 16bits chunk into individual bits. The …","","","A list of instruction/gadget implemented in the …","An abstract interpreter that provides some functionality …","","","This gadget implement the Poseidon hash instance described …","This gadget implement the Poseidon hash instance described …","","","Define the side of the temporary accumulator. When …","Decompose a 255 bits scalar into 16 chunks of 16 bits.","The variable should be seen as a certain object that can …","Activate the gadget for the row.","","Allocate a new variable in the circuit for the current row","Allocate a new variable in the circuit for the next row","","Assert that the two variables are equal","Assert that the variable is zero","Flagged as unsafe as it does require an additional range …","","","","","","","Return the folding combiner","Compute the coefficient λ used in the elliptic curve …","Compute the x^5 of the given variable","","","","","","","Double the elliptic curve point given by the affine …","","","Fetch an input of the application","Load the public value to absorb at the current step. The …","","Returns the argument unchanged.","Returns the argument unchanged.","Return the requested MDS matrix coefficient","","","","Calls U::from(self).","Calls U::from(self).","Inverse of a variable","Check if the points given by (x1, y1) and (x2, y2) are …","Load the state of the Poseidon hash function into the …","Load the affine coordinates of the elliptic curve point …","Build the constant one","Check if the variable is between [0, 2^16 - 1]","Read the i-th bit of the folding combiner, in little …","Return the corresponding variable at the given position","Get the 16bits chunks of the folding combiner, and save it …","Reset the environment to build the next row","Run the application","Run an iteration of the IVC scheme","Save the state of poseidon into the environment","Save temporary accumulators into the environment","Compute the square a field element","","","","","","","","","","Set the value of the variable at the given position for …","Write the corresponding public inputs.","Build the constant zero","","","FIXME: a proof for the Nova recursive SNARK","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","Generate a proof for the IVC circuit. All the information …","An environment that can be shared between IVC instances.","","","The blinder used to commit, to avoid committing to the …","Activate the gadget for the current row","","","","","","","Flagged as unsafe as it does require an additional range …","","","While folding, we must keep track of the challenges the …","FIXME: check if we need to pick the left or right sponge","Compute the commitments to the current witness, and update …","","Compute the output of the application on the previous …","","","Keep the current executed instruction This can be used to …","The current iteration of the IVC","Current processing row. Used to build the witness.","","","Domain for Fp","Domain for Fq","Double the elliptic curve point given by the affine …","","","","Describe the control-flow for the IVC circuit.","","Returns the argument unchanged.","","","Index of the values to absorb in the sponge","The index of the latest allocated variable in the circuit. …","","The index of the latest allocated public inputs in the …","","Calls U::from(self).","Inverse of a variable","","","","","","","Next row in the execution trace. It is useful when we deal …","","Commitments to the previous instances","","A previous hash, encoded in 2 chunks of 128 bits.","Contain the public state","The coin folding combiner will be used to generate the …","","","","","Reset the environment to build the next row","Reset the environment to build the next iteration","","","Selectors to activate the gadgets. The size of the outer …","The sponges will be used to simulate the verifier …","","","SRS for the first curve","SRS for the second curve","State of the current row in the execution trace","Temporary registers for elliptic curve points in affine …","","","","","The witness of the current instance of the circuit. The …","","","Initial input","","Current input"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,4,1,1,0,0,0,0,1,1,0,0,4,4,1,1,1,3,4,3,1,3,12,12,12,1,2,3,4,12,1,2,3,4,1,2,3,4,1,2,3,4,12,1,2,3,4,12,1,2,3,4,4,12,1,2,3,4,1,3,4,4,4,1,2,3,4,4,12,1,2,3,4,12,12,12,12,1,2,3,4,12,1,2,3,4,2,3,4,1,3,4,2,2,2,2,3,4,2,12,4,2,3,4,1,2,3,4,4,12,1,2,3,4,12,1,2,3,4,12,1,2,3,4,12,1,2,3,4,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,31,31,31,31,0,0,29,31,31,31,32,29,0,31,32,32,32,32,32,32,32,32,32,29,31,29,31,31,31,32,32,32,32,32,29,31,29,31,32,29,31,32,32,31,29,31,32,32,29,31,29,31,32,32,32,32,32,32,32,32,32,32,0,0,32,32,32,31,29,31,29,31,29,31,29,31,32,32,32,0,0,0,38,38,38,38,38,38,38,38,38,38,38,38,0,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[4,4],[[]],[[]],[[]],[[]],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[6,[[7,[4]]]],[5],[5],[5],[5],[5],[[1,1],8],[[3,3],8],[[4,4],8],[[],8],[[],8],[[1,9],10],[[2,9],10],[[3,9],10],[[4,9],10],[[4,9],10],[[]],[[]],[[]],[[]],[[]],0,0,[[[12,[11]],4]],[[],5],[[],5],[[],5],[[],5],[[],5],[[]],[[]],[[]],[[]],[[]],[[]],[3,8],[[],8],[[],2],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[2,5],[2,17],[2,17],[[2,5],17],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[[],18],0,[[4,19],7],[2],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[[]],[[]],[[]],[[]],[[],15],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],20],[[],20],[[],20],[[],20],[[],20],[[]],[[]],[[]],[[]],[[]],0,0,[[[22,[21]],1]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],23,23]],[[]],[[]],[[[22,[[0,[24,11]]]]],[[22,[[0,[24,11]]]]]],[[]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],25]],[[[22,[21]]]],0,[5],[5],[[[22,[21]]]],[5],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[[0,[26,11]]]],9],10],[[]],[[[22,[21]]],[[28,[[27,[21]]]]]],[[[22,[21]]],[[28,[[27,[21]]]]]],[[[22,[21]],5,5]],[[[22,[21]],5,5]],0,0,0,[[],5],[[]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[21]],29]],[[[28,[[28,[21]]]],25],[[22,[21]]]],[[[22,[21]]]],0,[[[22,[21]]]],[[[22,[21]],30]],[[[22,[21]]]],[[[22,[21]],23]],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[21]],29]],[[[22,[21]]]],[[]],[[],7],[[],7],[[],20],[[]],[[[22,[21]]]],[[[22,[21]],25]],[[[22,[21]]]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[1],[[]],[[]],[[]],[[]],[[]],[[]],[[23,23]],[[]],[[]],[[]],[[]],[31,31],[[]],[[]],[[]],[[]],[25],[[]],[5],[5],[5],[5],[[]],[5],[5],[[]],[5],[[31,9],10],[[]],[[]],[[5,5]],[[5,5]],[[],5],[[],5],[[]],[[]],[[]],[[]],[5],[29],[[]],[[]],[30],[[]],[23],[[]],[32],[[32,31]],[5],[29],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],20],[[],20],[[]],[[]],[[]],[25],[[]],[[],[[34,[33]]]],[[],[[34,[35]]]],0,[[]],[[]],[5],[5],[5],[[]],[[],5],[[]],[[],7],[[],7],[[],20],[[]],[[[37,[21,21,36,36]]],[[7,[38,15]]]],0,0,0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],1]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],23,23]],[[]],[[]],0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],25]],[[[37,[21,21,39,39]]]],0,0,0,[5],[5],0,0,[[[37,[21,21,39,39]]]],[5],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]],31],[[[37,[21,21,39,39]]],31],[[[37,[21,21,39,39]],5]],[[]],[[[37,[21,21,39,39]],5,5]],[[[37,[21,21,39,39]],5,5]],0,0,0,0,[[],5],[[]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],0,0,[[[37,[21,21,39,39]],5]],[[[37,[21,21,39,39]],29]],[[5,25,[40,[25]],[40,[25]]],[[37,[21,21,39,39]]]],0,[[[37,[21,21,39,39]]]],0,0,0,0,0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],30]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],23]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],5]],[[[37,[21,21,39,39]],29]],0,0,0,[[[37,[21,21,39,39]]]],0,0,0,0,[[],7],[[],7],[[],20],[[]],0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],25]],0,[[[37,[21,21,39,39]]]],0],"c":[],"p":[[4,"Gadget"],[3,"GadgetIter"],[4,"Column"],[4,"ChallengeTerm"],[15,"usize"],[8,"Deserializer"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Field"],[3,"Challenges"],[3,"CacheId"],[3,"HashMap"],[3,"String"],[3,"RandomState"],[4,"Option"],[3,"IterBridge"],[8,"Serializer"],[3,"TypeId"],[8,"PrimeField"],[3,"Env"],[15,"u32"],[8,"Clone"],[3,"BigInt"],[8,"Debug"],[6,"E"],[3,"Vec"],[4,"Side"],[15,"u64"],[4,"Instruction"],[8,"InterpreterEnv"],[6,"Fp"],[3,"ArithmeticSpongeParams"],[6,"Fq"],[8,"AffineRepr"],[3,"Env"],[3,"Proof"],[8,"CommitmentCurve"],[15,"array"]]},\ +"arrabiata":{"doc":"","t":"RRRRRRRRRRRAAAAAAAAAAANNNEDEGNNEDNNNNNNNMMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMLLLLLLLLLLLLLLLLLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDMLMLLLLLLLLLLLLLLLMLLLLLLLLLLLLMMMLLLLLLLLMLLLLLLLLLLLLLLLLNNEINNNQNEQKKKKKKKKLLLLLLKKLKKLLLLKLLKKLLLKKLLLLKKKKKKKKKKFFKKKLLLLLLLLLKKKFFDLLLLLLLLLLLLFDRMLLLLLLLLLLLMLLLLLLMMMLLMMLLLLLLLLLMMMMLLLLMMLLLMLMMMMMLLLLLLLLMMMLMMMMLLLLMLLMLM","n":["IVC_CIRCUIT_SIZE","MAXIMUM_FIELD_SIZE_IN_BITS","MAX_DEGREE","MIN_SRS_LOG2_SIZE","NUMBER_OF_COLUMNS","NUMBER_OF_PUBLIC_INPUTS","NUMBER_OF_SELECTORS","NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO","POSEIDON_ALPHA","POSEIDON_ROUNDS_FULL","POSEIDON_STATE_SIZE","column_env","columns","constraints","interpreter","logup","poseidon_3_60_0_5_5_fp","poseidon_3_60_0_5_5_fq","proof","prover","verifier","witness","Alpha","App","Beta","ChallengeTerm","Challenges","Column","E","EllipticCurveAddition","EllipticCurveScaling","Gadget","GadgetIter","Gamma","HomogenousChallenge","Poseidon","PublicInput","R","Selector","X","alpha","beta","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deserialize","drop","drop","drop","drop","drop","eq","eq","eq","equivalent","equivalent","fmt","fmt","fmt","fmt","fmt","from","from","from","from","from","gamma","homogenous_challenge","index","init","init","init","init","init","into","into","into","into","into","into_iter","is_alpha","is_alpha","iter","latex","latex","len","next","next_back","nth","ocaml","ocaml","par_bridge","r","serialize","size_hint","text","text","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","Env","a","activate_gadget","activated_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow_mut","clone","clone_into","coin_folding_combiner","compute_lambda","constant","constrain_boolean","constraints","deref","deref_mut","double_ec_point","drop","fetch_input","fetch_value_to_absorb","fmt","from","get_all_constraints","get_all_constraints_for_ivc","get_poseidon_mds_matrix","get_poseidon_round_constant","idx_var","idx_var_next_row","idx_var_pi","init","into","inverse","is_same_ec_point","load_poseidon_state","load_temporary_accumulators","new","one","poseidon_mds","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","save_poseidon_state","save_temporary_accumulators","square","to_owned","try_from","try_into","type_id","vzip","write_column","write_public_input","zero","EllipticCurveAddition","EllipticCurveScaling","Instruction","InterpreterEnv","Left","NoOp","Poseidon","Position","Right","Side","Variable","activate_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow","borrow_mut","borrow_mut","clone","clone_into","coin_folding_combiner","compute_lambda","compute_x5","constant","constrain_boolean","deref","deref","deref_mut","deref_mut","double_ec_point","drop","drop","fetch_input","fetch_value_to_absorb","fmt","from","from","get_poseidon_mds_matrix","get_poseidon_round_constant","init","init","into","into","inverse","is_same_ec_point","load_poseidon_state","load_temporary_accumulators","one","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","run_app","run_ivc","save_poseidon_state","save_temporary_accumulators","square","to_owned","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","write_column","write_public_input","zero","static_params","static_params","Proof","borrow","borrow_mut","deref","deref_mut","drop","from","init","into","try_from","try_into","type_id","vzip","prove","Env","IVC_STARTING_INSTRUCTION","_marker","accumulate_commitment_blinder","activate_gadget","add_constraint","allocate","allocate_next_row","allocate_public_input","assert_equal","assert_zero","bitmask_be","borrow","borrow_mut","challenges","coin_folding_combiner","compute_and_update_previous_commitments","compute_lambda","compute_output","constant","constrain_boolean","current_instruction","current_iteration","current_row","deref","deref_mut","domain_fp","domain_fq","double_ec_point","drop","fetch_input","fetch_instruction","fetch_next_instruction","fetch_value_to_absorb","from","get_poseidon_mds_matrix","get_poseidon_round_constant","idx_values_to_absorb","idx_var","idx_var_next_row","idx_var_pi","init","into","inverse","is_same_ec_point","ivc_accumulator_e1","ivc_accumulator_e2","load_poseidon_state","load_temporary_accumulators","new","next_state","one","previous_commitments_e1","previous_commitments_e2","previous_hash","public_state","r","range_check16","read_bit_of_folding_combiner","read_position","read_sixteen_bits_chunks_folding_combiner","reset","reset_for_next_iteration","save_poseidon_state","save_temporary_accumulators","selectors","sponge_e1","sponge_e2","square","srs_e1","srs_e2","state","temporary_accumulators","try_from","try_into","type_id","vzip","witness","write_column","write_public_input","z0","zero","zi"],"q":[[0,"arrabiata"],[22,"arrabiata::columns"],[147,"arrabiata::constraints"],[207,"arrabiata::interpreter"],[282,"arrabiata::poseidon_3_60_0_5_5_fp"],[283,"arrabiata::poseidon_3_60_0_5_5_fq"],[284,"arrabiata::proof"],[297,"arrabiata::prover"],[298,"arrabiata::witness"]],"d":["The number of rows the IVC circuit requires.","The maximum number of bits the fields can be. It is …","The maximum degree of the polynomial that can be …","The minimum SRS size required to use Nova, in base 2. …","The maximum number of columns that can be used in the …","The maximum number of public inputs the circuit can use …","The number of selectors used in the circuit.","Define the number of values we must absorb when …","The low-exponentiation value used by the Poseidon hash …","The number of full rounds in the Poseidon hash function.","The number of elements in the state of the Poseidon hash …","This module will be used by the prover to evaluate at a …","","","This module contains the implementation of the IVC scheme …","This file will implement a logup argument to allow users …","","","","A prover for the folding/accumulation scheme","A verifier for the folding/accumulation scheme","","Challenge used to aggregate the constraints","","Both challenges used in the permutation argument","","","","","","","This enum represents the different gadgets that can be …","An iterator over the variants of Gadget","","Challenge to homogenize the constraints","This gadget implement the Poseidon hash instance described …","","Random coin used to aggregate witnesses while folding","","","Challenge used to aggregate the constraints","Both challenges used in the permutation argument","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Challenge to homogenize the constraints","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","Random coin used to aggregate witnesses while folding","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","The parameter a is the coefficients of the elliptic curve …","","","","","","","","","","","","","","","","","","","","","Double the elliptic curve point given by the affine …","","","","","Returns the argument unchanged.","Get all the constraints for the IVC circuit and the …","Get all the constraints for the IVC circuit, only.","","","","","","","Calls U::from(self).","Inverse of a variable","","","","","","","","","","","","","","","","","","","","Return the corresponding expression regarding the selected …","Return the corresponding expression regarding the selected …","","","","A list of instruction/gadget implemented in the …","An abstract interpreter that provides some functionality …","","","This gadget implement the Poseidon hash instance described …","","","Define the side of the temporary accumulator. When …","The variable should be seen as a certain object that can …","Activate the gadget for the row.","","Allocate a new variable in the circuit for the current row","Allocate a new variable in the circuit for the next row","","Assert that the two variables are equal","Assert that the variable is zero","Flagged as unsafe as it does require an additional range …","","","","","","","Return the folding combiner","Compute the coefficient λ used in the elliptic curve …","Compute the x^5 of the given variable","","","","","","","Double the elliptic curve point given by the affine …","","","Fetch an input of the application","Load the public value to absorb at the current step. The …","","Returns the argument unchanged.","Returns the argument unchanged.","Return the requested MDS matrix coefficient","","","","Calls U::from(self).","Calls U::from(self).","Inverse of a variable","Check if the points given by (x1, y1) and (x2, y2) are …","Load the state of the Poseidon hash function into the …","Load the affine coordinates of the elliptic curve point …","Build the constant one","Check if the variable is between [0, 2^16 - 1]","Read the i-th bit of the folding combiner, in little …","Return the corresponding variable at the given position","Get the 16bits chunks of the folding combiner, and save it …","Reset the environment to build the next row","Run the application","Run an iteration of the IVC scheme","Save the state of poseidon into the environment","Save temporary accumulators into the environment","Compute the square a field element","","","","","","","","","","Set the value of the variable at the given position for …","Write the corresponding public inputs.","Build the constant zero","","","FIXME: a proof for the Nova recursive SNARK","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","Generate a proof for the IVC circuit. All the information …","An environment that can be shared between IVC instances.","","","The blinder used to commit, to avoid committing to the …","Activate the gadget for the current row","","","","","","","Flagged as unsafe as it does require an additional range …","","","While folding, we must keep track of the challenges the …","FIXME: check if we need to pick the left or right sponge","Compute the commitments to the current witness, and update …","","Compute the output of the application on the previous …","","","Keep the current executed instruction This can be used to …","The current iteration of the IVC","Current processing row. Used to build the witness.","","","Domain for Fp","Domain for Fq","Double the elliptic curve point given by the affine …","","","","Describe the control-flow for the IVC circuit.","","Returns the argument unchanged.","","","Index of the values to absorb in the sponge","The index of the latest allocated variable in the circuit. …","","The index of the latest allocated public inputs in the …","","Calls U::from(self).","Inverse of a variable","","","","","","","Next row in the execution trace. It is useful when we deal …","","Commitments to the previous instances","","A previous hash, encoded in 2 chunks of 128 bits.","Contain the public state","The coin folding combiner will be used to generate the …","","","","","Reset the environment to build the next row","Reset the environment to build the next iteration","","","Selectors to activate the gadgets. The size of the outer …","The sponges will be used to simulate the verifier …","","","SRS for the first curve","SRS for the second curve","State of the current row in the execution trace","Temporary registers for elliptic curve points in affine …","","","","","The witness of the current instance of the circuit. The …","","","Initial input","","Current input"],"i":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,4,1,4,0,0,0,0,1,1,0,0,4,4,1,3,4,3,3,12,12,12,1,2,3,4,12,1,2,3,4,1,2,3,4,1,2,3,4,12,1,2,3,4,12,1,2,3,4,4,12,1,2,3,4,1,3,4,4,4,1,2,3,4,4,12,1,2,3,4,12,12,12,12,1,2,3,4,12,1,2,3,4,2,3,4,1,3,4,2,2,2,2,3,4,2,12,4,2,3,4,1,2,3,4,4,12,1,2,3,4,12,1,2,3,4,12,1,2,3,4,12,1,2,3,4,0,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,22,31,31,0,0,29,31,31,32,29,0,32,32,32,32,32,32,32,32,32,29,31,29,31,31,31,32,32,32,32,32,29,31,29,31,32,29,31,32,32,31,29,31,32,32,29,31,29,31,32,32,32,32,32,32,32,32,32,32,0,0,32,32,32,31,29,31,29,31,29,31,29,31,32,32,32,0,0,0,38,38,38,38,38,38,38,38,38,38,38,38,0,0,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1,1],[2,2],[3,3],[4,4],[[]],[[]],[[]],[[]],[5],[5],[5],[5],[5],[5],[5],[5],[5],[5],[6,[[7,[4]]]],[5],[5],[5],[5],[5],[[1,1],8],[[3,3],8],[[4,4],8],[[],8],[[],8],[[1,9],10],[[2,9],10],[[3,9],10],[[4,9],10],[[4,9],10],[[]],[[]],[[]],[[]],[[]],0,0,[[[12,[11]],4]],[[],5],[[],5],[[],5],[[],5],[[],5],[[]],[[]],[[]],[[]],[[]],[[]],[3,8],[[],8],[[],2],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[2,5],[2,17],[2,17],[[2,5],17],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[[],18],0,[[4,19],7],[2],[[3,[14,[13,3]]],15],[[[14,[13,16]]],15],[[]],[[]],[[]],[[]],[[],15],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],20],[[],20],[[],20],[[],20],[[],20],[[]],[[]],[[]],[[]],[[]],0,0,[[[22,[21]],1]],0,[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],23,23]],[[]],[[]],[[[22,[[0,[24,11]]]]],[[22,[[0,[24,11]]]]]],[[]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],25]],[[[22,[21]]]],0,[5],[5],[[[22,[21]]]],[5],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[[0,[26,11]]]],9],10],[[]],[[[22,[21]]],[[28,[[27,[21]]]]]],[[[22,[21]]],[[28,[[27,[21]]]]]],[[[22,[21]],5,5]],[[[22,[21]],5,5]],0,0,0,[[],5],[[]],[[[22,[21]]]],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[21]],29]],[[[28,[[28,[21]]]],25],[[22,[21]]]],[[[22,[21]]]],0,[[[22,[21]]]],[[[22,[21]],30]],[[[22,[21]]]],[[[22,[21]],23]],[[[22,[21]]]],[[[22,[21]],5]],[[[22,[21]],29]],[[[22,[21]]]],[[]],[[],7],[[],7],[[],20],[[]],[[[22,[21]]]],[[[22,[21]],25]],[[[22,[21]]]],0,0,0,0,0,0,0,0,0,0,0,[1],[[]],[[]],[[]],[[]],[[]],[[]],[[23,23]],[[]],[[]],[[]],[[]],[31,31],[[]],[[]],[[]],[[]],[25],[[]],[5],[5],[5],[5],[[]],[5],[5],[[]],[5],[[31,9],10],[[]],[[]],[[5,5]],[[5,5]],[[],5],[[],5],[[]],[[]],[[]],[[]],[5],[29],[[]],[[]],[30],[[]],[23],[[]],[32],[[32,31]],[5],[29],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],20],[[],20],[[]],[[]],[[]],[25],[[]],[[],[[34,[33]]]],[[],[[34,[35]]]],0,[[]],[[]],[5],[5],[5],[[]],[[],5],[[]],[[],7],[[],7],[[],20],[[]],[[[37,[21,21,36,36]]],[[7,[38,15]]]],0,0,0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],1]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],23,23]],[[]],[[]],0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],25]],[[[37,[21,21,39,39]]]],0,0,0,[5],[5],0,0,[[[37,[21,21,39,39]]]],[5],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]],31],[[[37,[21,21,39,39]]],31],[[[37,[21,21,39,39]],5]],[[]],[[[37,[21,21,39,39]],5,5]],[[[37,[21,21,39,39]],5,5]],0,0,0,0,[[],5],[[]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],0,0,[[[37,[21,21,39,39]],5]],[[[37,[21,21,39,39]],29]],[[5,25,[40,[25]],[40,[25]]],[[37,[21,21,39,39]]]],0,[[[37,[21,21,39,39]]]],0,0,0,0,0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],30]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],23]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],5]],[[[37,[21,21,39,39]],29]],0,0,0,[[[37,[21,21,39,39]]]],0,0,0,0,[[],7],[[],7],[[],20],[[]],0,[[[37,[21,21,39,39]]]],[[[37,[21,21,39,39]],25]],0,[[[37,[21,21,39,39]]]],0],"c":[],"p":[[4,"Gadget"],[3,"GadgetIter"],[4,"Column"],[4,"ChallengeTerm"],[15,"usize"],[8,"Deserializer"],[4,"Result"],[15,"bool"],[3,"Formatter"],[6,"Result"],[8,"Field"],[3,"Challenges"],[3,"CacheId"],[3,"HashMap"],[3,"String"],[3,"RandomState"],[4,"Option"],[3,"IterBridge"],[8,"Serializer"],[3,"TypeId"],[8,"PrimeField"],[3,"Env"],[15,"u32"],[8,"Clone"],[3,"BigInt"],[8,"Debug"],[6,"E"],[3,"Vec"],[4,"Side"],[15,"u64"],[4,"Instruction"],[8,"InterpreterEnv"],[6,"Fp"],[3,"ArithmeticSpongeParams"],[6,"Fq"],[8,"AffineRepr"],[3,"Env"],[3,"Proof"],[8,"CommitmentCurve"],[15,"array"]]},\ "export_test_vectors":{"doc":"","t":"AFANNNNEELLLLLLLLLLLLLLLLLLLLFLLLLLLLLDDLLLLLLLLLLLLLLFLLMLLMMFFLLMLLLLLLLL","n":["inner","main","vectors","B10","Hex","Kimchi","Legacy","Mode","ParamType","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","from_str","from_str","init","init","into","into","main","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","TestVector","TestVectors","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","fmt","fmt","from","from","generate","init","init","input","into","into","name","output","poseidon","rand_fields","serialize","serialize","test_vectors","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip"],"q":[[0,"export_test_vectors"],[3,"export_test_vectors::inner"],[38,"export_test_vectors::vectors"]],"d":["","“Usage: cargo run –all-features –bin …","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","","","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","creates a set of test vectors","","","","Calls U::from(self).","Calls U::from(self).","","","Computes the poseidon hash of several field elements. Uses …","generates a vector of length field elements","","","","","","","","","","",""],"i":[0,0,0,2,2,5,5,0,0,2,5,2,5,2,5,2,5,2,5,2,5,2,5,2,5,2,5,2,5,0,2,5,2,5,2,5,2,5,0,0,9,10,9,10,9,10,9,10,9,10,9,10,9,10,0,9,10,10,9,10,9,10,0,0,9,10,9,9,10,9,10,9,10,9,10],"f":[0,[[]],0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[1],[1],[1],[1],[1],[1],[[2,3],4],[[5,3],4],[[]],[[]],[6,[[7,[2]]]],[6,[[7,[5]]]],[[],1],[[],1],[[]],[[]],[[]],[[],7],[[],7],[[],7],[[],7],[[],8],[[],8],[[]],[[]],0,0,[[]],[[]],[[]],[[]],[1],[1],[1],[1],[1],[1],[[9,3],4],[[10,3],4],[[]],[[]],[[2,5],9],[[],1],[[],1],0,[[]],[[]],0,0,[[[12,[11]],[13,[11]]],11],[[14,15],[[16,[11]]]],[[9,17],7],[[10,17],7],0,[[],7],[[],7],[[],7],[[],7],[[],8],[[],8],[[]],[[]]],"c":[],"p":[[15,"usize"],[4,"Mode"],[3,"Formatter"],[6,"Result"],[4,"ParamType"],[15,"str"],[4,"Result"],[3,"TypeId"],[3,"TestVectors"],[3,"TestVector"],[6,"Fp"],[15,"slice"],[3,"ArithmeticSpongeParams"],[8,"Rng"],[15,"u8"],[3,"Vec"],[8,"Serializer"]]},\ "flamegraph":{"doc":"","t":"FF","n":["black_box","main"],"q":[[0,"flamegraph"]],"d":["function to avoid optimizations by the compiler taken from …",""],"i":[0,0],"f":[[[]],[[]]],"c":[],"p":[]},\ "folding":{"doc":"This library implements basic components to fold …","t":"EQQNQQCCIIDDCQNNCCNQEQQQCQLLLLLLLLKALLLLKALALLLLLLLLMLLLLLLLAMAMLLLMMLLLLLLLLLLALLLLKLLLLLLAMMKMAMMMMLLLLLLLLLLLLLLLLLLLMIEDIDNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMMMLLLLLLKLLLLLLLLLLLLLLLMMNNNNENNNLLLLLLLLLLLLLLLLLLLLDLLLLLLLLLLLLLLLLNNENLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNNNENNNENNIEEEDNNNNNNNNENNNNDNNNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLMFLLLLLLLLLLFLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLKLLLLLLLLMLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLDDIIIIIDDIMLLLLLLLLLLLLLLLLKLLLLLLLLLLLLLLLLLLLLLLMMMMMMLLLLLLKLKLLLLLLLMLLLLLKKKLLLLKLLLLLLLLLLLLLLLLLLMLLLLMDDLLLLLLLLLLMMLLLLLLMFLLLLLLLLDDDLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLL","n":["Alphas","Challenge","Column","Combinations","Curve","Env","ExpExtension","FoldingCompatibleExpr","FoldingConfig","FoldingEnv","FoldingOutput","FoldingScheme","Instance","Instance","Left","Powers","RelaxedInstance","RelaxedWitness","Right","Selector","Side","Srs","Structure","Structure","Witness","Witness","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","challenge","checker","clone","clone","clone_into","clone_into","col","columns","combine","decomposable_folding","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","domain","drop","drop","drop","drop","eq","equivalent","equivalent","eval_leaf","expression","expressions","extended_witness_generator","fmt","fold_instance_pair","fold_instance_witness_pair","folded_instance","folded_witness","from","from","from","from","get","get_number_of_additional_columns","init","init","init","init","instance_witness","into","into","into","into","new","new","new","new_sized","other","pair","powers","quadraticization","relaxed_extended_left_instance","relaxed_extended_right_instance","selector","srs","standard_config","structure","t_0","t_1","to_absorb","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","verify_fold","vzip","vzip","vzip","vzip","zero_vec","Checker","Column","ExtendedProvider","Provide","Provider","Selector","X","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","check","check_rec","clone","clone_into","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","equivalent","equivalent","fmt","from","from","from","hash","init","init","init","inner_provider","instance","instance","into","into","into","is_witness","new","new","resolve","resolve","resolve","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip","witness","witness","Alpha","Challenge","Constant","Error","ExtendedFoldingColumn","Inner","Selector","WitnessExtended","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","eq","equivalent","equivalent","fmt","from","hash","init","into","to_owned","try_from","try_into","type_id","vzip","DecomposableFoldingScheme","borrow","borrow_mut","deref","deref_mut","drop","fold_instance_pair","fold_instance_witness_pair","from","get_number_of_additional_columns","init","into","new","try_from","try_into","type_id","vzip","Col","Const","EvalLeaf","Result","add","borrow","borrow_mut","clone","clone_into","deref","deref_mut","drop","fmt","fmt","from","init","into","map","mul","mul","sub","to_owned","to_string","try_from","try_into","type_id","unwrap","vzip","Add","Add","Alpha","Atom","Atom","Cell","Challenge","Constant","Degree","Double","Double","Error","ExpExtension","ExtendedWitness","Extensions","FoldingColumnTrait","FoldingCompatibleExpr","FoldingCompatibleExprInner","FoldingExp","IntegratedFoldingExpr","Mul","Mul","Neg","One","Pos","Pow","Pow","Selector","Sign","Square","Square","Sub","Sub","Term","Two","U","Zero","add","add","add","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","clone_into","cmp","default","degree","deref","deref","deref","deref","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","deref_mut","double","drop","drop","drop","drop","drop","drop","drop","drop","eq","eq","eq","eq","eq","eq","equivalent","equivalent","equivalent","equivalent","equivalent","equivalent","exp","extract_terms","final_expression","flatten_quad_columns","fmt","fmt","fmt","fmt","fmt","fmt","fmt","fmt","folding_expression","from","from","from","from","from","from","from","from","from","from","from","from","from","hash","hash","init","init","init","init","init","init","init","init","into","into","into","into","into","into","into","into","is_witness","map_variable","mul","mul","mul","mul","neg","neg","partial_cmp","sign","simplify","sub","sub","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_owned","to_string","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","type_id","type_id","type_id","type_id","vzip","vzip","vzip","vzip","vzip","vzip","vzip","vzip","ExtendedInstance","ExtendedWitness","Foldable","Instance","RelaxableInstance","RelaxablePair","RelaxableWitness","RelaxedInstance","RelaxedWitness","Witness","blinder","borrow","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","borrow_mut","clone","clone","clone","clone","clone_into","clone_into","clone_into","clone_into","combine","combine","combine","combine","combine","deref","deref","deref","deref","deref_mut","deref_mut","deref_mut","deref_mut","drop","drop","drop","drop","eq","eq","equivalent","equivalent","equivalent","equivalent","error_commitment","error_vec","extended","extended","extended_instance","extended_witness","fmt","fmt","from","from","from","from","get_alphas","get_alphas","get_blinder","get_blinder","get_extended_column","get_extended_column_commitment","init","init","init","init","instance","into","into","into","into","is_extended","relax","relax","relax","relax","relax","relax","relax","to_absorb","to_absorb","to_absorb","to_owned","to_owned","to_owned","to_owned","try_from","try_from","try_from","try_from","try_into","try_into","try_into","try_into","type_id","type_id","type_id","type_id","u","vzip","vzip","vzip","vzip","witness","ExtendedWitnessGenerator","Quadraticized","borrow","borrow","borrow_mut","borrow_mut","deref","deref","deref_mut","deref_mut","drop","drop","extended_witness_generator","extra_constraints","from","from","init","init","into","into","original_constraints","quadraticize","try_from","try_from","try_into","try_into","type_id","type_id","vzip","vzip","EmptyStructure","Env","StandardConfig","borrow","borrow","borrow","borrow_mut","borrow_mut","borrow_mut","challenge","clone","clone_into","col","default","deref","deref","deref","deref_mut","deref_mut","deref_mut","drop","drop","drop","eq","equivalent","equivalent","fmt","from","from","from","hash","index","init","init","init","into","into","into","new","selector","to_owned","try_from","try_from","try_from","try_into","try_into","try_into","type_id","type_id","type_id","vzip","vzip","vzip"],"q":[[0,"folding"],[121,"folding::checker"],[185,"folding::columns"],[213,"folding::decomposable_folding"],[230,"folding::eval_leaf"],[258,"folding::expressions"],[468,"folding::instance_witness"],[578,"folding::quadraticization"],[608,"folding::standard_config"]],"d":["Combinators that will be used to fold the constraints, …","The type of an abstract challenge that can be found in the …","","","The target curve used by the polynomial commitment","","","","","Describe a folding environment. The type parameters are:","Output of the folding prover","","","For Plonk, it will be the commitments to the polynomials …","","","","","","","This type refers to the two instances to be folded","The SRS used by the polynomial commitment. The SRS is used …","","Structure which could be storing useful information like …","","For PlonK, it will be the polynomials in evaluation form …","","","","","","","","","Obtains a given challenge from the expanded instance for …","Define the different structures required for the examples …","","","","","Returns the evaluations of a given column witness at omega …","This module contains description of the additional columns …","","This variant of folding is designed to efficiently handle …","","","","","","","","","","","","","","","","","","","Implement a library to represent expressions/multivariate …","","","Fold two relaxable instances into a relaxed instance. It …","This is the main entry point to fold two instances and …","The folded instance, containing, in particular, the result …","Folded witness, containing, in particular, the result of …","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","Return the number of additional columns added by …","","","","","This module defines a list of traits and structures that …","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Creates a new environment storing the structure, instances …","","","","","","","A library to reduce constraints into degree 2.","The left relaxed instance, including the potential …","The right relaxed instance, including the potential …","similar to Self::col, but folding may ask for a dynamic …","","This module offers a standard implementation of …","","The error terms of degree 1, see the top-level …","The error terms of degree 2, see the top-level …","Elements to absorbed in IVC, in the same order as done in …","","","","","","","","","","","","","","","Verifier of the folding scheme; returns a new folded …","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","","","","","","","","","A list of randomizer to combine expressions","A challenge used by the PIOP or the folding scheme.","A constant value in our expression","The error term introduced in the “relaxed” instance.","Describes the additional columns. It is parametrized by a …","The variables of the initial circuit, without …","A “virtual” selector that can be used to …","For the extra columns added by the module quadraticization.","","","","","","","","","","","","Returns the argument unchanged.","","","Calls U::from(self).","","","","","","","","","","","","Fold two relaxable instances into a relaxed instance. It …","folding with a selector will assume that only the selector …","Returns the argument unchanged.","Return the number of additional columns added by …","","Calls U::from(self).","Creates a new folding scheme for decomposable circuits. It …","","","","","","","Result of a folding expression evaluation.","","","","","","","","","","","","Returns the argument unchanged.","","Calls U::from(self).","","","","","","","","","","","","","","The random values α_{i} used to aggregate constraints","","","","","","Describe the degree of a constraint. As described in the …","","","The error term","Extra expressions that can be created by folding","Additional columns created by quadraticization","extra nodes created by folding, should not be passed to …","","Compatible folding expressions that can be used with …","Components to be used to convert multivariate polynomials …","Internal expression used for folding. A “folding” …","A value of type IntegratedFoldingExpr is the result of the …","","","","","","","","Represent a dynamic selector, in the case of using …","Used to encode the sign of a term in a polynomial.","","","","","A term of a polynomial For instance, in the polynomial …","","The variable u used to make the polynomial homogenous","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Return the degree of the column","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","Combines constraints into single expression","Map all quad columns into regular witness columns.","","","","","","","","","Convert a list of folding compatible expression into the …","Returns the argument unchanged.","Returns the argument unchanged.","","Returns the argument unchanged.","","Returns the argument unchanged.","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","Maps variable (column index) in expression using the mapper","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","An extended instance is an instance that has been extended …","This structure represents a witness extended with extra …","","","","","Trait to make a witness relaxable/homogenizable","A relaxed instance is an instance that has been relaxed by …","","","Blinder used for the commitments to the cross terms","","","","","","","","","","","","","","","","","Combine two objects ‘a’ and ‘b’ into a new object …","","","Combine two relaxed instances into a new relaxed instance.","","","","","","","","","","","","","","","","","","","","The commitment to the error term, introduced when …","The error vector, introduced when homogenizing the …","Extra columns added by quadraticization to lower the …","Commitments to the extra columns added by quadraticization","The original instance, extended with the columns added by …","The original witness, extended with the columns added by …","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","Returns the alphas values for the instance","","Return the blinder that can be used while committing to …","Returns the blinder value. It is the same as the one of …","Provides access to the extra columns added by …","Provides access to commitments to the extra columns added …","","","","","The original instance.","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","Return true if the no extra columns are added by …","","","","This method takes a witness and a vector of evaluations to …","This method takes an Instance and a commitment to zero and …","","","This method returns the scalars and commitments that must …","Return the elements to be absorbed by the sponge","Returns the elements to be absorbed by the sponge","","","","","","","","","","","","","","","","","The scalar u that is used to homogenize the polynomials","","","","","This is the original witness, without quadraticization","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","","","Calls U::from(self).","Calls U::from(self).","","Returns the constraints converted into degree 2 or less …","","","","","","","","","Default type for when you don’t need structure","A generic Index based environment","A standard folding config that supports: G: any curve Col: …","","","","","","","","","","","","","","","","","","","","","","","","","Returns the argument unchanged.","Returns the argument unchanged.","Returns the argument unchanged.","","","","","","Calls U::from(self).","Calls U::from(self).","Calls U::from(self).","","","","","","","","","","","","","","",""],"i":[0,12,12,4,12,12,0,0,0,0,0,0,0,12,1,4,0,0,1,12,0,12,12,73,0,12,13,20,1,4,13,20,1,4,73,0,1,4,1,4,73,0,4,0,13,20,1,4,13,20,1,4,13,13,20,1,4,4,4,4,0,13,0,13,4,13,13,20,20,13,20,1,4,4,13,13,20,1,4,0,13,20,1,4,73,13,4,4,1,20,4,0,20,20,73,13,0,13,20,20,20,1,4,13,20,1,4,13,20,1,4,13,20,1,4,13,13,20,1,4,13,0,0,0,0,0,27,27,29,31,27,29,31,27,74,74,27,27,29,31,27,29,31,27,29,31,27,27,27,27,27,29,31,27,27,29,31,27,31,29,31,29,31,27,27,29,31,75,29,31,27,29,31,27,29,31,27,29,31,27,29,31,27,29,31,33,33,33,33,0,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,33,0,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,34,37,37,0,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,37,22,44,45,22,44,32,32,32,0,22,44,45,0,45,32,0,0,0,0,0,22,44,46,43,46,22,44,45,0,22,44,22,44,0,43,45,43,43,22,44,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,43,48,63,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,44,43,45,32,22,44,46,47,48,43,45,32,22,44,46,43,43,44,44,46,46,47,0,48,22,43,45,32,22,44,46,47,48,0,43,45,32,32,32,22,22,22,22,44,46,47,48,43,44,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,63,22,43,22,44,47,46,47,43,47,22,22,44,43,45,32,22,44,46,47,48,22,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,43,45,32,22,44,46,47,48,0,0,0,0,0,0,0,0,0,0,18,58,60,18,30,58,60,18,30,58,60,18,30,58,60,18,30,76,58,60,18,30,58,60,18,30,58,60,18,30,58,60,18,30,60,18,60,60,18,18,18,30,58,60,18,30,58,30,58,60,18,30,59,60,59,60,30,18,58,60,18,30,60,58,60,18,30,58,14,77,19,58,60,18,30,59,60,18,58,60,18,30,58,60,18,30,58,60,18,30,58,60,18,30,18,58,60,18,30,58,0,0,78,79,78,79,78,79,78,79,78,79,78,78,78,79,78,79,78,79,78,0,78,79,78,79,78,79,78,79,0,0,0,68,70,72,68,70,72,68,70,70,68,70,68,70,72,68,70,72,68,70,72,72,72,72,72,68,70,72,72,70,68,70,72,68,70,72,68,68,70,68,70,72,68,70,72,68,70,72,68,70,72],"f":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[1],0,[1,1],[[[4,[[0,[2,3]]]]],[[4,[[0,[2,3]]]]]],[[]],[[]],[[5,1],6],0,[[[4,[3]],[4,[3]],3],[[4,[3]]]],0,[7],[7],[7],[7],[7],[7],[7],[7],0,[7],[7],[7],[7],[[[4,[3]],[4,[3]]],8],[[],8],[[],8],0,0,0,0,[[[4,[[0,[9,3]]]],10],11],[[[13,[12]],14,14,[16,[15]],17],18],[[[13,[12]],19,19,17],[[20,[12]]]],0,0,[[]],[[]],[[]],[[]],[[[4,[3]],7],[[21,[3]]]],[[[13,[12]]],7],[[],7],[[],7],[[],7],[[],7],0,[[]],[[]],[[]],[[]],[[16,16]],[[[23,[[22,[12]]]],24]],[3,[[4,[3]]]],[[3,7],[[4,[3]]]],[1,1],[[[20,[12]]]],[[[4,[3]]],[[23,[3]]]],0,0,0,[1,6],0,0,0,0,0,0,[[]],[[]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[],26],[[],26],[[[13,[12]],18,18,15,15,17],18],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[22,24]],[[22,24],23],[27,27],[[]],[7],[7],[7],[7],[7],[7],[7],[7],[7],[[27,27],8],[[],8],[[],8],[[27,10],11],[[]],[[]],[[]],[[27,28]],[[],7],[[],7],[[],7],0,0,0,[[]],[[]],[[]],[27,8],[[],[[29,[12]]]],[[18,30],[[31,[12]]]],[[32,24],23],[[[29,[12]],[32,[12]],24],23],[[[31,[12]],[32,[12]],24],23],[[]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[],26],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[[33,[12]]],[[33,[12]]]],[[]],[7],[7],[7],[[[33,[12]],[33,[12]]],8],[[],8],[[],8],[[[33,[12]],10],11],[[]],[[[33,[12]],28]],[[],7],[[]],[[]],[[],25],[[],25],[[],26],[[]],0,[[]],[[]],[7],[7],[7],[[[34,[12]],14,14,[16,[15]],17],18],[[[34,[12]],19,19,21,17],[[20,[12]]]],[[]],[[[34,[12]]],7],[[],7],[[]],[[[35,[[23,[[22,[12]]]]]],[23,[[22,[12]]]],24]],[[],25],[[],25],[[],26],[[]],0,0,0,0,[[[37,[[0,[36,2]]]],[37,[[0,[36,2]]]]],[[37,[[0,[36,2]]]]]],[[]],[[]],[[[37,[2]]],[[37,[2]]]],[[]],[7],[7],[7],[[[37,[9]],10],11],[[[37,[38]],10],11],[[]],[[],7],[[]],[[[37,[2]],39,39],[[37,[2]]]],[[[37,[[0,[40,2]]]],[0,[40,2]]],[[37,[[0,[40,2]]]]]],[[[37,[[0,[40,2]]]],[37,[[0,[40,2]]]]],[[37,[[0,[40,2]]]]]],[[[37,[[0,[41,2]]]],[37,[[0,[41,2]]]]],[[37,[[0,[41,2]]]]]],[[]],[[],42],[[],25],[[],25],[[],26],[[[37,[2,2]]],[[23,[2,2]]]],[[]],0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,[[43,43]],[[[22,[12]],[22,[12]]],[[22,[12]]]],[[[44,[12]],[44,[12]]],[[44,[12]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[43,43],[[[45,[12]]],[[45,[12]]]],[[[32,[12]]],[[32,[12]]]],[[[22,[12]]],[[22,[12]]]],[[[44,[12]]],[[44,[12]]]],[46,46],[[[47,[12]]],[[47,[12]]]],[[[48,[12]]],[[48,[12]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[43,43],49],[[],[[48,[12]]]],[[],43],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[[[44,[12]]],[[44,[12]]]],[7],[7],[7],[7],[7],[7],[7],[7],[[43,43],8],[[[45,[12]],[45,[12]]],8],[[[32,[12]],[32,[12]]],8],[[[22,[12]],[22,[12]]],8],[[[44,[12]],[44,[12]]],8],[[46,46],8],[[],8],[[],8],[[],8],[[],8],[[],8],[[],8],0,[[[44,[12]]],[[51,[50]]]],[[[48,[12]]],[[22,[12]]]],[[[22,[12]],39],[[22,[12]]]],[[43,10],11],[[[45,[12]],10],11],[[[32,[12]],10],11],[[[22,[12]],10],11],[[[44,[12]],10],11],[[46,10],11],[[[47,[[0,[9,12]]]],10],11],[[[48,[12]],10],11],[[[23,[[22,[12]]]]]],[[]],[[]],[[[54,[[53,[52]]]]],[[32,[12]]]],[[]],[[[53,[52]]],[[32,[12]]]],[[]],[[[55,[[54,[[55,[[53,[52]]]]]]]]],[[22,[12]]]],[[[55,[[53,[52]]]]],[[22,[12]]]],[[[55,[[54,[[53,[52]]]]]]],[[22,[12]]]],[[]],[[]],[[]],[[]],[[43,28]],[[[44,[12]],28]],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[],7],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[],8],[[[22,[12]],39],[[22,[12]]]],[[43,43]],[[[22,[12]],[22,[12]]],[[22,[12]]]],[[[44,[12]],[44,[12]]],[[44,[12]]]],[[[47,[12]],[47,[12]]]],[46,46],[[[47,[12]]]],[[43,43],[[21,[49]]]],0,[[[22,[12]]],[[44,[12]]]],[[[22,[12]],[22,[12]]],[[22,[12]]]],[[[44,[12]],[44,[12]]],[[44,[12]]]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[22,[12]]],42],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[],26],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],0,0,0,0,0,0,0,0,0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[]],[[[58,[[0,[2,56]],[0,[2,[57,[[0,[2,56]]]]]]]]],[[58,[[0,[2,56]],[0,[2,[57,[[0,[2,56]]]]]]]]]],[[[60,[[0,[2,56]],[0,[2,[59,[[0,[2,56]]]]]]]]],[[60,[[0,[2,56]],[0,[2,[59,[[0,[2,56]]]]]]]]]],[[[18,[[0,[2,56]],[0,[2,[59,[[0,[2,56]]]]]]]]],[[18,[[0,[2,56]],[0,[2,[59,[[0,[2,56]]]]]]]]]],[[[30,[[0,[2,56]],[0,[2,[57,[[0,[2,56]]]]]]]]],[[30,[[0,[2,56]],[0,[2,[57,[[0,[2,56]]]]]]]]]],[[]],[[]],[[]],[[]],[[]],[[[58,[56,[57,[56]]]],[58,[56,[57,[56]]]]],[[58,[56,[57,[56]]]]]],[[[60,[56,[59,[56]]]],[60,[56,[59,[56]]]]],[[60,[56,[59,[56]]]]]],[[[18,[56,[59,[56]]]],[18,[56,[59,[56]]]]],[[18,[56,[59,[56]]]]]],[[[30,[56,[57,[56]]]],[30,[56,[57,[56]]]]],[[30,[56,[57,[56]]]]]],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[7],[[[60,[[0,[61,56]],[0,[61,[59,[[0,[61,56]]]]]]]],[60,[[0,[61,56]],[0,[61,[59,[[0,[61,56]]]]]]]]],8],[[[18,[[0,[61,56]],[0,[61,[59,[[0,[61,56]]]]]]]],[18,[[0,[61,56]],[0,[61,[59,[[0,[61,56]]]]]]]]],8],[[],8],[[],8],[[],8],[[],8],0,0,0,0,0,0,[[[58,[[0,[9,56]],[0,[9,[57,[[0,[9,56]]]]]]]],10],11],[[[30,[[0,[9,56]],[0,[9,[57,[[0,[9,56]]]]]]]],10],11],[[]],[[]],[[]],[[]],[[],4],[[[60,[56,[59,[56]]]]],4],[[]],[[[60,[56,[59,[56]]]]]],[[[30,[56,[57,[56]]]],7],[[21,[[62,[24]]]]]],[[[18,[56,[59,[56]]]],7],[[21,[[15,[56]]]]]],[[],7],[[],7],[[],7],[[],7],0,[[]],[[]],[[]],[[]],[[[58,[56,[57,[56]]]]],8],[[],18],[[[62,[24]]],30],[[[62,[24]]]],[[[62,[24]]],30],[[],18],[[[18,[56,[59,[56]]]]],[[18,[56,[59,[56]]]]]],[[[30,[56,[57,[56]]]],[62,[24]]],[[30,[56,[57,[56]]]]]],[[]],[[[60,[56,[59,[56]]]]]],[[[18,[56,[59,[56]]]]]],[[]],[[]],[[]],[[]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[],26],[[],26],0,[[]],[[]],[[]],[[]],0,0,0,[[]],[[]],[[]],[[]],[7],[7],[7],[7],[7],[7],0,0,[[]],[[]],[[],7],[[],7],[[]],[[]],0,[[[23,[[44,[12]]]]]],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[]],[[]],0,0,0,[[]],[[]],[[]],[[]],[[]],[[]],[[[68,[56,[0,[63,64,65]],66,[0,[2,[67,[[0,[63,64,65]]]]]],[0,[[59,[56]],67,2]],[0,[[57,[56]],2,[67,[[0,[63,64,65]]]],[67,[66]]]]]],1]],[[[70,[[0,[2,69]]]]],[[70,[[0,[2,69]]]]]],[[]],[[[68,[56,[0,[63,64,65]],66,[0,[2,[67,[[0,[63,64,65]]]]]],[0,[[59,[56]],67,2]],[0,[[57,[56]],2,[67,[[0,[63,64,65]]]],[67,[66]]]]]],[0,[63,64,65]],5,1],6],[[],[[70,[[0,[71,69]]]]]],[7],[7],[7],[7],[7],[7],[7],[7],[7],[[72,72],8],[[],8],[[],8],[[72,10],11],[[]],[[]],[[]],[[72,28]],[[[70,[69]]]],[[],7],[[],7],[[],7],[[]],[[]],[[]],[[[16,[[0,[[59,[56]],67,2]]]],[16,[[0,[[57,[56]],2,[67,[[0,[63,64,65]]]],[67,[66]]]]]]],[[68,[56,[0,[63,64,65]],66,[0,[2,[67,[[0,[63,64,65]]]]]],[0,[[59,[56]],67,2]],[0,[[57,[56]],2,[67,[[0,[63,64,65]]]],[67,[66]]]]]]]],[[[68,[56,[0,[63,64,65]],66,[0,[2,[67,[[0,[63,64,65]]]]]],[0,[[59,[56]],67,2]],[0,[[57,[56]],2,[67,[[0,[63,64,65]]]],[67,[66]]]]]],66,1],6],[[]],[[],25],[[],25],[[],25],[[],25],[[],25],[[],25],[[],26],[[],26],[[],26],[[]],[[]],[[]]],"c":[],"p":[[4,"Side"],[8,"Clone"],[8,"Field"],[4,"Alphas"],[4,"CurrOrNext"],[15,"slice"],[15,"usize"],[15,"bool"],[8,"Debug"],[3,"Formatter"],[6,"Result"],[8,"FoldingConfig"],[3,"FoldingScheme"],[8,"RelaxableInstance"],[3,"PolyComm"],[15,"array"],[8,"FqSponge"],[3,"RelaxedInstance"],[8,"RelaxablePair"],[3,"FoldingOutput"],[4,"Option"],[4,"FoldingCompatibleExpr"],[3,"Vec"],[3,"Radix2EvaluationDomain"],[4,"Result"],[3,"TypeId"],[4,"Column"],[8,"Hasher"],[3,"Provider"],[3,"RelaxedWitness"],[3,"ExtendedProvider"],[4,"FoldingCompatibleExprInner"],[4,"ExtendedFoldingColumn"],[3,"DecomposableFoldingScheme"],[3,"BTreeMap"],[8,"Add"],[4,"EvalLeaf"],[8,"Display"],[8,"Fn"],[8,"Mul"],[8,"Sub"],[3,"String"],[4,"Degree"],[4,"FoldingExp"],[4,"ExpExtension"],[4,"Sign"],[3,"Term"],[3,"IntegratedFoldingExpr"],[4,"Ordering"],[8,"Iterator"],[3,"Box"],[4,"BerkeleyChallengeTerm"],[4,"ConstantExprInner"],[4,"ExprInner"],[4,"Operations"],[8,"CommitmentCurve"],[8,"Witness"],[3,"ExtendedWitness"],[8,"Instance"],[3,"ExtendedInstance"],[8,"PartialEq"],[3,"Evaluations"],[8,"FoldingColumnTrait"],[8,"Eq"],[8,"Hash"],[8,"Copy"],[8,"Index"],[3,"Env"],[8,"KimchiCurve"],[3,"EmptyStructure"],[8,"Default"],[3,"StandardConfig"],[8,"FoldingEnv"],[8,"Checker"],[8,"Provide"],[8,"Foldable"],[8,"RelaxableWitness"],[3,"Quadraticized"],[3,"ExtendedWitnessGenerator"]]},\ diff --git a/rustdoc/settings.html b/rustdoc/settings.html index 78856e0fed..042ebee940 100644 --- a/rustdoc/settings.html +++ b/rustdoc/settings.html @@ -1 +1 @@ -Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file +Rustdoc settings

    Rustdoc settings

    Back
    \ No newline at end of file diff --git a/rustdoc/src/arrabiata/columns.rs.html b/rustdoc/src/arrabiata/columns.rs.html index ade5617be7..71aeb76322 100644 --- a/rustdoc/src/arrabiata/columns.rs.html +++ b/rustdoc/src/arrabiata/columns.rs.html @@ -133,31 +133,6 @@ 133 134 135 -136 -137 -138 -139 -140 -141 -142 -143 -144 -145 -146 -147 -148 -149 -150 -151 -152 -153 -154 -155 -156 -157 -158 -159 -160

    use ark_ff::Field;
     use kimchi::circuits::expr::{AlphaChallengeTerm, CacheId, ConstantExpr, Expr, FormattedOutput};
     use serde::{Deserialize, Serialize};
    @@ -178,30 +153,15 @@
     #[derive(Debug, Clone, Copy, PartialEq, EnumCountMacro, EnumIter)]
     pub enum Gadget {
         App,
    -    // Permutation argument
    -    PermutationArgument,
    -    // Two old gadgets
    -    /// Decompose a 255 bits scalar into 16 chunks of 16 bits.
    -    SixteenBitsDecomposition,
    -    /// Decompose a 16bits chunk into individual bits.
    -    BitDecompositionFrom16Bits,
    -    /// This gadget decomposes a 255 bits value into bits using 17 lines and 17
    -    /// columns.
    -    BitDecomposition,
         // Elliptic curve related gadgets
         EllipticCurveAddition,
         EllipticCurveScaling,
         /// This gadget implement the Poseidon hash instance described in the
    -    /// top-level documentation. The implementation does not use the "next row"
    -    /// and is unsafe at the moment as no permutation argument is implemented.
    -    Poseidon,
    -    /// This gadget implement the Poseidon hash instance described in the
    -    /// top-level documentation. Compared to the previous one (that might be
    -    /// deprecated in the future), this implementation does use the "next row"
    +    /// top-level documentation. This implementation does use the "next row"
         /// to allow the computation of one additional round per row. In the current
         /// setup, with [crate::NUMBER_OF_COLUMNS] columns, we can compute 5 full
         /// rounds per row.
    -    PoseidonNextRow,
    +    Poseidon,
     }
     
     #[derive(Debug, Clone, Copy, PartialEq)]
    @@ -276,14 +236,9 @@
             match self {
                 Column::Selector(sel) => match sel {
                     Gadget::App => "q_app".to_string(),
    -                Gadget::PermutationArgument => "q_perm".to_string(),
    -                Gadget::SixteenBitsDecomposition => "q_16bits".to_string(),
    -                Gadget::BitDecompositionFrom16Bits => "q_bit_from_16bits".to_string(),
    -                Gadget::BitDecomposition => "q_bits".to_string(),
                     Gadget::EllipticCurveAddition => "q_ec_add".to_string(),
                     Gadget::EllipticCurveScaling => "q_ec_mul".to_string(),
                     Gadget::Poseidon => "q_pos".to_string(),
    -                Gadget::PoseidonNextRow => "q_pos_next_row".to_string(),
                 },
                 Column::PublicInput(i) => format!("pi_{{{i}}}").to_string(),
                 Column::X(i) => format!("x_{{{i}}}").to_string(),
    @@ -294,14 +249,9 @@
             match self {
                 Column::Selector(sel) => match sel {
                     Gadget::App => "q_app".to_string(),
    -                Gadget::PermutationArgument => "q_perm".to_string(),
    -                Gadget::SixteenBitsDecomposition => "q_16bits".to_string(),
    -                Gadget::BitDecompositionFrom16Bits => "q_bit_from_16bits".to_string(),
    -                Gadget::BitDecomposition => "q_bits".to_string(),
                     Gadget::EllipticCurveAddition => "q_ec_add".to_string(),
                     Gadget::EllipticCurveScaling => "q_ec_mul".to_string(),
    -                Gadget::Poseidon => "q_pos".to_string(),
    -                Gadget::PoseidonNextRow => "q_pos_next_row".to_string(),
    +                Gadget::Poseidon => "q_pos_next_row".to_string(),
                 },
                 Column::PublicInput(i) => format!("pi[{i}]"),
                 Column::X(i) => format!("x[{i}]"),
    diff --git a/rustdoc/src/arrabiata/constraints.rs.html b/rustdoc/src/arrabiata/constraints.rs.html
    index ee80edf7f3..1562a6ff89 100644
    --- a/rustdoc/src/arrabiata/constraints.rs.html
    +++ b/rustdoc/src/arrabiata/constraints.rs.html
    @@ -386,6 +386,10 @@
     386
     387
     388
    +389
    +390
    +391
    +392
     
    use super::{columns::Column, interpreter::InterpreterEnv};
     use crate::{
         columns::{Gadget, E},
    @@ -412,6 +416,7 @@
         pub idx_var_next_row: usize,
         pub idx_var_pi: usize,
         pub constraints: Vec<E<Fp>>,
    +    pub activated_gadget: Option<Gadget>,
     }
     
     impl<Fp: PrimeField> Env<Fp> {
    @@ -425,6 +430,7 @@
                 idx_var_next_row: 0,
                 idx_var_pi: 0,
                 constraints: Vec::new(),
    +            activated_gadget: None,
             }
         }
     }
    @@ -485,9 +491,9 @@
             res
         }
     
    -    fn activate_gadget(&mut self, _gadget: Gadget) {
    -        // Nothing to do. It is only useful for the witness.
    -    }
    +    fn activate_gadget(&mut self, gadget: Gadget) {
    +        self.activated_gadget = Some(gadget);
    +    }
     
         fn add_constraint(&mut self, constraint: Self::Variable) {
             let degree = constraint.degree(1, 0);
    @@ -540,6 +546,7 @@
             self.idx_var_next_row = 0;
             self.idx_var_pi = 0;
             self.constraints.clear();
    +        self.activated_gadget = None;
         }
     
         fn coin_folding_combiner(&mut self, pos: Self::Position) -> Self::Variable {
    @@ -713,7 +720,7 @@
         /// Get all the constraints for the IVC circuit, only.
         ///
         /// The following gadgets are used in the IVC circuit:
    -    /// - [Instruction::PoseidonNextRow] to verify the challenges and the public
    +    /// - [Instruction::Poseidon] to verify the challenges and the public
         /// IO
         /// - [Instruction::EllipticCurveScaling] and
         /// [Instruction::EllipticCurveAddition] to accumulate the commitments
    @@ -734,7 +741,7 @@
             // Poseidon constraints
             // The constraints are the same for all the value given in parameter,
             // therefore picking 0
    -        interpreter::run_ivc(&mut env, Instruction::PoseidonNextRow(0));
    +        interpreter::run_ivc(&mut env, Instruction::Poseidon(0));
             constraints.extend(env.constraints.clone());
             env.reset();
     
    @@ -758,6 +765,7 @@
         /// Get all the constraints for the IVC circuit and the application.
         // FIXME: the application should be given as an argument to handle Rust
         // zkApp. It is only for the PoC.
    +    // FIXME: the selectors are not added for now.
         pub fn get_all_constraints(&self) -> Vec<E<F>> {
             let mut constraints = self.get_all_constraints_for_ivc();
     
    diff --git a/rustdoc/src/arrabiata/interpreter.rs.html b/rustdoc/src/arrabiata/interpreter.rs.html
    index 524efab0ea..9094d5b921 100644
    --- a/rustdoc/src/arrabiata/interpreter.rs.html
    +++ b/rustdoc/src/arrabiata/interpreter.rs.html
    @@ -961,234 +961,6 @@
     961
     962
     963
    -964
    -965
    -966
    -967
    -968
    -969
    -970
    -971
    -972
    -973
    -974
    -975
    -976
    -977
    -978
    -979
    -980
    -981
    -982
    -983
    -984
    -985
    -986
    -987
    -988
    -989
    -990
    -991
    -992
    -993
    -994
    -995
    -996
    -997
    -998
    -999
    -1000
    -1001
    -1002
    -1003
    -1004
    -1005
    -1006
    -1007
    -1008
    -1009
    -1010
    -1011
    -1012
    -1013
    -1014
    -1015
    -1016
    -1017
    -1018
    -1019
    -1020
    -1021
    -1022
    -1023
    -1024
    -1025
    -1026
    -1027
    -1028
    -1029
    -1030
    -1031
    -1032
    -1033
    -1034
    -1035
    -1036
    -1037
    -1038
    -1039
    -1040
    -1041
    -1042
    -1043
    -1044
    -1045
    -1046
    -1047
    -1048
    -1049
    -1050
    -1051
    -1052
    -1053
    -1054
    -1055
    -1056
    -1057
    -1058
    -1059
    -1060
    -1061
    -1062
    -1063
    -1064
    -1065
    -1066
    -1067
    -1068
    -1069
    -1070
    -1071
    -1072
    -1073
    -1074
    -1075
    -1076
    -1077
    -1078
    -1079
    -1080
    -1081
    -1082
    -1083
    -1084
    -1085
    -1086
    -1087
    -1088
    -1089
    -1090
    -1091
    -1092
    -1093
    -1094
    -1095
    -1096
    -1097
    -1098
    -1099
    -1100
    -1101
    -1102
    -1103
    -1104
    -1105
    -1106
    -1107
    -1108
    -1109
    -1110
    -1111
    -1112
    -1113
    -1114
    -1115
    -1116
    -1117
    -1118
    -1119
    -1120
    -1121
    -1122
    -1123
    -1124
    -1125
    -1126
    -1127
    -1128
    -1129
    -1130
    -1131
    -1132
    -1133
    -1134
    -1135
    -1136
    -1137
    -1138
    -1139
    -1140
    -1141
    -1142
    -1143
    -1144
    -1145
    -1146
    -1147
    -1148
    -1149
    -1150
    -1151
    -1152
    -1153
    -1154
    -1155
    -1156
    -1157
    -1158
    -1159
    -1160
    -1161
    -1162
    -1163
    -1164
    -1165
    -1166
    -1167
    -1168
    -1169
    -1170
    -1171
    -1172
    -1173
    -1174
    -1175
    -1176
    -1177
    -1178
    -1179
    -1180
    -1181
    -1182
    -1183
    -1184
    -1185
    -1186
    -1187
    -1188
    -1189
    -1190
    -1191
     
    //! This module contains the implementation of the IVC scheme in addition to
     //! running an arbitrary function that can use up to [crate::NUMBER_OF_COLUMNS]
     //! columns.
    @@ -1216,7 +988,6 @@
     //!     - [Gadget layout](#gadget-layout-1)
     //!   - [Elliptic curve scalar multiplication](#elliptic-curve-scalar-multiplication)
     //!     - [Gadget layout](#gadget-layout-2)
    -//!   - [Bit composition instruction](#bit-composition-instruction)
     //! - [Handle the combinaison of constraints](#handle-the-combinaison-of-constraints)
     //! - [Permutation argument](#permutation-argument)
     //! - [Fiat-Shamir challenges](#fiat-shamir-challenges)
    @@ -1401,28 +1172,6 @@
     //! Circuits](https://github.com/o1-labs/rfcs/blob/main/0013-efficient-msms-for-non-native-pickles-verification.md).
     //! We leave this for future work.
     //!
    -//! ### Bit composition instruction (deprecated)
    -//!
    -//! Decomposing a 255 bits value into bits can also be done using
    -//! [NUMBER_OF_COLUMNS] columns and [BIT_DECOMPOSITION_NUMBER_OF_CHUNKS] rows
    -//! without lookups using the following layout:
    -//!
    -//! ```text
    -//! | C1 | C2 | C3 | C4 | C5 | C6 | C7 | C8 | C9 | C10 | C11 | C12 | C13 | C14 | C15 | C16 | C17 |
    -//! | y  | x  | b0 | b1 | b2 | b3 | b4 | b5 | b6 | b7  | b8  | b9  | b10 | b11 | b12 | b13 | b14 |
    -//! | -- | -- | -- | -- | -- | -- | -- | -- | -- | --- | --- | --- | --- | --- | --- | --- | --- |
    -//! | x0 | x  | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -//! | x1 | x0 | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -//! | x2 | x1 | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -//! | .. | .. | .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -//! | x16| x15| .. | .. | .. | .. | .. | .. | .. | ... | ... | ... | ... | ... | ... | ... | ... |
    -//! ```
    -//!
    -//! where:
    -//! - `x` is the input value                            14
    -//! - for each row `i`, we have `x_i = x_{i - 1} << 15 - Σ  2^j b_{i * 15 + j}`
    -//! - `b_i` is the i-th bit of the input value          j=0
    -//!
     //! ## Handle the combinaison of constraints
     //!
     //! The prover will have to combine the constraints to generate the
    @@ -1552,12 +1301,11 @@
     //! there.
     
     use crate::{
    -    columns::Gadget, BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK,
    -    BIT_DECOMPOSITION_NUMBER_OF_CHUNKS, MAXIMUM_FIELD_SIZE_IN_BITS, NUMBER_OF_COLUMNS,
    -    POSEIDON_ROUNDS_FULL, POSEIDON_STATE_SIZE,
    +    columns::Gadget, MAXIMUM_FIELD_SIZE_IN_BITS, NUMBER_OF_COLUMNS, POSEIDON_ROUNDS_FULL,
    +    POSEIDON_STATE_SIZE,
     };
     use ark_ff::{One, Zero};
    -use log::{debug, error};
    +use log::debug;
     use num_bigint::BigInt;
     
     /// A list of instruction/gadget implemented in the interpreter.
    @@ -1578,31 +1326,13 @@
     /// typed control-flow. We leave this for future work.
     #[derive(Copy, Clone, Debug)]
     pub enum Instruction {
    -    /// This gadget decomposes a 255 bits value into bits using 17 lines and 17
    -    /// columns. The constructor parameter is the line number.
    -    BitDecomposition(usize),
    -    /// Decompose a 255 bits scalar into 16 chunks of 16 bits.
    -    // FIXME: use the permutation argument, the "next row" or deprecate it.
    -    // For now, the gadget is deprecated and should not be used.
    -    SixteenBitsDecomposition,
    -    /// Decompose a 16bits chunk into individual bits. The constructor parameter
    -    /// is the index of the chunk (it is supposed to be less than 16, as there
    -    /// are 16 chunks of 16 bits for a 255 bits scalar).
    -    // FIXME: use the permutation argument, the "next row" or deprecate it.
    -    // For now, the gadget is deprecated and should not be used.
    -    BitDecompositionFrom16Bits(usize),
    -    /// This gadget implement the Poseidon hash instance described in the
    -    /// top-level documentation. The implementation does not use the "next row"
    -    /// and is unsafe at the moment as no permutation argument is implemented.
    -    // FIXME: use the permutation argument or deprecate it.
    -    Poseidon(usize),
         /// This gadget implement the Poseidon hash instance described in the
         /// top-level documentation. Compared to the previous one (that might be
         /// deprecated in the future), this implementation does use the "next row"
         /// to allow the computation of one additional round per row. In the current
         /// setup, with [NUMBER_OF_COLUMNS] columns, we can compute 5 full rounds
         /// per row.
    -    PoseidonNextRow(usize),
    +    Poseidon(usize),
         EllipticCurveScaling(usize, u64),
         EllipticCurveAddition(usize),
         // The NoOp will simply do nothing
    @@ -1898,124 +1628,6 @@
     /// resulting constraints must be multiplied by the corresponding selectors.
     pub fn run_ivc<E: InterpreterEnv>(env: &mut E, instr: Instruction) {
         match instr {
    -        Instruction::SixteenBitsDecomposition => {
    -            error!("This gadget is outdated. You should not use it");
    -            env.activate_gadget(Gadget::SixteenBitsDecomposition);
    -            // Decompositing the random coin in chunks of 16 bits. One row.
    -            // FIXME: verify the combiner is correctly returned from the sponge.
    -            let r = {
    -                let pos = env.allocate();
    -                env.coin_folding_combiner(pos)
    -            };
    -            let decomposition_16bits: Vec<E::Variable> = (0..16)
    -                .map(|i| {
    -                    let pos = env.allocate();
    -                    env.range_check16(pos);
    -                    unsafe { env.bitmask_be(&r, (i + 1) * 16, i * 16, pos) }
    -                })
    -                .collect();
    -
    -            let cstr = decomposition_16bits
    -                .iter()
    -                .enumerate()
    -                .fold(r, |acc, (i, x)| {
    -                    acc - env.constant(BigInt::from(1_usize) << (i * 16)) * x.clone()
    -                });
    -            env.assert_zero(cstr);
    -        }
    -        Instruction::BitDecompositionFrom16Bits(i) => {
    -            error!("This gadget is outdated. You should not use it");
    -            env.activate_gadget(Gadget::BitDecompositionFrom16Bits);
    -            if i < 16 {
    -                // FIXME: simulate a RW into a memory cell. Not necessarily
    -                // constrained?
    -                let sixteen_i = {
    -                    let pos = env.allocate();
    -                    unsafe { env.read_sixteen_bits_chunks_folding_combiner(pos, i as u32) }
    -                };
    -                let bit_decompo: Vec<E::Variable> = (0..16)
    -                    .map(|j| {
    -                        let pos = env.allocate();
    -                        unsafe { env.bitmask_be(&sixteen_i, (j + 1) as u32, j as u32, pos) }
    -                    })
    -                    .collect();
    -
    -                // Contrain to be one or zero
    -                bit_decompo
    -                    .iter()
    -                    .for_each(|x| env.constrain_boolean(x.clone()));
    -
    -                let cstr = bit_decompo
    -                    .iter()
    -                    .enumerate()
    -                    .fold(sixteen_i, |acc, (i, x)| {
    -                        acc - env.constant(BigInt::from(1_usize) << i) * x.clone()
    -                    });
    -                env.assert_zero(cstr);
    -            } else {
    -                panic!("Invalid index: it is supposed to be less than 16 as we fetch 16 chunks of 16bits.");
    -            }
    -        }
    -        Instruction::BitDecomposition(i) => {
    -            env.activate_gadget(Gadget::BitDecomposition);
    -            assert!(
    -                i < BIT_DECOMPOSITION_NUMBER_OF_CHUNKS,
    -                "Bit decomposition is on {BIT_DECOMPOSITION_NUMBER_OF_CHUNKS} rows"
    -            );
    -            // Decompositing the random coin in chunks of 15 bits.
    -            // Step i is the decomposition of the bits between 15 * i and 15 * (i + 1).
    -            // We make a constraint for each bit and we check that the sum of the
    -            // bits is equal to the previous value.
    -            let pos_x0 = env.allocate();
    -            let pos_x1 = env.allocate();
    -            // Temporary variable
    -            // FIXME: use `load/save` to fetch the previous value
    -            let r = env.coin_folding_combiner(pos_x0);
    -            // previous value
    -            let x0 = unsafe {
    -                env.bitmask_be(
    -                    &r,
    -                    MAXIMUM_FIELD_SIZE_IN_BITS.try_into().unwrap(),
    -                    (BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK * i)
    -                        .try_into()
    -                        .unwrap(),
    -                    pos_x0,
    -                )
    -            };
    -            // new value
    -            let x1 = unsafe {
    -                env.bitmask_be(
    -                    &r,
    -                    MAXIMUM_FIELD_SIZE_IN_BITS.try_into().unwrap(),
    -                    (BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK * (i + 1))
    -                        .try_into()
    -                        .unwrap(),
    -                    pos_x1,
    -                )
    -            };
    -            let bits: Vec<E::Variable> = (0..BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK)
    -                .map(|j| {
    -                    let pos = env.allocate();
    -                    let bit = unsafe {
    -                        env.bitmask_be(&x0, (j + 1).try_into().unwrap(), j.try_into().unwrap(), pos)
    -                    };
    -                    env.constrain_boolean(bit.clone());
    -                    bit
    -                })
    -                .collect();
    -            let rhs = bits.iter().enumerate().fold(env.zero(), |acc, (j, b)| {
    -                acc + env.constant(BigInt::from(1_usize) << j) * b.clone()
    -            });
    -            // x0 = x1 + \sum_{j=0}^{14} 2^j b_j
    -            env.assert_equal(
    -                x0,
    -                x1.clone()
    -                    * env.constant(
    -                        BigInt::from(1_usize) << BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK,
    -                    )
    -                    + rhs,
    -            );
    -        }
             Instruction::EllipticCurveScaling(i_comm, processing_bit) => {
                 assert!(processing_bit < MAXIMUM_FIELD_SIZE_IN_BITS, "Invalid bit index. The fields are maximum on {MAXIMUM_FIELD_SIZE_IN_BITS} bits, therefore we cannot process the bit {processing_bit}");
                 assert!(i_comm < NUMBER_OF_COLUMNS, "Invalid index. We do only support the scaling of the commitments to the columns, for now. We must additionally support the scaling of cross-terms and error terms");
    @@ -2023,10 +1635,7 @@
                 env.activate_gadget(Gadget::EllipticCurveScaling);
                 // When processing the first bit, we must load the scalar, and it
                 // comes from previous computation.
    -            if processing_bit == 0 {
    -                env.activate_gadget(Gadget::PermutationArgument);
    -            }
    -            // The two first columns are supposed to be used for the output.
    +            // The two first columns are supposed to be used for the output.
                 // It will be used to write the result of the scalar multiplication
                 // in the next row.
                 let res_col_x = env.allocate();
    @@ -2167,7 +1776,6 @@
                 };
             }
             Instruction::EllipticCurveAddition(i_comm) => {
    -            env.activate_gadget(Gadget::PermutationArgument);
                 env.activate_gadget(Gadget::EllipticCurveAddition);
                 assert!(i_comm < NUMBER_OF_COLUMNS, "Invalid index. We do only support the addition of the commitments to the columns, for now. We must additionally support the scaling of cross-terms and error terms");
                 let (x1, y1) = {
    @@ -2211,67 +1819,8 @@
                 };
             }
             Instruction::Poseidon(curr_round) => {
    -            env.activate_gadget(Gadget::PermutationArgument);
                 env.activate_gadget(Gadget::Poseidon);
                 debug!("Executing instruction Poseidon({curr_round})");
    -            if curr_round < POSEIDON_ROUNDS_FULL {
    -                let values_to_absorb: Vec<E::Variable> = (0..POSEIDON_STATE_SIZE - 1)
    -                    .map(|_i| {
    -                        let pos = env.allocate_public_input();
    -                        unsafe { env.fetch_value_to_absorb(pos, curr_round) }
    -                    })
    -                    .collect();
    -                let state: Vec<E::Variable> = (0..POSEIDON_STATE_SIZE)
    -                    .map(|i| {
    -                        let pos = env.allocate();
    -                        let res = env.load_poseidon_state(pos, i);
    -                        // Absorb value
    -                        if i < POSEIDON_STATE_SIZE - 1 {
    -                            res + values_to_absorb[i].clone()
    -                        } else {
    -                            res
    -                        }
    -                    })
    -                    .collect();
    -
    -                let state = (0..4).fold(state, |state, i| {
    -                    let state: Vec<E::Variable> =
    -                        state.iter().map(|x| env.compute_x5(x.clone())).collect();
    -
    -                    let round = curr_round + i;
    -
    -                    let rcs: Vec<E::Variable> = (0..POSEIDON_STATE_SIZE)
    -                        .map(|i| {
    -                            let pos = env.allocate_public_input();
    -                            env.get_poseidon_round_constant(pos, round, i)
    -                        })
    -                        .collect();
    -
    -                    let state: Vec<E::Variable> = rcs
    -                        .iter()
    -                        .enumerate()
    -                        .map(|(i, rc)| {
    -                            let pos = env.allocate();
    -                            let acc: E::Variable =
    -                                state.iter().enumerate().fold(env.zero(), |acc, (j, x)| {
    -                                    acc + env.get_poseidon_mds_matrix(i, j) * x.clone()
    -                                });
    -                            env.write_column(pos, acc + rc.clone())
    -                        })
    -                        .collect();
    -                    state
    -                });
    -
    -                state.iter().enumerate().for_each(|(i, x)| {
    -                    unsafe { env.save_poseidon_state(x.clone(), i) };
    -                })
    -            } else {
    -                panic!("Invalid index: it is supposed to be less than {POSEIDON_ROUNDS_FULL}");
    -            }
    -        }
    -        Instruction::PoseidonNextRow(curr_round) => {
    -            env.activate_gadget(Gadget::PoseidonNextRow);
    -            debug!("Executing instruction PoseidonNextRow({curr_round})");
                 if curr_round < POSEIDON_ROUNDS_FULL {
                     // Values to be absorbed are 0 when when the round is not zero,
                     // i.e. when we are processing the rounds.
    @@ -2293,7 +1842,6 @@
                     // calls, like when we need to hash the public inputs, and the
                     // state might be from a previous place in the execution trace.
                     let state: Vec<E::Variable> = if curr_round == 0 {
    -                    env.activate_gadget(Gadget::PermutationArgument);
                         round_input_positions
                             .iter()
                             .enumerate()
    @@ -2353,16 +1901,12 @@
                             .collect();
                         // If we are at the last round, we save the state in the
                         // environment.
    -                    // It does require the permutation argument to be activated.
    -                    // FIXME: activating the permutation argument has no effect
    -                    // for now.
                         // FIXME/IMPROVEME: we might want to execute more Poseidon
                         // full hash in sequentially, and then save one row. For
                         // now, we will save the state at the end of the last round
                         // and reload it at the beginning of the next Poseidon full
                         // hash.
                         if round == POSEIDON_ROUNDS_FULL - 1 {
    -                        env.activate_gadget(Gadget::PermutationArgument);
                             state.iter().enumerate().for_each(|(i, x)| {
                                 unsafe { env.save_poseidon_state(x.clone(), i) };
                             });
    diff --git a/rustdoc/src/arrabiata/lib.rs.html b/rustdoc/src/arrabiata/lib.rs.html
    index 4271526b75..5195c14e70 100644
    --- a/rustdoc/src/arrabiata/lib.rs.html
    +++ b/rustdoc/src/arrabiata/lib.rs.html
    @@ -65,12 +65,6 @@
     65
     66
     67
    -68
    -69
    -70
    -71
    -72
    -73
     
    use strum::EnumCount as _;
     
     pub mod column_env;
    @@ -98,11 +92,11 @@
     pub const IVC_CIRCUIT_SIZE: usize = 1 << 13;
     
     /// The maximum number of columns that can be used in the circuit.
    -pub const NUMBER_OF_COLUMNS: usize = 17;
    +pub const NUMBER_OF_COLUMNS: usize = 15;
     
     /// The maximum number of public inputs the circuit can use per row
     /// We do have 15 for now as we want to compute 5 rounds of poseidon per row
    -/// using the gadget [crate::columns::Gadget::PoseidonNextRow]. In addition to
    +/// using the gadget [crate::columns::Gadget::Poseidon]. In addition to
     /// the 12 public inputs required for the rounds, we add 2 more for the values
     /// to absorb.
     pub const NUMBER_OF_PUBLIC_INPUTS: usize = 15 + 2;
    @@ -136,12 +130,6 @@
     /// circuit.
     pub const NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO: usize = NUMBER_OF_COLUMNS * 2;
     
    -/// The number of bits per chunk in the bit decomposition.
    -/// It is used to decompose the field elements of 255 bits into single bit.
    -/// We use 17 rows of 15 bits decomposition.
    -pub const BIT_DECOMPOSITION_NUMBER_OF_BITS_PER_CHUNK: usize = 15;
    -pub const BIT_DECOMPOSITION_NUMBER_OF_CHUNKS: usize = 17;
    -
     /// The number of selectors used in the circuit.
     pub const NUMBER_OF_SELECTORS: usize = columns::Gadget::COUNT;
     
    \ No newline at end of file diff --git a/rustdoc/src/arrabiata/witness.rs.html b/rustdoc/src/arrabiata/witness.rs.html index 92fd00f38c..09ec1cb787 100644 --- a/rustdoc/src/arrabiata/witness.rs.html +++ b/rustdoc/src/arrabiata/witness.rs.html @@ -1084,67 +1084,6 @@ 1084 1085 1086 -1087 -1088 -1089 -1090 -1091 -1092 -1093 -1094 -1095 -1096 -1097 -1098 -1099 -1100 -1101 -1102 -1103 -1104 -1105 -1106 -1107 -1108 -1109 -1110 -1111 -1112 -1113 -1114 -1115 -1116 -1117 -1118 -1119 -1120 -1121 -1122 -1123 -1124 -1125 -1126 -1127 -1128 -1129 -1130 -1131 -1132 -1133 -1134 -1135 -1136 -1137 -1138 -1139 -1140 -1141 -1142 -1143 -1144 -1145 -1146 -1147
    use ark_ec::{models::short_weierstrass::SWCurveConfig, AffineRepr};
     use ark_ff::PrimeField;
     use ark_poly::Evaluations;
    @@ -1160,10 +1099,9 @@
     use crate::{
         columns::{Column, Gadget},
         interpreter::{Instruction, InterpreterEnv, Side},
    -    poseidon_3_60_0_5_5_fp, poseidon_3_60_0_5_5_fq, BIT_DECOMPOSITION_NUMBER_OF_CHUNKS,
    -    MAXIMUM_FIELD_SIZE_IN_BITS, NUMBER_OF_COLUMNS, NUMBER_OF_PUBLIC_INPUTS, NUMBER_OF_SELECTORS,
    -    NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO, POSEIDON_ALPHA, POSEIDON_ROUNDS_FULL,
    -    POSEIDON_STATE_SIZE,
    +    poseidon_3_60_0_5_5_fp, poseidon_3_60_0_5_5_fq, MAXIMUM_FIELD_SIZE_IN_BITS, NUMBER_OF_COLUMNS,
    +    NUMBER_OF_PUBLIC_INPUTS, NUMBER_OF_SELECTORS, NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO,
    +    POSEIDON_ALPHA, POSEIDON_ROUNDS_FULL, POSEIDON_STATE_SIZE,
     };
     
     pub const IVC_STARTING_INSTRUCTION: Instruction = Instruction::Poseidon(0);
    @@ -1558,10 +1496,6 @@
         }
     
         fn load_poseidon_state(&mut self, pos: Self::Position, i: usize) -> Self::Variable {
    -        assert!(
    -            self.selectors[Gadget::PermutationArgument as usize][self.current_row],
    -            "The permutation argument should be activated"
    -        );
             let state = if self.current_iteration % 2 == 0 {
                 self.sponge_e1[i].clone()
             } else {
    @@ -1601,10 +1535,6 @@
         }
     
         unsafe fn save_poseidon_state(&mut self, x: Self::Variable, i: usize) {
    -        assert!(
    -            self.selectors[Gadget::PermutationArgument as usize][self.current_row],
    -            "The permutation argument should be activated"
    -        );
             if self.current_iteration % 2 == 0 {
                 let modulus: BigInt = Fp::modulus_biguint().into();
                 self.sponge_e1[i] = x.mod_floor(&modulus)
    @@ -1679,10 +1609,6 @@
             pos_y: Self::Position,
             side: Side,
         ) -> (Self::Variable, Self::Variable) {
    -        assert!(
    -            self.selectors[Gadget::PermutationArgument as usize][self.current_row],
    -            "The permutation argument should be activated"
    -        );
             match self.current_instruction {
                 Instruction::EllipticCurveScaling(i_comm, bit) => {
                     // If we're processing the leftmost bit (i.e. bit == 0), we must load
    @@ -1787,10 +1713,6 @@
             y: Self::Variable,
             side: Side,
         ) {
    -        assert!(
    -            self.selectors[Gadget::PermutationArgument as usize][self.current_row],
    -            "The permutation argument should be activated"
    -        );
             match side {
                 Side::Left => {
                     self.temporary_accumulators.0 = (x, y);
    @@ -2212,56 +2134,12 @@
         /// ```
         pub fn fetch_next_instruction(&mut self) -> Instruction {
             match self.current_instruction {
    -            Instruction::SixteenBitsDecomposition => Instruction::BitDecompositionFrom16Bits(0),
    -            Instruction::BitDecomposition(i) => {
    -                if i < BIT_DECOMPOSITION_NUMBER_OF_CHUNKS - 1 {
    -                    Instruction::BitDecomposition(i + 1)
    -                } else {
    -                    Instruction::EllipticCurveScaling(0, 0)
    -                }
    -            }
                 Instruction::Poseidon(i) => {
    -                if i < POSEIDON_ROUNDS_FULL - 4 {
    -                    // We perform 4 rounds per row
    -                    // FIXME: we can do 5 by using the "next row", see
    -                    // PoseidonNextRow
    -                    Instruction::Poseidon(i + 4)
    -                } else {
    -                    // If we absorbed all the elements, we go to the next instruction
    -                    // In this case, it is the decomposition of the folding combiner
    -                    // FIXME: it is not the correct next instruction.
    -                    // We must check the computed value is the one given as a
    -                    // public input.
    -                    if self.idx_values_to_absorb >= NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO {
    -                        Instruction::BitDecomposition(0)
    -                    } else {
    -                        // Otherwise, we continue absorbing
    -                        Instruction::Poseidon(0)
    -                    }
    -                }
    -            }
    -            Instruction::PoseidonNextRow(i) => {
                     if i < POSEIDON_ROUNDS_FULL - 5 {
    -                    Instruction::PoseidonNextRow(i + 5)
    -                } else {
    -                    // If we absorbed all the elements, we go to the next instruction
    -                    // In this case, it is the decomposition of the folding combiner
    -                    // FIXME: it is not the correct next instruction.
    -                    // We must check the computed value is the one given as a
    -                    // public input.
    -                    if self.idx_values_to_absorb >= NUMBER_OF_VALUES_TO_ABSORB_PUBLIC_IO {
    -                        Instruction::BitDecomposition(0)
    -                    } else {
    -                        // Otherwise, we continue absorbing
    -                        Instruction::PoseidonNextRow(0)
    -                    }
    -                }
    -            }
    -            Instruction::BitDecompositionFrom16Bits(i) => {
    -                if i < 15 {
    -                    Instruction::BitDecompositionFrom16Bits(i + 1)
    +                    Instruction::Poseidon(i + 5)
                     } else {
    -                    Instruction::Poseidon(0)
    +                    // FIXME: we continue absorbing
    +                    Instruction::Poseidon(0)
                     }
                 }
                 Instruction::EllipticCurveScaling(i_comm, bit) => {