Documentation

MIPRE.Foundations.Introspection.Types

The introspection question types #

The source's type set consists of the Pauli types and two copies of Introspect, Sample, Read, and Hide₁, ..., Hideℓ. The Pauli type is a parameter so the foundational construction can be instantiated with the concrete Pauli test without importing a Background module.

The additional tests, before specifying the original player's role.

Instances For
    def MIPRE.Introspection.instDecidableEqAuxType.decEq {ℓ✝ : ℕ} (x✝ x✝¹ : AuxType ℓ✝) :
    Decidable (x✝ = x✝¹)
    Equations
    Instances For

      Three fixed tests followed by the hiding levels.

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

        There are exactly ℓ + 3 auxiliary types for either original player.

        @[simp]
        @[instance_reducible]
        Equations
        • One or more equations did not get rendered due to their size.
        theorem MIPRE.Introspection.AuxType.esize_le {ℓ : ℕ} (t : AuxType ℓ) :
        Cost.esize t ≤ 4 * (ℓ + 3).size + 1

        The tag encoding has logarithmic size in the number of hiding levels.

        @[reducible, inline]
        abbrev MIPRE.Introspection.QuestionType (PauliType : Type u_1) (ℓ : ℕ) :
        Type u_1

        Pauli types together with the introspection tests for the two original players.

        Equations
        Instances For
          @[reducible, inline]
          abbrev MIPRE.Introspection.QuestionType.pauli {PauliType : Type u_1} {ℓ : ℕ} (p : PauliType) :
          QuestionType PauliType ℓ
          Equations
          Instances For
            @[reducible, inline]
            abbrev MIPRE.Introspection.QuestionType.sample {PauliType : Type u_1} {ℓ : ℕ} (w : Bool) :
            QuestionType PauliType ℓ
            Equations
            Instances For
              @[reducible, inline]
              abbrev MIPRE.Introspection.QuestionType.read {PauliType : Type u_1} {ℓ : ℕ} (w : Bool) :
              QuestionType PauliType ℓ
              Equations
              Instances For
                @[reducible, inline]
                abbrev MIPRE.Introspection.QuestionType.hide {PauliType : Type u_1} {ℓ : ℕ} (w : Bool) (k : Fin ℓ) :
                QuestionType PauliType ℓ
                Equations
                Instances For
                  theorem MIPRE.Introspection.QuestionType.card {PauliType : Type u_1} [Fintype PauliType] (ℓ : ℕ) :
                  Fintype.card (QuestionType PauliType ℓ) = Fintype.card PauliType + 2 * ℓ + 6

                  Introspection contributes exactly 2ℓ + 6 vertices.

                  theorem MIPRE.Introspection.QuestionType.card_of_pauli_card {PauliType : Type u_1} [Fintype PauliType] (h : Fintype.card PauliType = 26) (ℓ : ℕ) :
                  Fintype.card (QuestionType PauliType ℓ) = 2 * ℓ + 32

                  The paper's 26 Pauli types give 2ℓ + 32 introspection types.

                  instance MIPRE.Introspection.QuestionType.instNonempty {PauliType : Type u_1} {ℓ : ℕ} :
                  Nonempty (QuestionType PauliType ℓ)

                  A type exists independently of the Pauli type set and of the number of hiding levels.

                  def MIPRE.Introspection.QuestionType.toData {PauliType : Type u_1} {ℓ : ℕ} [Cost.SizedEncoding PauliType] :
                  QuestionType PauliType ℓ → Cost.Data

                  A single bit distinguishes Pauli labels from role-tagged auxiliary labels.

                  Equations
                  Instances For
                    def MIPRE.Introspection.QuestionType.ofData {PauliType : Type u_1} {ℓ : ℕ} [Cost.SizedEncoding PauliType] :
                    Cost.Data → Option (QuestionType PauliType ℓ)
                    Equations
                    Instances For
                      @[simp]
                      theorem MIPRE.Introspection.QuestionType.ofData_toData {PauliType : Type u_1} {ℓ : ℕ} [Cost.SizedEncoding PauliType] (t : QuestionType PauliType ℓ) :
                      theorem MIPRE.Introspection.QuestionType.esize_aux_le {PauliType : Type u_1} {ℓ : ℕ} [Cost.SizedEncoding PauliType] (t : AuxType ℓ) (w : Bool) :
                      Cost.esize (Sum.inr (t, w)) ≤ 4 * (ℓ + 3).size + 9

                      The complete encoding of an auxiliary type has logarithmic size in ℓ.