The classical low individual degree test #
The (m, q, d)-low individual degree test of Ji, Natarajan, Vidick, Wright and Yuen,
Quantum soundness of the classical low individual degree test (arXiv:2009.12982,
Figure 1), as a two-player game MIPRE.LIDT.lidtGame over a finite field F with q
elements. With probability 1/3 each, the verifier runs one of three sub-tests, on a
uniform point u ∈ F^m:
- axis-parallel lines: one player (chosen at random) receives the line through
uin a uniform coordinate direction and answers a univariate polynomialfof degree≤ d, the other receivesuand answersa ∈ F; accept ifff(u) = a; - self-consistency: both receive
u, accept iff the answers agree; - diagonal lines: as the first test, with the line through
uin a directionvuniform among the vectors whose coordinates beyond a uniform indexjvanish (v = 0, a singleton line, is allowed), and a polynomial of degree≤ m·d.
Polynomials are represented by their coefficients (LinePoly), so that the alphabets are
finite types without further ado. A line is a pair (base, direction); the verifier only
ever asks the canonical presentation Line.through u v of a line (direction rescaled so
that its first nonzero coordinate is 1, base point moved so that this coordinate is
0), so that a line is the same question however it was sampled. Line answers are
polynomials in the parameter t of base + t • direction, and are evaluated at the
parameter Line.param ℓ u of the sampled point. The question distribution is the
push-forward of the verifier's random choices Sample.
Univariate polynomials over F of degree at most n, given by their coefficients.
Equations
- MIPRE.LIDT.LinePoly F n = (Fin (n + 1) → F)
Instances For
A line in F^m, presented by a base point and a direction: {base + t • direction}.
Equations
- MIPRE.LIDT.Line F m = (MIPRE.LIDT.Point F m × MIPRE.LIDT.Point F m)
Instances For
The canonical presentation of the line through u in direction v: if v ≠ 0 and
j is its first nonzero coordinate, the direction is v / v_j and the base point is the
point of the line with vanishing j-th coordinate; if v = 0, the pair (u, 0).
Equations
Instances For
Equations
The parameter of a point of a canonically presented line: its coordinate at the first
nonzero coordinate of the direction (0 for a singleton line).
Equations
Instances For
Equations
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.point a) (MIPRE.LIDT.Question.point b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.point u) (MIPRE.LIDT.Question.axisLine ℓ) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.point u) (MIPRE.LIDT.Question.diagLine ℓ) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.axisLine ℓ) (MIPRE.LIDT.Question.point u) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.axisLine a) (MIPRE.LIDT.Question.axisLine b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.axisLine ℓ) (MIPRE.LIDT.Question.diagLine ℓ_1) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.diagLine ℓ) (MIPRE.LIDT.Question.point u) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.diagLine ℓ) (MIPRE.LIDT.Question.axisLine ℓ_1) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqQuestion.decEq (MIPRE.LIDT.Question.diagLine a) (MIPRE.LIDT.Question.diagLine b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- MIPRE.LIDT.instFintypeQuestion = Fintype.ofEquiv (MIPRE.LIDT.Point F✝ m✝ ⊕ MIPRE.LIDT.Line F✝ m✝ ⊕ MIPRE.LIDT.Line F✝ m✝) (MIPRE.LIDT.Question.proxyTypeEquiv F✝ m✝)
Equations
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.value a) (MIPRE.LIDT.Answer.value b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.value a) (MIPRE.LIDT.Answer.axisPoly f) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.value a) (MIPRE.LIDT.Answer.diagPoly f) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.axisPoly f) (MIPRE.LIDT.Answer.value a) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.axisPoly a) (MIPRE.LIDT.Answer.axisPoly b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.axisPoly f) (MIPRE.LIDT.Answer.diagPoly f_1) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.diagPoly f) (MIPRE.LIDT.Answer.value a) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.diagPoly f) (MIPRE.LIDT.Answer.axisPoly f_1) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqAnswer.decEq (MIPRE.LIDT.Answer.diagPoly a) (MIPRE.LIDT.Answer.diagPoly b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
Instances For
Equations
- MIPRE.LIDT.instFintypeAnswer = Fintype.ofEquiv (F✝ ⊕ MIPRE.LIDT.LinePoly F✝ d✝ ⊕ MIPRE.LIDT.LinePoly F✝ (m✝ * d✝)) (MIPRE.LIDT.Answer.proxyTypeEquiv F✝ m✝ d✝)
The verifier's random choices: the sub-test, whether the roles are swapped (the line
goes to player B), the point u, the direction index i or j, and for diagonal lines
the first j + 1 coordinates of the direction (the others vanish).
- axis {F : Type u_1} {m : ℕ} (swap : Bool) (u : Point F m) (i : Fin m) : Sample F m
- selfConsistency {F : Type u_1} {m : ℕ} (u : Point F m) : Sample F m
- diag {F : Type u_1} {m : ℕ} (swap : Bool) (u : Point F m) (j : Fin m) (v : Fin (↑j + 1) → F) : Sample F m
Instances For
Equations
- One or more equations did not get rendered due to their size.
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.axis swap u i) (MIPRE.LIDT.Sample.selfConsistency u_1) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.axis swap u i) (MIPRE.LIDT.Sample.diag swap_1 u_1 j v) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.selfConsistency u) (MIPRE.LIDT.Sample.axis swap u_1 i) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.selfConsistency a) (MIPRE.LIDT.Sample.selfConsistency b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.selfConsistency u) (MIPRE.LIDT.Sample.diag swap u_1 j v) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.diag swap u j v) (MIPRE.LIDT.Sample.axis swap_1 u_1 i) = isFalse ⋯
- MIPRE.LIDT.instDecidableEqSample.decEq (MIPRE.LIDT.Sample.diag swap u j v) (MIPRE.LIDT.Sample.selfConsistency u_1) = isFalse ⋯
Instances For
The probability of a sample: each sub-test has probability 1/3, and within a sub-test
the swap, the point, the direction index and the direction are uniform.
Equations
- (MIPRE.LIDT.Sample.axis a a_1 a_2).weight = 1 / (6 * ↑m * ↑(Fintype.card (MIPRE.LIDT.Point F m)))
- (MIPRE.LIDT.Sample.selfConsistency a).weight = 1 / (3 * ↑(Fintype.card (MIPRE.LIDT.Point F m)))
- (MIPRE.LIDT.Sample.diag a a_1 a_2 a_3).weight = 1 / (6 * ↑m * ↑(Fintype.card (MIPRE.LIDT.Point F m)) * ↑(Fintype.card F) ^ (↑a_2 + 1))
Instances For
Samples as a disjoint union of products, for summing over them.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The question pair of a sample (first component to player A).
Equations
- One or more equations did not get rendered due to their size.
- (MIPRE.LIDT.Sample.selfConsistency a).questions = (MIPRE.LIDT.Question.point a, MIPRE.LIDT.Question.point a)
Instances For
The decision predicate: a line answer f and a point answer a are accepted iff the
point lies on the line and f evaluated at the parameter of the point is a; two point
answers are accepted iff the points are equal and the answers agree.
Equations
- One or more equations did not get rendered due to their size.
- MIPRE.LIDT.accepts F m d (MIPRE.LIDT.Question.point x_4) (MIPRE.LIDT.Question.point y) (MIPRE.LIDT.Answer.value a) (MIPRE.LIDT.Answer.value b) = decide (x_4 = y ∧ a = b)
- MIPRE.LIDT.accepts F m d x✝³ x✝² x✝¹ x✝ = false
Instances For
The (m, q, d)-low individual degree test as a game, q = Fintype.card F, m ≠ 0.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Vocabulary for the soundness theorem #
Polynomials in m variables of individual degree at most d, given by their
coefficients on the monomials ∏ᵢ Xᵢ^(eᵢ) with all eᵢ ≤ d.
Equations
- MIPRE.LIDT.LowIndDegPoly = ((Fin m → Fin (d + 1)) → F)
Instances For
The field element answered to a point question; ill-typed answers are read as 0
(they are rejected by the test, so this only helps the strategy).
Equations
- (MIPRE.LIDT.Answer.value a).toValue = a
- x✝.toValue = 0
Instances For
The point measurements of player A in a strategy for the test, as POVMs with outcomes
in F.
Equations
Instances For
The point measurements of player B in a strategy for the test, as POVMs with outcomes
in F.
Equations
Instances For
Evaluation at u of a measurement G with polynomial outcomes: the POVM with outcomes
in F whose operator for a is the sum of the operators of the polynomials p with
p(u) = a.
Equations
- MIPRE.LIDT.evalPOVM G u = MIPRE.POVM.map (fun (p : MIPRE.LIDT.LowIndDegPoly) => p.eval u) (G.toPOVM ())
Instances For
The error bound of the soundness theorem, as proved in the MIPStarRE development:
100000 · k² · m⁴ · (ε^(1/40000) + (d/q)^(1/40000) + exp(−k / (2560000 m²))).