The seeded low-degree questions as CL functions, on any registers #
The paper's typed CL functions L_Point, L_ALine, L_DLine (ldt.tex, eq:cl-ptf to
eq:cl-dlnf) act on three registers of an ambient space: a point register V_pt ≅ F^n, a
coordinate (seed) register V_coord ≅ F and a direction register V_dir ≅ F^n. The answer-reduced
sampler (sec:ar-verifier) uses six copies of them on overlapping registers of one ambient
space, so the registers are data here: Regs ι n places them in the coordinates ι of the
ambient space by two injections and a coordinate.
Every type gets a three-level presentation (pres), the levels being the seed, then the
direction, then everything else; the paper's one- and two-level functions are the same with
trivial levels, as in QLD.PauliCL.presentation. The presentations are exact on the whole space
(pres_exactlyOn), and their full evaluation, read back through the registers (questionOf), is
the seeded test's question LIDT.CL.Sample.question for the sample the registers carry
(questionOf_eval).
Summing over vectors through an injection of coordinates: x ↦ x ∘ e has fibres of
size q^{|ι| - |κ|}.
The three registers of a copy of the low-degree test in an ambient space with coordinates
ι: the point and direction registers, each n coordinates, and the seed coordinate.
- pt : Fin n → ι
The point register.
- dir : Fin n → ι
The direction register.
- coord : ι
The coordinate (seed) register.
- pt_injective : Function.Injective self.pt
- dir_injective : Function.Injective self.dir
Instances For
A seed selector: the block index χ(s) a sampler computes from a seed, with a
permutation π of the seeds under which it is the test's own chi. The test's chi numbers the
field by Fintype.equivFin, which no program can compute; an effective sampler uses an explicit
selector with the same block sizes, and the permutation, which only the analysis sees, carries
its questions to the test's (questionOf_eval). Sel.canonical is the test's own selector.
- χ : F → Fin n
The selector.
The permutation of the seeds.
Instances For
The test's own selector.
Equations
- MIPRE.LIDT.CL.Sel.canonical hn = { χ := MIPRE.LIDT.CL.chi hn, π := Equiv.refl F, chi_π := ⋯ }
Instances For
Any selector with blocks of size q / n is a seed selector: the permutation matching it
to the test's chi exists.
The seed selector of a selector with blocks of size q / n.
Equations
- MIPRE.LIDT.CL.Sel.ofSelector hn χ hχ = { χ := χ, π := ⋯.choose, chi_π := ⋯ }
Instances For
Reading and writing registers #
The register sets #
The direction register.
Equations
Instances For
Everything else: the point register and the coordinates no copy of the test reads.
Instances For
The stage maps #
π_i, zeroing the first i coordinates, as a linear map.
Equations
- MIPRE.LIDT.CL.Regs.zeroBelowLin i = { toFun := MIPRE.LIDT.CL.zeroBelow i, map_add' := ⋯, map_smul' := ⋯ }
Instances For
A linear map of the point register, as a map on the final register.
Equations
- R.ptLin A = MIPRE.CL.RegLinear.ofLinearMap R.finalSet (R.putPt ∘ₗ A ∘ₗ LinearMap.funLeft F F R.pt)
Instances For
π_i of the direction register.
Equations
- R.dirLin i = MIPRE.CL.RegLinear.ofLinearMap R.dirSet (R.putDir ∘ₗ MIPRE.LIDT.CL.Regs.zeroBelowLin i ∘ₗ LinearMap.funLeft F F R.dir)
Instances For
The first stage: the seed, for the two line types.
Equations
Instances For
The second stage: π_{χ(s)} of the direction, for the diagonal type.
Instances For
The third stage: the canonical base point of the line through the point.
Equations
- R.finalLin S MIPRE.LIDT.CL.Ty.point x✝¹ x✝ = R.ptLin LinearMap.id
- R.finalLin S MIPRE.LIDT.CL.Ty.aline x✝¹ x✝ = R.ptLin (MIPRE.CL.canonLin (F ∙ Pi.single (S.χ x✝¹) 1))
- R.finalLin S MIPRE.LIDT.CL.Ty.dline x✝¹ x✝ = R.ptLin (MIPRE.CL.canonLin (F ∙ x✝))
Instances For
The three-level presentation of the question of type t: seed, then direction, then
the point register and everything else.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Read the question of type t off a vector, the seed decoded by the selector's permutation.
Equations
- R.questionOf S MIPRE.LIDT.CL.Ty.point x = MIPRE.LIDT.CL.Question.point (R.ptOf x)
- R.questionOf S MIPRE.LIDT.CL.Ty.aline x = MIPRE.LIDT.CL.Question.aline (R.ptOf x) (S.π (x R.coord))
- R.questionOf S MIPRE.LIDT.CL.Ty.dline x = MIPRE.LIDT.CL.Question.dline (R.ptOf x) (S.π (x R.coord)) (R.dirOf x)
Instances For
The sample a vector carries, with both types t, the seed decoded by the selector's
permutation.
Equations
Instances For
The presentation computes the seeded question of the sample the registers carry.
The law of the sample #
Uniform content gives a uniform sample: summing a function of the sample the registers
carry over all vectors is summing it over all samples, q^{|ι| - (2n+1)} times.