Documentation

MIPRE.Background.Tailored.AnswerReduction.ArLpLd

The low-degree checks, as programs #

Slice P4h of planning/aldous-lyons-track.md: the constraints of the low-degree checks of the answer-reduced game (Typed.ldCons) computed by a program from the parameters, the two questions' low-degree bits and the layout of the answers.

Field elements of the answer bits #

theorem MIPRE.Tailored.AnsRed.Typed.window_eq_fldAt {t : ℕ} {ht : 1 ≤ t} {N : ℕ} (z : Cost.BitStr) (hz : List.length z ≤ N) (o : ℕ) :
window z o t = (SAT.shoupBinField t ht).toBits ((Intro.fldAt t ht N o) (Intro.bitVec N z))

Equal codewords #

The pairs (c, e) with c < k and e < n, in unary, c major.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    @[reducible, inline]

    The input of the equality equations: t, k, the number n of coefficients, Na, N.

    Equations
    Instances For

      The equality equations ldEq, as a program: at (c, e), the window of the first answer at (c n + e) t plus that of the second at Na + (c n + e) t.

      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        theorem MIPRE.Tailored.AnsRed.Typed.mem_pairs {k n : ℕ} {p : Cost.Unary × Cost.Unary} (h : p ∈ List.flatMap (fun (c : ℕ) => List.map (fun (e : ℕ) => (Cost.unary c, Cost.unary e)) (List.range n)) (List.range k)) :
        ∃ (c : ℕ) (e : ℕ), p = (Cost.unary c, Cost.unary e)

        The equality program computes ldEq.

        Line polynomials against point values #

        @[reducible, inline]

        The input of the line equations: t, k, the number n of coefficients, the offsets oL of the line answer and oP of the point answer, N, and the parameter's bits.

        Equations
        Instances For

          The line equations ldLine, as a program: at c, Horner's evaluation at the parameter of the n windows of the c-th line polynomial, plus the window of the c-th point value.

          Equations
          • One or more equations did not get rendered due to their size.
          Instances For
            theorem MIPRE.Tailored.AnsRed.Typed.ldLineF_eq {t : ℕ} {ht : 1 ≤ t} (k n oL oP N : ℕ) (α : Fq t ht) :

            The line program computes ldLine.

            The low-degree vector of a question #

            theorem MIPRE.Tailored.AnsRed.Typed.ldBitsV_ldPart {t : ℕ} {ht : 1 ≤ t} {j rV : ℕ} (y : Fin (rV + D j * t) → CL.𝔽₂) :
            ldBitsV j t ht (ldPart t ht j rV y) = List.drop rV (CL.toBits y)

            The low-degree bits of a typed question's vector are its last D j * t bits.

            theorem MIPRE.Tailored.AnsRed.Typed.blocks1_ldPart {t : ℕ} {ht : 1 ≤ t} {j rV : ℕ} (y : Fin (rV + D j * t) → CL.𝔽₂) :
            blocks1 (Cost.unary t) (Cost.unary (2 ^ j)) (List.drop rV (CL.toBits y)) = ((SAT.shoupBinField t ht).vecBits ((regs j).ptOf (ldPart t ht j rV y)), (SAT.shoupBinField t ht).vecBits ((regs j).dirOf (ldPart t ht j rV y)), [(SAT.shoupBinField t ht).toBits (ldPart t ht j rV y (regs j).coord)])

            The runs of the low-degree bits of a typed question: the point, the direction, the seed.

            The runs of M + M + 1 blocks of t bits, on (t, M, z).

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

              The direction e_i of an axis-parallel line, on (t, M, i): M field elements, one at i, zero elsewhere.

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

                The checks at two questions of one role #

                @[reducible, inline]

                The input of the low-degree checks: t, j, M, d; the number k of codewords, the length Na of the first answer, N; the two questions' types and low-degree bits.

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

                  The runs of a question's low-degree bits.

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

                    The selected direction of a question's axis-parallel line.

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

                      The equality equations of n coefficients.

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

                        The guard and the line equations of n coefficients, the line question i with direction dir i against the point question !i.

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

                          The number of coefficients of a diagonal line polynomial, M d + 1.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[reducible, inline]
                            abbrev MIPRE.Tailored.AnsRed.Typed.ldIn {t j d rV : ℕ} (k Na N : ℕ) (S₁ S₂ : LIDT.CL.Ty) (y₁ y₂ : Fin (rV + D j * t) → CL.𝔽₂) :

                            The input at two typed questions.

                            Equations
                            • One or more equations did not get rendered due to their size.
                            Instances For
                              theorem MIPRE.Tailored.AnsRed.Typed.cDirA_eq {t : ℕ} {ht : 1 ≤ t} {j d : ℕ} {hM : 2 ^ j ∣ Fintype.card (Fq t ht)} (sel : LIDT.CL.Sel (Fq t ht) (2 ^ j) hM) (hsel : ∀ (a : Fq t ht), ↑(sel.χ a) = Introspection.SeedProgram.selectorProg.toFun (Cost.unary t, Cost.unary j, (SAT.shoupBinField t ht).toBits a)) {rV : ℕ} (k Na N : ℕ) (S₁ S₂ : LIDT.CL.Ty) (y₁ y₂ : Fin (rV + D j * t) → CL.𝔽₂) (i : Bool) :
                              (cDirA i).toFun (ldIn k Na N S₁ S₂ y₁ y₂) = (SAT.shoupBinField t ht).vecBits (Pi.single (LIDT.CL.chi hM (sel.π (ldPart t ht j rV (if i = true then y₂ else y₁) (regs j).coord))) 1)
                              theorem MIPRE.Tailored.AnsRed.Typed.cPt_eq {t : ℕ} {ht : 1 ≤ t} {j d rV : ℕ} (k Na N : ℕ) (S₁ S₂ : LIDT.CL.Ty) (y₁ y₂ : Fin (rV + D j * t) → CL.𝔽₂) (i : Bool) :
                              (cPt i).toFun (ldIn k Na N S₁ S₂ y₁ y₂) = (SAT.shoupBinField t ht).vecBits ((regs j).ptOf (ldPart t ht j rV (if i = true then y₂ else y₁)))
                              theorem MIPRE.Tailored.AnsRed.Typed.cDir_eq {t : ℕ} {ht : 1 ≤ t} {j d rV : ℕ} (k Na N : ℕ) (S₁ S₂ : LIDT.CL.Ty) (y₁ y₂ : Fin (rV + D j * t) → CL.𝔽₂) (i : Bool) :
                              (cDir i).toFun (ldIn k Na N S₁ S₂ y₁ y₂) = (SAT.shoupBinField t ht).vecBits ((regs j).dirOf (ldPart t ht j rV (if i = true then y₂ else y₁)))
                              theorem MIPRE.Tailored.AnsRed.Typed.memberProg_eq {t : ℕ} {ht : 1 ≤ t} {j : ℕ} (origin direction point : Fin (2 ^ j) → Fq t ht) :
                              Introspection.FieldLineCheck.memberProg.toFun (Cost.unary t, (SAT.shoupBinField t ht).vecBits origin, (SAT.shoupBinField t ht).vecBits direction, (SAT.shoupBinField t ht).vecBits point) = decide (∃ (τ : Fq t ht), point = origin + τ • direction)
                              theorem MIPRE.Tailored.AnsRed.Typed.parameter_eq_lineParam {t : ℕ} {ht : 1 ≤ t} {j : ℕ} (origin direction point : Fin (2 ^ j) → Fq t ht) :
                              Introspection.FieldLineCheck.parameter origin direction point = LIDT.CL.lineParam origin direction point
                              theorem MIPRE.Tailored.AnsRed.Typed.ldConsF_eq {t : ℕ} {ht : 1 ≤ t} {j d : ℕ} {hM : 2 ^ j ∣ Fintype.card (Fq t ht)} (sel : LIDT.CL.Sel (Fq t ht) (2 ^ j) hM) (hsel : ∀ (a : Fq t ht), ↑(sel.χ a) = Introspection.SeedProgram.selectorProg.toFun (Cost.unary t, Cost.unary j, (SAT.shoupBinField t ht).toBits a)) {rV : ℕ} (k Na N : ℕ) (S₁ S₂ : LIDT.CL.Ty) (y₁ y₂ : Fin (rV + D j * t) → CL.𝔽₂) :
                              ldConsF.toFun (ldIn k Na N S₁ S₂ y₁ y₂) = ldCons j d hM k Na N (ldQ t ht j rV sel S₁ y₁) (ldQ t ht j rV sel S₂ y₂)

                              The low-degree program computes the low-degree checks at two typed questions.