§6, p. 1504 — each good is observed with probability at least
ProvedShorAlgorithms.DiscreteLog.good_c_prob_gediscrete-logarithmp2o-batch-p200bp2o-gran-per-chapterp2o-plan-paperp2o-v1quantum-algorithms
Throughout, is a prime, is a generator of the multiplicative group (an element of order ), is an integer with and (so is the discrete logarithm of ), and is a power of with .
Call good if satisfies (6.10) and (6.11) for some . Then, when the final state (6.3) is measured, the first register shows a good with probability at least , and this is at least :
This is the form of the success probability used when recovering from several good values .
Preamble
import Mathlib import Definitions.Def_ShorAlgorithms_DiscreteLog_outcomeProb import Definitions.Def_ShorAlgorithms_DiscreteLog_IsGood
Formal statement
namespace ShorAlgorithms.DiscreteLog
/-- Shor (1997), §6, p. 1504 ("Note that each good `c`"): under the hypotheses of §6, a value
`c` that forms a good pair `(c, d)` with some `d` is observed in the first register with
probability (summed over all `d` and `y`) at least `(p - 1)/(20 q²)`, and `(p - 1)/(20 q²) ≥ 1/(40 q)`. -/
theorem good_c_prob_ge (p : ℕ) [hp : Fact p.Prime] (g : (ZMod p)ˣ) (hg : orderOf g = p - 1)
(r : ℕ) (hr : r < p - 1) (q l : ℕ) (hq : q = 2 ^ l) (hpq : p < q) (hqp : q < 2 * p)
(c : Fin q) (hc : ∃ d : Fin q, IsGood p q r c d) :
((p : ℝ) - 1) / (20 * (q : ℝ) ^ 2) ≤
∑ d : Fin q, ∑ y : (ZMod p)ˣ, outcomeProb p g (g ^ r) q c d y ∧
1 / (40 * (q : ℝ)) ≤ ((p : ℝ) - 1) / (20 * (q : ℝ) ^ 2) := by sorry
end ShorAlgorithms.DiscreteLog
Source
Shor, Polynomial-Time Algorithms for Prime Factorization and Discrete Logarithms on a Quantum Computer, SIAM J. Comput. 26(5) (1997), p. 1504, §6 ("Note that each good has a probability of at least …")
Human review
Confirmed by the mission captain (proposal self-audit).
Confirmed by the moderator at approval.