The first hiding edge's constraints as polynomial-time programs #
PauliHide.pauliHideCons and pauliHideConsRev are lists of register forms
∑ wᵣ ((Π a)ᵣ + xᵣ) = 0, for w the masked generators proj S z and the unit vectors off S,
with Π a the kernel's register of the Pauli answer and x a register of the Hide answer. This
file computes them by programs (Cost.PolyTimeFun), from the kernel's parameter triple, the mask
of S = P.factorOfPrefix 0 0 and the generators' bits; the mask and the generators are inputs,
computed elsewhere from the sampler.
The coefficient of a Hide bit is a coordinate of w. The coefficient of the Pauli bit i of
block bb is ∑_s C i s · w (bb, s), with C i s the s-th self-dual coordinate of the i-th
canonical (Shoup) basis element bsh i (dot_pauliXProj_unitV): Π expands each field element
of the answer in the self-dual basis. So with the rows C i · computed once (ctxProg, by the
kernel's basis conversion BasisProgram.toSelfDualRowsProg on the identity rows), the Pauli
coefficients are those rows applied to each block of w (coefProg, coefProg_eq).
toCon_hideCon,toCon_hideCon_seg: the constraint vector of a register form, position by position, and by segments ofQbits when the two registers sit at multiples ofQ;hideChecks_toCon:hideChecksas such register forms;pauliHideProg_eq,pauliHideRevProg_eq: the programs compute the constraint lists, exactly, for everyPand every list of generators.
Unit vectors #
The i-th element of the canonical (Shoup polynomial) basis.
Equations
- MIPRE.Tailored.Intro.PauliHideProg.bsh k hk i = (MIPRE.SAT.shoupCoordinateEquiv k hk).symm (Pi.single i 1)
Instances For
The self-dual coordinates of the canonical basis: C i s.
Equations
- MIPRE.Tailored.Intro.PauliHideProg.cm k hk hodd i s = (MIPRE.SAT.shoupSelfDualNormalBasis k hk hodd).equivFun (MIPRE.Tailored.Intro.PauliHideProg.bsh k hk i) s
Instances For
The coefficients of the Pauli bits in ∑ wᵣ (Π a)ᵣ: at block bb, bit i,
∑_s C i s · w (bb, s).
Equations
- One or more equations did not get rendered due to their size.
Instances For
The register form ∑ wᵣ ((Π a)ᵣ + xᵣ), the Pauli register at oP, the other at oR.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constraints of hideChecks as register forms #
hideChecks by segments: the register forms of hideChecks at offsets that are
multiples of Q.
The programs #
The data the coefficient programs share: the self-dual coordinate rows of the canonical
basis, k and 2^j in unary.
Equations
Instances For
The shared data, from the kernel's parameter triple.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The coefficients of the Pauli bits of a register form w: block by block, the coordinate
rows applied to the block of w.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Q zeros, Q the length of the register form.
Equations
Instances For
The constraint of a register form: four segments of Q bits, the Pauli coefficients in
segment a, the form in segment b, zeros elsewhere, then J's coefficient 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The input of the hiding programs: parameters, the mask of S, the generators.
Equations
Instances For
The constraints of the generators.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The constraints of the coordinates off the mask.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first hiding edge's constraints, Pauli answer first, as a program.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The first hiding edge's constraints, Hide answer first, as a program.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Correctness of the programs #
The canonical bits of a field element are its coordinate vector.
The coordinate rows: row i is C i ·.
Equations
- MIPRE.Tailored.Intro.PauliHideProg.cRows k hk hodd = List.ofFn fun (i : Fin k) => MIPRE.CL.toBits fun (s : Fin k) => MIPRE.Tailored.Intro.PauliHideProg.cm k hk hodd i s
Instances For
pauliHideProg computes pauliHideCons, from the kernel's parameter triple, the mask of
the first factor S = P.factorOfPrefix 0 0 and the generators' bits.
pauliHideRevProg computes pauliHideConsRev.