Oracle computations #
This file defines PCPs and LPCPs in terms of oracle computations.
Main declarations #
Equations
- instEncodableZModOfNeZero q = Encodable.ofEquiv (Fin q) ↑(ZMod.finEquiv q).symm
@[reducible, inline]
RunsInTime oa n means oa halts in at most n steps.
Equations
- RunsInTime _oa _n = (true = true)
Instances For
@[reducible, inline]
abbrev
QueryBound
{ι α : Type}
{proofSpec : OracleSpec ι}
(oa : OracleComp (unifSpec + proofSpec) α)
(q r : ℕ)
:
QueryBound oa q r means oa makes at most q proof queries
and at most r randomness queries.
Equations
- One or more equations did not get rendered due to their size.
Instances For
@[reducible, inline]
Instances For
@[reducible, inline]
A proof is represented as a function π : [ℓ] → F.
π(q) is the answer to query q.
Equations
- ProofOracle π = { spec := OracleSpec.ofFn fun (x : Fin ℓ) => F, impl := fun (q : (OracleSpec.ofFn fun (x : Fin ℓ) => F).Domain) => pure (π q) }
Instances For
@[reducible, inline]
Equations
- PCPOracleSpec F ℓ = unifSpec + OracleSpec.ofFn fun (x : Fin ℓ) => F
Instances For
@[reducible, inline]
Equations
- PCPVerifier α size F ℓ = ((x : α) → OracleComp (PCPOracleSpec F (ℓ (size x))) Bool)
Instances For
@[reducible, inline]
abbrev
LinProofOracle
{F : Type}
[Field F]
{ℓ : ℕ}
(π : Fin ℓ → F)
:
OracleContext (Fin ℓ → F) ProbComp
A linear-query proof: a query is a vector u,
and the answer is the inner product ⟨π, u⟩.
Equations
- LinProofOracle π = { spec := OracleSpec.ofFn fun (x : Fin ℓ → F) => F, impl := fun (u : (OracleSpec.ofFn fun (x : Fin ℓ → F) => F).Domain) => pure (π ⬝ᵥ u) }
Instances For
@[reducible, inline]
Equations
- LPCPOracleSpec F ℓ = unifSpec + OracleSpec.ofFn fun (x : Fin ℓ → F) => F
Instances For
@[reducible, inline]
Equations
- LPCPVerifier α size F ℓ = ((x : α) → OracleComp (LPCPOracleSpec F (ℓ (size x))) Bool)