Documentation

MIPRE.TM.CookLevin.PcpVerifier

The raw polynomial-time classical PCP verifier #

The verifier rejects invalid specifications and malformed field views, constructs the exact circuit within the supplied view budget, evaluates its polynomial, and checks both algebraic identities on coefficient vectors. Its correspondence to typed low-degree proofs is established separately.

Evaluate the concrete circuit polynomial at the supplied field point.

Equations
  • One or more equations did not get rendered due to their size.
Instances For
    theorem MIPRE.TM.CookLevin.Pad.verifierCircuitValue_apply (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (z ev : List Cost.BitStr) :
    verifierCircuitValue.toFun (SAT.pcpInput D n T Q σ x y z ev) = SAT.Circuit.circuitBits (verifierModulus.toFun (SAT.pcpInput D n T Q σ x y z ev)) (List.take (5 * (pcpParams n T Q σ).m + 5) z) (List.drop (5 * (pcpParams n T Q σ).m + 5) z) (pcpCircuitProg.toFun (SAT.pcpInput D n T Q σ x y z ev)).gates

    Pair the five claimed answer evaluations with the five sign coordinates.

    Equations
    • One or more equations did not get rendered due to their size.
    Instances For
      theorem MIPRE.TM.CookLevin.Pad.verifierLiterals_apply (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (z ev : List Cost.BitStr) :
      verifierLiterals.toFun (SAT.pcpInput D n T Q σ x y z ev) = (List.take 5 ev).zip (List.take 5 (List.drop (5 * (pcpParams n T Q σ).m) z))

      Pair the certificate evaluations after the main certificate with each coordinate.

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

        Both field identities, including the single circuit-polynomial evaluation.

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

          The constructed parameter family's exact raw view check.

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

            The actual globally polynomial-time verifier, with both mandatory rejection checks.

            Equations
            • One or more equations did not get rendered due to their size.
            Instances For
              theorem MIPRE.TM.CookLevin.Pad.verifyPcp_true_iff (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (z ev : List Cost.BitStr) :
              verifyPcp.toFun (SAT.pcpInput D n T Q σ x y z ev) = true ↔ SAT.Valid D n T Q σ x y ∧ SAT.ViewFormat (pcpParams n T Q σ) z ev ∧ verifierTests.toFun (SAT.pcpInput D n T Q σ x y z ev) = true
              theorem MIPRE.TM.CookLevin.Pad.verifyPcp_reject_invalid (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (z ev : List Cost.BitStr) (h : ¬SAT.Valid D n T Q σ x y ∨ ¬SAT.ViewFormat (pcpParams n T Q σ) z ev) :
              verifyPcp.toFun (SAT.pcpInput D n T Q σ x y z ev) = false

              Invalid specifications and malformed views are rejected unconditionally.

              theorem MIPRE.TM.CookLevin.Pad.verifyPcp_time_le :
              ∃ (R : Polynomial ℕ), ∀ (D : Cost.Prog) (n T Q σ : ℕ) (x y : Cost.BitStr) (z ev : List Cost.BitStr), SAT.Valid D n T Q σ x y → SAT.ViewFormat (pcpParams n T Q σ) z ev → ∃ t ≤ Polynomial.eval (n.size + T.size + Q + σ) R, verifyPcp.code.Runs (Cost.encode (SAT.pcpInput D n T Q σ x y z ev)) (Cost.encode (verifyPcp.toFun (SAT.pcpInput D n T Q σ x y z ev))) t

              The raw verifier has exactly the source-parameter time bound in the PCP contract.