Ring-Switching IOP Prelude #
This module contains the core definitions and infrastructure for the ring-switching IOP, including tensor algebra operations, field extension handling, and basic protocol types.
Main Components #
- Tensor Algebra operations: Operations for handling tensor products
between small field K and large field L, including embeddings
φ₀ : L → L ⊗[K] L,φ₁ : L → L ⊗[K] L, and row/column decompositions with respect to aK-basisβ. - Protocol Types: Statement and witness types for each phase
- Security Definitions: Relations & Kstate for security analysis
Enhanced Tensor Algebra Operations #
Additional tensor algebra operations for the enhanced protocol specification. Based on the tensor algebra theory from Section 2.1.
Tensor Algebra A = L ⊗_K L. Based on the spec, it's viewed as (2^κ)x(2^κ) arrays of K-elements. The imported TensorAlgebra file provides the leftAlgebra instances.
Equations
Instances For
Decompose ŝ into row components (ŝ =: Σ_{u ∈ {0,1}^κ} β_u ⊗ ŝ_u).
This views L ⊗ L as a module over L (left action)
and finds the coordinates of ŝ with respect to the basis lifted from β.
Equations
Instances For
Decompose ŝ into column components (ŝ =: Σ_{v ∈ {0,1}^κ} ŝ_v ⊗ β_v).
This views L ⊗ L as a module over L (right action)
and finds the coordinates of ŝ with respect to the basis lifted from β.
Equations
Instances For
Definition 2.1 (MLE packing).
Packs a small-field multilinear t into a large-field multilinear t' by
reinterpreting chunks of 2^κ coefficients as single L-elements.
For each w ∈ {0,1}^ℓ', the evaluation t'(w) is defined as:
t'(w) := ∑_{v ∈ {0,1}^κ} t(v₀, ..., v_{κ-1}, w₀, ..., w_{ℓ'-1}) ⋅ β_v
Equations
Instances For
Unpacking a Packed Multilinear Polynomial.
Reverses the packing defined in packMLE. It reconstructs the small-field
multilinear t from the large-field multilinear t'.
The evaluation of t at a point (v, w) is recovered by taking the evaluation
of t' at w, which is an element of L, and finding its v-th coordinate
with respect to the basis β.
Equations
Instances For
Component-wise φ₁ embedding.
Takes a polynomial t' with coefficients in L and embeds it into a polynomial
with coefficients in the tensor algebra A by applying φ₁ to each coefficient.
This is achieved by using MvPolynomial.map.
Equations
Instances For
Enhanced Protocol Type Definitions (Interfaces between phases) #
We define the Statement and Witness types at the boundaries of each phase following the enhanced specification.
Equations
Instances For
- t : ↥(BinaryBasefold.MultilinearPoly K ℓ)
Instances For
- t : ↥(BinaryBasefold.MultilinearPoly K ℓ)
- t' : ↥(BinaryBasefold.MultilinearPoly L ℓ')
Instances For
- t_eval_point : Fin ℓ → L
- original_claim : L
- s_hat : TensorAlgebra K L
- r_batching : Fin κ → L
Instances For
- t' : ↥(BinaryBasefold.MultilinearPoly L ℓ')
- H : ↥(MvPolynomial.restrictDegree (Fin (ℓ' - ↑i)) L 2)
Instances For
Standard input relation for MLIOPCS: polynomial evaluation at point equals claimed evaluation
Equations
Instances For
- ιₛᵢ : Type
- Oₛᵢ (i : self.ιₛᵢ) : OracleInterface (self.OStmtIn i)
- initialCompatibility : ↥(BinaryBasefold.MultilinearPoly L ℓ') × ((j : self.ιₛᵢ) → self.OStmtIn j) → Prop
Instances For
Equations
Instances For
- initialCompatibility : ↥(BinaryBasefold.MultilinearPoly L ℓ') × ((j : self.ιₛᵢ) → self.OStmtIn j) → Prop
- numRounds : ℕ
Protocol specification
- pSpec : ProtocolSpec self.numRounds
- Oₘ (j : self.pSpec.MessageIdx) : OracleInterface (self.pSpec.Message j)
- O_challenges (i : self.pSpec.ChallengeIdx) : OracleComp.SelectableType (self.pSpec.Challenge i)
- oracleReduction : OracleReduction []ₒ (MLPEvalStatement L ℓ') self.OStmtIn (WitMLP L ℓ') Bool (fun (x : Empty) => Unit) Unit self.pSpec
- perfectCompleteness {σ : Type} {init : ProbComp σ} {impl : QueryImpl []ₒ (StateT σ ProbComp)} : OracleComp.neverFails init → OracleReduction.perfectCompleteness init impl (AbstractOStmtIn.toRelInput L ℓ' self.toAbstractOStmtIn) acceptRejectOracleRel self.oracleReduction
- rbrKnowledgeError : self.pSpec.ChallengeIdx → NNReal
- rbrKnowledgeSoundness {σ : Type} {init : ProbComp σ} {impl : QueryImpl []ₒ (StateT σ ProbComp)} : OracleVerifier.rbrKnowledgeSoundness init impl (AbstractOStmtIn.toRelInput L ℓ' self.toAbstractOStmtIn) acceptRejectOracleRel self.oracleReduction.verifier self.rbrKnowledgeError
Instances For
Equations
Compute the tensor value ŝ := φ₁(t')(φ₀(r_κ), ..., φ₀(r_{ℓ-1}))
Equations
Instances For
Step 2 (V): Check 1: s ?= Σ_{v ∈ {0,1}^κ} eqTilde(v, r_{0..κ-1}) ⋅ ŝ_v.
Equations
Instances For
Step 4a: For each w ∈ {0,1}^{ℓ'}, P decompose eq̃(r_κ, ..., r_{ℓ-1}, w_0, ..., w_{ℓ'-1})
=: Σ_{u ∈ {0,1}^κ} A_{w, u} ⋅ β_u.
P define the function
A: w ↦ Σ_{u ∈ {0,1}^κ} eq̃(u_0, ..., u_{κ-1}, r''_0, ..., r''_{κ-1}) ⋅ A_{w, u}
on {0,1}^{ℓ'}.
Equations
Instances For
Step 4b: P writes A(X_0, ..., X_{ℓ'-1}) for its multilinear extension of A_func.
Equations
Instances For
Ring-Switching multiplier parameter for sumcheck, using A_MLE as the multiplier.
Equations
Instances For
Step 5 (V): Compute s₀ := Σ_{u ∈ {0,1}^κ} eqTilde(u, r'') ⋅ ŝ_u,
where ŝ_u is the row components of ŝ.
Equations
Instances For
Compute the tensor e := eq̃(φ₀(r_κ), ..., φ₀(r_{ℓ-1}), φ₁(r'_0), ..., φ₁(r'_{ℓ'-1}))
Equations
Instances For
Decompose the final eq tensor e := Σ_{u ∈ {0,1}^κ} eq̃(u, r'') ⨂ e_u,
where e_u is the row components of e.
Then compute Σ_{u ∈ {0,1}^κ} eq̃(u_0, ..., u_{κ-1}, r''_0, ..., r''_{κ-1}) ⋅ e_u.
Equations
Instances For
This condition ensures that the witness polynomial H has the
correct structure A(...) * t'(...)
Equations
Instances For
Equations
Instances For
Equations
Instances For
Input relation for single round: proper sumcheck statement