pub fn prove<'a, U, F, FW>(
oracles: &mut MultilinearOracleSet<F>,
witness_index: MultilinearExtensionIndex<'a, U, FW>,
msetcheck_claim: &MsetcheckClaim<F>,
msetcheck_witness: MsetcheckWitness<'a, PackedType<U, FW>>,
gamma: F,
alpha: Option<F>,
) -> Result<MsetcheckProveOutput<'a, U, F, FW>, Error>where
U: UnderlierType + PackScalar<FW>,
F: TowerField + From<FW>,
FW: TowerField + From<F>,
PackedType<U, FW>: PackedFieldIndexable,
Expand description
Prove a multiset check instance reduction.
Given two $n$-arity tuples $(T_1, \ldots, T_n)$ and $(U_1, \ldots, U_n)$ of $\nu$-variate multilins, each representing an $n$-dimensional relation of cardinality $2^{\nu}$ (when treated as a multiset), this protocol reduces multiset equality predicate to a grand product check of the two polynomials of the form:
- $T’(x) = \gamma + T_1(x) + \alpha * T_2(x) + \ldots + \alpha^{n-1} * T_n(x)$
- $U’(x) = \gamma + U_1(x) + \alpha * U_2(x) + \ldots + \alpha^{n-1} * U_n(x)$
where $\gamma$ and $\alpha$ are some large field challenges sampled via Fiat-Shamir
(alpha
is non-None
if $n \ge 2$).