The product of a typed sampler and a directly answered one: the presentations #
The answer-reduced sampler (sec:ar-verifier, ld_compiler.tex) is the direct sum of the
oracularized sampler, whose queries are answered by a program, and the downsized PCP sampler,
whose queries a polynomial-time function answers outright. This file is the CL half of that
construction, for any two families of presentations on 𝔽₂^a and 𝔽₂^b:
prodCL L P Qpads both toLlevels and puts them side by side on𝔽₂^{a + b}, the firstacoordinates forP;- its three queries, in bits, are the two halves' queries concatenated (
toBits_eval_truncate_prodCL,toBits_mapOfPrefix_prodCL,indicatorBits_factorOfPrefix_prodCL); - beyond a presentation's own level its marginal is its full evaluation, its stage map zero and its
factor space empty (
eval_truncate_of_le,mapOfPrefix_of_le,factorOfPrefix_of_le).
Beyond the level #
theorem
MIPRE.CL.CLFun.mapOfPrefix_of_le
{F : Type u_1}
[Semiring F]
{ι : Type u_2}
[DecidableEq ι]
[Fintype ι]
{ℓ : ℕ}
(P : CLFun F ι ℓ)
{k : ℕ}
(h : ℓ ≤ k)
(u : ι → F)
:
theorem
MIPRE.CL.CLFun.factorOfPrefix_of_le
{F : Type u_1}
[Semiring F]
{ι : Type u_2}
[DecidableEq ι]
[Fintype ι]
{ℓ : ℕ}
(P : CLFun F ι ℓ)
{k : ℕ}
(h : ℓ ≤ k)
(u : ι → F)
:
Splitting vectors of 𝔽₂^{a + b} #
theorem
MIPRE.CL.indicatorBits_eq_append
{a b : ℕ}
(S : Finset (Fin (a + b)))
:
indicatorBits S = indicatorBits (S.preimage (Fin.castAdd b) ⋯) ++ indicatorBits (S.preimage (Fin.natAdd a) ⋯)
The product presentation #
noncomputable def
MIPRE.CL.CLFun.prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
(P : CLFun 𝔽₂ (Fin a) ℓa)
(Q : CLFun 𝔽₂ (Fin b) ℓb)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
:
P and Q padded to L levels, side by side on 𝔽₂^{a + b}: P on the first a
coordinates.
Equations
- MIPRE.CL.CLFun.prodCL L P Q ha hb = MIPRE.CL.CLFun.reindex finSumFinEquiv ((MIPRE.CL.CLFun.liftTo Finset.univ L ha P).prod (MIPRE.CL.CLFun.liftTo Finset.univ L hb Q))
Instances For
theorem
MIPRE.CL.CLFun.ExactlyOn.prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
{P : CLFun 𝔽₂ (Fin a) ℓa}
{Q : CLFun 𝔽₂ (Fin b) ℓb}
(hP : P.ExactlyOn Finset.univ)
(hQ : Q.ExactlyOn Finset.univ)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
:
(CLFun.prodCL L P Q ha hb).ExactlyOn Finset.univ
theorem
MIPRE.CL.CLFun.mapOfPrefix_prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
{P : CLFun 𝔽₂ (Fin a) ℓa}
{Q : CLFun 𝔽₂ (Fin b) ℓb}
(hP : P.ExactlyOn Finset.univ)
(hQ : Q.ExactlyOn Finset.univ)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
(k : ℕ)
(u y : Fin (a + b) → 𝔽₂)
:
((prodCL L P Q ha hb).mapOfPrefix k u) y = Fin.append ((P.mapOfPrefix k (leftPart u)) (leftPart y)) ((Q.mapOfPrefix k (rightPart u)) (rightPart y))
theorem
MIPRE.CL.CLFun.toBits_mapOfPrefix_prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
{P : CLFun 𝔽₂ (Fin a) ℓa}
{Q : CLFun 𝔽₂ (Fin b) ℓb}
(hP : P.ExactlyOn Finset.univ)
(hQ : Q.ExactlyOn Finset.univ)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
(k : ℕ)
(u y : Fin (a + b) → 𝔽₂)
:
toBits (((prodCL L P Q ha hb).mapOfPrefix k u) y) = toBits ((P.mapOfPrefix k (leftPart u)) (leftPart y)) ++ toBits ((Q.mapOfPrefix k (rightPart u)) (rightPart y))
theorem
MIPRE.CL.CLFun.factorOfPrefix_prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
{P : CLFun 𝔽₂ (Fin a) ℓa}
{Q : CLFun 𝔽₂ (Fin b) ℓb}
(hP : P.ExactlyOn Finset.univ)
(hQ : Q.ExactlyOn Finset.univ)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
(k : ℕ)
(u : Fin (a + b) → 𝔽₂)
:
(prodCL L P Q ha hb).factorOfPrefix k u = Finset.map finSumFinEquiv.toEmbedding
(Finset.map Function.Embedding.inl (P.factorOfPrefix k (leftPart u)) ∪ Finset.map Function.Embedding.inr (Q.factorOfPrefix k (rightPart u)))
theorem
MIPRE.CL.CLFun.indicatorBits_factorOfPrefix_prodCL
{a b ℓa ℓb : ℕ}
(L : ℕ)
{P : CLFun 𝔽₂ (Fin a) ℓa}
{Q : CLFun 𝔽₂ (Fin b) ℓb}
(hP : P.ExactlyOn Finset.univ)
(hQ : Q.ExactlyOn Finset.univ)
(ha : ℓa ≤ L)
(hb : ℓb ≤ L)
(k : ℕ)
(u : Fin (a + b) → 𝔽₂)
:
indicatorBits ((prodCL L P Q ha hb).factorOfPrefix k u) = indicatorBits (P.factorOfPrefix k (leftPart u)) ++ indicatorBits (Q.factorOfPrefix k (rightPart u))