diff --git a/rustdoc/help.html b/rustdoc/help.html index 5f6a6e11c2..20c79678f5 100644 --- a/rustdoc/help.html +++ b/rustdoc/help.html @@ -1 +1 @@ -
pub struct GenericEvalEnv<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Eval: CombinableEvals<Curve::ScalarField>> {
+GenericEvalEnv in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericEvalEnv
source · pub struct GenericEvalEnv<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Eval: CombinableEvals<Curve::ScalarField>> {
pub ext_witness: ExtendedWitness<Curve, PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Eval>>,
pub alphas: Alphas<Curve::ScalarField>,
pub challenges: [Curve::ScalarField; 3],
@@ -6,7 +6,7 @@
pub u: Curve::ScalarField,
}
Expand description
Minimal environment needed for evaluating constraints.
Fields§
§ext_witness: ExtendedWitness<Curve, PlonkishWitnessGeneric<N_COL, N_FSEL, Curve::ScalarField, Eval>>
§alphas: Alphas<Curve::ScalarField>
§challenges: [Curve::ScalarField; 3]
§error_vec: Eval
§u: Curve::ScalarField
The scalar u
that is used to homogenize the polynomials
-Implementations§
source§impl<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Evals: CombinableEvals<Curve::ScalarField>> GenericEvalEnv<Curve, N_COL, N_FSEL, Evals>
sourcepub fn process_extended_folding_column<FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
+
Implementations§
source§impl<Curve: KimchiCurve, const N_COL: usize, const N_FSEL: usize, Evals: CombinableEvals<Curve::ScalarField>> GenericEvalEnv<Curve, N_COL, N_FSEL, Evals>
sourcepub fn process_extended_folding_column<FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
&self,
col: &ExtendedFoldingColumn<FC>
) -> EvalLeaf<'_, Curve::ScalarField>
sourcepub fn eval_naive_fexpr<'a, FC: FoldingConfig<Column = GenericColumn, Curve = Curve, Challenge = PlonkishChallenge>>(
diff --git a/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html b/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
index 2cf74a0a19..0aa3abaabd 100644
--- a/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
+++ b/rustdoc/ivc/expr_eval/struct.GenericVecStructure.html
@@ -1,6 +1,6 @@
-GenericVecStructure in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericVecStructure
source · pub struct GenericVecStructure<G: KimchiCurve>(pub Vec<Vec<G::ScalarField>>);
Expand description
Generic structure containing column vectors.
-Tuple Fields§
§0: Vec<Vec<G::ScalarField>>
Trait Implementations§
source§impl<G: Clone + KimchiCurve> Clone for GenericVecStructure<G>where
- G::ScalarField: Clone,
source§fn clone(&self) -> GenericVecStructure<G>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moreAuto Trait Implementations§
§impl<G> RefUnwindSafe for GenericVecStructure<G>where
+GenericVecStructure in ivc::expr_eval - Rust Struct ivc::expr_eval::GenericVecStructure
source · pub struct GenericVecStructure<G: KimchiCurve>(pub Vec<Vec<G::ScalarField>>);
Expand description
Generic structure containing column vectors.
+Tuple Fields§
§0: Vec<Vec<G::ScalarField>>
Trait Implementations§
Auto Trait Implementations§
§impl<G> RefUnwindSafe for GenericVecStructure<G>where
<G as AffineRepr>::ScalarField: RefUnwindSafe,
§impl<G> Send for GenericVecStructure<G>
§impl<G> Sync for GenericVecStructure<G>
§impl<G> Unpin for GenericVecStructure<G>where
<G as AffineRepr>::ScalarField: Unpin,
§impl<G> UnwindSafe for GenericVecStructure<G>where
<G as AffineRepr>::ScalarField: UnwindSafe,
Blanket Implementations§
source§impl<T> Any for Twhere
diff --git a/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html b/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
index 9903cc2ae8..7a9f2a05c1 100644
--- a/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
+++ b/rustdoc/ivc/ivc/lookups/enum.IVCLookupTable.html
@@ -12,7 +12,7 @@
relation) columns, and no extra columns should be added. Read more
source§fn all_variants() -> Vec<Self>
§fn to_constraint<F>(
&self
-) -> Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column>>where
+) -> Operations<ExprInner<Operations<ConstantExprInner<F, BerkeleyChallengeTerm>>, Column>>where
F: Field,
Assign a unique ID to the lookup tables, as an expression.source§impl<Ff: Ord> Ord for IVCLookupTable<Ff>
source§fn cmp(&self, other: &IVCLookupTable<Ff>) -> Ordering
1.21.0 · source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more1.21.0 · source§fn min(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the minimum of two values. Read more1.50.0 · source§fn clamp(self, min: Self, max: Self) -> Selfwhere
diff --git a/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html b/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
index 65796d4260..853ea411ae 100644
--- a/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
+++ b/rustdoc/ivc/plonkish_lang/enum.PlonkishChallenge.html
@@ -2,7 +2,7 @@
Beta,
Gamma,
JointCombiner,
-}Variants§
Trait Implementations§
source§impl Clone for PlonkishChallenge
source§fn clone(&self) -> PlonkishChallenge
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PlonkishChallenge
source§impl From<BerkeleyChallengeTerm> for PlonkishChallenge
source§fn from(chal: BerkeleyChallengeTerm) -> Self
Converts to this type from the input type.source§impl Hash for PlonkishChallenge
1.3.0 · source§fn hash_slice<H>(data: &[Self], state: &mut H)where
+}Variants§
Trait Implementations§
source§impl Clone for PlonkishChallenge
source§fn clone(&self) -> PlonkishChallenge
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl Debug for PlonkishChallenge
source§impl From<BerkeleyChallengeTerm> for PlonkishChallenge
source§impl Hash for PlonkishChallenge
source§impl<G: CommitmentCurve, const N_COL: usize, const N_ALPHAS: usize> Index<PlonkishChallenge> for PlonkishInstance<G, N_COL, 3, N_ALPHAS>
source§impl IntoEnumIterator for PlonkishChallenge
§type Iterator = PlonkishChallengeIter
source§fn iter() -> PlonkishChallengeIter ⓘ
source§impl PartialEq<PlonkishChallenge> for PlonkishChallenge
source§fn eq(&self, other: &PlonkishChallenge) -> 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
diff --git a/rustdoc/ivc/prover/fn.prove.html b/rustdoc/ivc/prover/fn.prove.html
index 79e9fa9986..e0bf3cdb3a 100644
--- a/rustdoc/ivc/prover/fn.prove.html
+++ b/rustdoc/ivc/prover/fn.prove.html
@@ -1,5 +1,5 @@
-prove in ivc::prover - Rust pub fn prove<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, RNG, const N_WIT: usize, const N_WIT_QUAD: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const N_ALPHAS: usize>(
- domain: EvaluationDomains<Fp>,
+prove in ivc::prover - Rust pub fn prove<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, RNG, const N_WIT: usize, const N_WIT_QUAD: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const N_ALPHAS: usize>(
+ domain: EvaluationDomains<Fp>,
srs: &PairingSRS<Pairing>,
combined_expr: &FoldingCompatibleExpr<FC>,
folded_instance: RelaxedInstance<G, PlonkishInstance<G, N_WIT, 3, N_ALPHAS>>,
diff --git a/rustdoc/ivc/prover/struct.Proof.html b/rustdoc/ivc/prover/struct.Proof.html
index 4f6e5c8753..dac74d4c53 100644
--- a/rustdoc/ivc/prover/struct.Proof.html
+++ b/rustdoc/ivc/prover/struct.Proof.html
@@ -1,12 +1,12 @@
-Proof in ivc::prover - Rust pub struct Proof<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: KimchiCurve, OpeningProof: OpenProof<G>> {
+Proof in ivc::prover - Rust pub struct Proof<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G: KimchiCurve, OpeningProof: OpenProof<G>> {
pub proof_comms: ProofCommitments<N_WIT, G>,
pub proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>,
pub opening_proof: OpeningProof,
pub alphas: Alphas<G::ScalarField>,
pub challenges: [G::ScalarField; 3],
pub u: G::ScalarField,
-}
Fields§
§proof_comms: ProofCommitments<N_WIT, G>
§proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>
§opening_proof: OpeningProof
§alphas: Alphas<G::ScalarField>
§challenges: [G::ScalarField; 3]
§u: G::ScalarField
Trait Implementations§
source§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
- G::ScalarField: Clone,
source§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
+}Fields§
§proof_comms: ProofCommitments<N_WIT, G>
§proof_evals: ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, G::ScalarField>
§opening_proof: OpeningProof
§alphas: Alphas<G::ScalarField>
§challenges: [G::ScalarField; 3]
§u: G::ScalarField
Trait Implementations§
source§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
+ G::ScalarField: Clone,
Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, G, OpeningProof> RefUnwindSafe for Proof<N_WIT, N_REL, N_DSEL, N_FSEL, G, OpeningProof>where
G: RefUnwindSafe,
OpeningProof: RefUnwindSafe,
diff --git a/rustdoc/ivc/prover/struct.ProofCommitments.html b/rustdoc/ivc/prover/struct.ProofCommitments.html
index c23bf8f922..f37e6859d4 100644
--- a/rustdoc/ivc/prover/struct.ProofCommitments.html
+++ b/rustdoc/ivc/prover/struct.ProofCommitments.html
@@ -1,11 +1,11 @@
-ProofCommitments in ivc::prover - Rust Struct ivc::prover::ProofCommitments
source · pub struct ProofCommitments<const N_WIT: usize, G: KimchiCurve> {
+ProofCommitments in ivc::prover - Rust Struct ivc::prover::ProofCommitments
source · pub struct ProofCommitments<const N_WIT: usize, G: KimchiCurve> {
pub witness_comms: Witness<N_WIT, PolyComm<G>>,
pub t_comm: PolyComm<G>,
}
Fields§
§witness_comms: Witness<N_WIT, PolyComm<G>>
Commitments to the N columns of the circuits, also called the ‘witnesses’.
If some columns are considered as public inputs, it is counted in the witness.
§t_comm: PolyComm<G>
Commitments to the quotient polynomial.
The value contains the chunked polynomials.
-Trait Implementations§
source§impl<const N_WIT: usize, G: Clone + KimchiCurve> Clone for ProofCommitments<N_WIT, G>
source§fn clone(&self) -> ProofCommitments<N_WIT, G>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moreAuto Trait Implementations§
§impl<const N_WIT: usize, G> RefUnwindSafe for ProofCommitments<N_WIT, G>where
+
Trait Implementations§
Auto Trait Implementations§
§impl<const N_WIT: usize, G> RefUnwindSafe for ProofCommitments<N_WIT, G>where
G: RefUnwindSafe,
§impl<const N_WIT: usize, G> Send for ProofCommitments<N_WIT, G>
§impl<const N_WIT: usize, G> Sync for ProofCommitments<N_WIT, G>
§impl<const N_WIT: usize, G> Unpin for ProofCommitments<N_WIT, G>where
G: Unpin,
§impl<const N_WIT: usize, G> UnwindSafe for ProofCommitments<N_WIT, G>where
G: UnwindSafe,
Blanket Implementations§
source§impl<T> Any for Twhere
diff --git a/rustdoc/ivc/prover/struct.ProofEvaluations.html b/rustdoc/ivc/prover/struct.ProofEvaluations.html
index 941f45f0ae..b3bf2c3b44 100644
--- a/rustdoc/ivc/prover/struct.ProofEvaluations.html
+++ b/rustdoc/ivc/prover/struct.ProofEvaluations.html
@@ -1,18 +1,18 @@
ProofEvaluations in ivc::prover - Rust Struct ivc::prover::ProofEvaluations
source · pub struct ProofEvaluations<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> {
- pub witness_evals: Witness<N_WIT, PointEvaluations<F>>,
- pub fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>,
- pub error_vec: PointEvaluations<F>,
+ pub witness_evals: Witness<N_WIT, PointEvaluations<F>>,
+ pub fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>,
+ pub error_vec: PointEvaluations<F>,
pub ft_eval1: F,
-}
Fields§
§witness_evals: Witness<N_WIT, PointEvaluations<F>>
Witness evaluations, including public inputs
-§fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>
Evaluations of fixed selectors.
-§error_vec: PointEvaluations<F>
§ft_eval1: F
Evaluation of Z_H(ζ) (t_0(X) + ζ^n t_1(X) + …) at ζω.
-Trait Implementations§
source§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>
source§fn clone(&self) -> ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> ColumnEvaluations<F> for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
The trait ColumnEvaluations is used by the verifier.
+}
Fields§
§witness_evals: Witness<N_WIT, PointEvaluations<F>>
Witness evaluations, including public inputs
+§fixed_selectors_evals: Box<[PointEvaluations<F>; N_FSEL]>
Evaluations of fixed selectors.
+§error_vec: PointEvaluations<F>
§ft_eval1: F
Evaluation of Z_H(ζ) (t_0(X) + ζ^n t_1(X) + …) at ζω.
+Trait Implementations§
source§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>
source§fn clone(&self) -> ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
Returns a copy of the value. Read more1.0.0 · source§fn clone_from(&mut self, source: &Self)
Performs copy-assignment from source
. Read moresource§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F: Clone> ColumnEvaluations<F> for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>
The trait ColumnEvaluations is used by the verifier.
It will return the evaluation of the corresponding column at the
evaluation points coined by the verifier during the protocol.
-Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> RefUnwindSafe for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
+ col: Self::Column
+) -> Result<PointEvaluations<F>, ExprError<Self::Column>>
Auto Trait Implementations§
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> RefUnwindSafe for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: RefUnwindSafe,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Send for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: Send,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Sync for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
F: Sync,
§impl<const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, F> Unpin for ProofEvaluations<N_WIT, N_REL, N_DSEL, N_FSEL, F>where
diff --git a/rustdoc/ivc/verifier/fn.verify.html b/rustdoc/ivc/verifier/fn.verify.html
index e6492eb4d8..9e28d8fb01 100644
--- a/rustdoc/ivc/verifier/fn.verify.html
+++ b/rustdoc/ivc/verifier/fn.verify.html
@@ -1,5 +1,5 @@
-verify in ivc::verifier - Rust pub fn verify<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const NPUB: usize>(
- domain: EvaluationDomains<Fp>,
+verify in ivc::verifier - Rust pub fn verify<EFqSponge: Clone + FqSponge<Fq, G, Fp>, EFrSponge: FrSponge<Fp>, FC: FoldingConfig<Column = GenericColumn, Curve = G, Challenge = PlonkishChallenge>, const N_WIT: usize, const N_REL: usize, const N_DSEL: usize, const N_FSEL: usize, const NPUB: usize>(
+ domain: EvaluationDomains<Fp>,
srs: &PairingSRS<Pairing>,
combined_expr: &FoldingCompatibleExpr<FC>,
fixed_selectors: Box<[Evaluations<Fp, R2D<Fp>>; N_FSEL]>,
diff --git a/rustdoc/kimchi_msm/columns/enum.Column.html b/rustdoc/kimchi_msm/columns/enum.Column.html
index b6ee919653..930f9b7db1 100644
--- a/rustdoc/kimchi_msm/columns/enum.Column.html
+++ b/rustdoc/kimchi_msm/columns/enum.Column.html
@@ -17,7 +17,7 @@
§LookupAggregation
The lookup aggregation, i.e. phi
§LookupFixedTable(u32)
The fixed tables. The parameter is considered to the indexed table.
Implementations§
Trait Implementations§
Trait Implementations§
source§impl FormattedOutput for Column
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
diff --git a/rustdoc/kimchi_msm/witness/struct.Witness.html b/rustdoc/kimchi_msm/witness/struct.Witness.html
index bca4c1075f..d6a8787cfd 100644
--- a/rustdoc/kimchi_msm/witness/struct.Witness.html
+++ b/rustdoc/kimchi_msm/witness/struct.Witness.html
@@ -10,7 +10,7 @@
Fields§
§cols: Box<[T; N_WIT]>
A witness row is represented by an array of N witness columns
When T is a vector, then the witness describes the rows of the circuit.
-Implementations§
Trait Implementations§
source§impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>
source§impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>
source§fn from_par_iter<I>(par_iter: I) -> Selfwhere
+
Implementations§
Trait Implementations§
source§impl<const N: usize, F: FftField> Foldable<F> for Witness<N, Evaluations<F, Radix2EvaluationDomain<F>>>
source§impl<const N_WIT: usize, G: Send + Debug> FromParallelIterator<G> for Witness<N_WIT, G>
source§fn from_par_iter<I>(par_iter: I) -> Selfwhere
I: IntoParallelIterator<Item = G>,
Creates an instance of the collection from the parallel iterator par_iter
. Read moresource§impl<'lt, const N_WIT: usize, G> IntoIterator for &'lt Witness<N_WIT, G>
source§impl<const N_WIT: usize, F: Clone> IntoIterator for Witness<N_WIT, F>
source§fn into_iter(self) -> Self::IntoIter
Iterate over the columns in the circuit.
@@ -20,7 +20,7 @@
Vec<G>: IntoParallelIterator,source§fn into_par_iter(self) -> Self::Iter
Iterate over the columns in the circuit, in parallel.
source§impl<const N_WIT: usize, T: PartialEq> PartialEq<Witness<N_WIT, T>> for Witness<N_WIT, T>
source§impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>
source§impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>
source§impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>
source§impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>
Auto Trait Implementations§
§impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where
+sufficient, and should not be overridden without very good reason.
source§impl<const N_WIT: usize, T: Eq> Eq for Witness<N_WIT, T>
source§impl<const N_WIT: usize, T> StructuralEq for Witness<N_WIT, T>
source§impl<const N_WIT: usize, T> StructuralPartialEq for Witness<N_WIT, T>
source§impl<const N: usize, G: CommitmentCurve> Witness<G> for Witness<N, Evaluations<G::ScalarField, Radix2EvaluationDomain<G::ScalarField>>>
Auto Trait Implementations§
§impl<const N_WIT: usize, T> RefUnwindSafe for Witness<N_WIT, T>where
T: RefUnwindSafe,
§impl<const N_WIT: usize, T> Send for Witness<N_WIT, T>where
T: Send,
§impl<const N_WIT: usize, T> Sync for Witness<N_WIT, T>where
T: Sync,
§impl<const N_WIT: usize, T> Unpin for Witness<N_WIT, T>
§impl<const N_WIT: usize, T> UnwindSafe for Witness<N_WIT, T>where
@@ -42,12 +42,12 @@
&'data mut I: IntoParallelIterator,
§type Iter = <&'data mut I as IntoParallelIterator>::Iter
The type of iterator that will be created.§type Item = <&'data mut I as IntoParallelIterator>::Item
The type of item that will be produced; this is typically an
&'data mut T
reference.§fn par_iter_mut(
&'data mut self
-) -> <I as IntoParallelRefMutIterator<'data>>::Iter
Creates the parallel iterator from self
. Read more§impl<T> Pointable for T
source§impl<G, W> RelaxableWitness<G, W> for Wwhere
+) -> <I as IntoParallelRefMutIterator<'data>>::Iter
Creates the parallel iterator from self
. Read more§impl<T> Pointable for T
§impl<G, W> RelaxableWitness<G, W> for Wwhere
G: CommitmentCurve,
- W: Witness<G>,
source§fn relax(
+ W: Witness<G>,
§fn relax(
self,
zero_poly: &Evaluations<<G as AffineRepr>::ScalarField, Radix2EvaluationDomain<<G as AffineRepr>::ScalarField>>
-) -> RelaxedWitness<G, W>
This method takes a witness and a vector of evaluations to the zero
+) -> RelaxedWitness<G, W>
This method takes a witness and a vector of evaluations to the zero
polynomial, returning a relaxed witness which is composed by the
extended witness and the error vector that is set to the zero
polynomial.
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
index b9979612eb..5d84193b9d 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/fn.interpret_mtype.html
@@ -1,4 +1,4 @@
-interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_mtype
source · pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description
Interpret an M-type instruction.
+
interpret_mtype in o1vm::interpreters::riscv32im::interpreter - Rust Function o1vm::interpreters::riscv32im::interpreter::interpret_mtype
source · pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction)
Expand description
Interpret an M-type instruction.
The encoding of an M-type instruction is as follows:
| 31 27 | 26 25 | 24 20 | 19 15 | 14 12 | 11 7 | 6 0 |
| 00000 | 01 | rs2 | rs1 | funct3 | rd | opcode |
diff --git a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
index 5cac3d3ab4..053bccaeb6 100644
--- a/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
+++ b/rustdoc/o1vm/interpreters/riscv32im/interpreter/index.html
@@ -1,4 +1,4 @@
-o1vm::interpreters::riscv32im::interpreter - Rust Module o1vm::interpreters::riscv32im::interpreter
source · Expand description
This module implement an interpreter for the RISCV32 IM instruction set
+
o1vm::interpreters::riscv32im::interpreter - Rust Module o1vm::interpreters::riscv32im::interpreter
source · Expand description
This module implement an interpreter for the RISCV32 IM instruction set
architecture.
The implementation mostly follows (and copy) code from the MIPS interpreter
available here.
diff --git a/rustdoc/settings.html b/rustdoc/settings.html
index 9718890d0b..9f421508ce 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/o1vm/interpreters/riscv32im/interpreter.rs.html b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
index d084779112..20ee9e83e5 100644
--- a/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
+++ b/rustdoc/src/o1vm/interpreters/riscv32im/interpreter.rs.html
@@ -2234,6 +2234,16 @@
2234
2235
2236
+2237
+2238
+2239
+2240
+2241
+2242
+2243
+2244
+2245
+2246
//! This module implement an interpreter for the RISCV32 IM instruction set
//! architecture.
//!
@@ -4374,7 +4384,7 @@
/// [here](https://www.cs.cornell.edu/courses/cs3410/2024fa/assignments/cpusim/riscv-instructions.pdf)
pub fn interpret_mtype<Env: InterpreterEnv>(env: &mut Env, instr: MInstruction) {
let instruction_pointer = env.get_instruction_pointer();
- let _next_instruction_pointer = env.get_next_instruction_pointer();
+ let next_instruction_pointer = env.get_next_instruction_pointer();
let instruction = {
let v0 = env.read_memory(&instruction_pointer);
@@ -4445,7 +4455,17 @@
match instr {
MInstruction::Mul => {
- unimplemented!("Mul")
+ let rs1 = env.read_register(&rs1);
+ let rs2 = env.read_register(&rs2);
+ // FIXME: constrain
+ let res = {
+ let pos = env.alloc_scratch();
+ unsafe { env.mul_lo_signed(&rs1, &rs2, pos) }
+ };
+ env.write_register(&rd, res);
+
+ env.set_instruction_pointer(next_instruction_pointer.clone());
+ env.set_next_instruction_pointer(next_instruction_pointer + Env::constant(4u32));
}
MInstruction::Mulh => {
unimplemented!("Mulh")