Documentation

MIPRE.Foundations.ClassMIPStar

The class MIP*_{1,1/2}(2,1) as the paper defines it #

Blueprint def:mipstar, the paper's form (games.tex, Definition "def:mipstar"): a language L is in the class if there are two machines, a sampler 𝒮 and a decider 𝒟, such that for every string z there is a finite game G_z with

MIPRE.MIPStarComputable (ClassMIPStarComputable.lean) is the computable version of this, with G_z an explicit GameData computed from z with no time bound; planning/polytime-halting.md has why the two are different and what it takes to prove RE ⊆ the class below. This file is the class itself.

The reading #

A PolyVerifier is a closed sampler program, a closed decider program and one polynomial P; write B z = P.eval |z|.

MIPStar.toComputable (ClassMIPStarTab.lean) is the inclusion in the computable class, by tabulation, which gives MIPStar ⊆ RE from MIPStarComputable.isRE.

A polynomial-time verifier (def:mipstar, the paper's form): a sampler, a decider and one polynomial time bound.

Instances For

    The bound B z = P(|z|): the seed length, the sampler's time on z, and the length of the questions and answers of G_z.

    Equations
    Instances For

      The decider accepts (z, x, y, a, b): it halts with output 1.

      Equations
      Instances For

        The sampler's output on (z, r), if it halts with (the encoding of) a pair of strings.

        Equations
        Instances For

          The empty answer, in the alphabet of length at most T.

          Equations
          Instances For

            The question pair a seed produces: the sampler's output, when it is a pair of strings of length at most B z, and ([], []) otherwise.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For

              The sampler, on every seed of length B z, halts within cost P(|z| + |r|) with a pair of strings of length at most B z. The bound is in the total input length, as the decider's: a program reads its seed only by walking it, so B z itself would leave no time to read a seed of length B z; with |r| = B z polynomial in |z| the bound is still poly(|z|). This is the sampler's clause of Efficient, which is all the question distribution needs.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For

                Efficiency on the input z (def:mipstar, item 1).

                Instances For
                  theorem MIPRE.PolyVerifier.questions_eq_of_samplerRuns (V : PolyVerifier) {z : Cost.BitStr} (h : V.SamplerRuns z) {r : Cost.BitStr} (hr : List.length r = V.B z) :
                  ∃ (x : Cost.BitStr) (y : Cost.BitStr), ∃ t ≤ Polynomial.eval (List.length z + List.length r) V.bound, V.sampler.Runs (Cost.encode (z, r)) (Cost.encode (x, y)) t ∧ ↑(V.questions z r).1 = x ∧ ↑(V.questions z r).2 = y

                  Under the sampler's clause the sampler's output on a seed of the right length is the question pair, with no fallback.

                  theorem MIPRE.PolyVerifier.questions_eq_of_efficient (V : PolyVerifier) {z : Cost.BitStr} (h : V.Efficient z) {r : Cost.BitStr} (hr : List.length r = V.B z) :
                  ∃ (x : Cost.BitStr) (y : Cost.BitStr), ∃ t ≤ Polynomial.eval (List.length z + List.length r) V.bound, V.sampler.Runs (Cost.encode (z, r)) (Cost.encode (x, y)) t ∧ ↑(V.questions z r).1 = x ∧ ↑(V.questions z r).2 = y

                  On an efficient verifier the sampler's output on a seed of the right length is the question pair, with no fallback.

                  The game G_z #

                  noncomputable def MIPRE.PolyVerifier.seedCount (V : PolyVerifier) (z : Cost.BitStr) (x y : Verifier.Answers (V.B z)) :

                  The number of seeds of length B z producing the question pair (x, y).

                  Equations
                  Instances For
                    theorem MIPRE.PolyVerifier.sum_length_filter_eq {A : Type u_1} [Fintype A] [DecidableEq A] (f : Cost.BitStr → A × A) (l : List Cost.BitStr) :
                    ∑ x : A, ∑ y : A, (List.filter (fun (r : Cost.BitStr) => decide (f r = (x, y))) l).length = l.length

                    Summing a list's fibres over a finite codomain counts the list.

                    The game G_z of the verifier on the input z: questions and answers are the strings of length at most B z, the question pair is the sampler's output on a uniform seed, and the decision is the decider's.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      theorem MIPRE.PolyVerifier.game_μ (V : PolyVerifier) (z : Cost.BitStr) (x y : Verifier.Answers (V.B z)) :
                      (V.game z).μ x y = ↑(V.seedCount z x y) / 2 ^ V.B z
                      theorem MIPRE.PolyVerifier.game_D (V : PolyVerifier) (z : Cost.BitStr) (x y a b : Verifier.Answers (V.B z)) :
                      (V.game z).D x y a b = decide (V.Accepts z ↑x ↑y ↑a ↑b)

                      def:mipstar, the paper's class MIP*_{1,1/2}(2,1). A language L is in it if some polynomial-time verifier is efficient on every input, and its game has quantum value 1 on the members of L and at most 1/2 off them.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For