7.2. Probabilistically Checkable Proofs of Proximity
Definition 7.10. An r-query tester for a string
w\in\{0,1\}^n randomly chooses at most r coordinates, reads only
those symbols, and deterministically accepts or rejects from the answers.
The same definition applies to strings in \Omega^n over any finite
alphabet \Omega.
Lean code for Definition7.2.1●1 definition
Associated Lean declarations
-
FABL.NonadaptiveStringTester[complete]
-
FABL.NonadaptiveStringTester[complete]
-
abbrevdefined in FABL/Chapter07/PCPP.leancomplete
abbrev FABL.NonadaptiveStringTester.{u} (Alphabet : Type u) (n r : ℕ) : Type (u + 1)
abbrev FABL.NonadaptiveStringTester.{u} (Alphabet : Type u) (n r : ℕ) : Type (u + 1)
O'Donnell, Definition 7.10: an `r`-query tester for a length-`n` string over `Alphabet`.
Definition 7.11. A string tester locally tests a property
\mathcal C\subseteq\{0,1\}^n with rejection rate \lambda>0 when it
accepts every member of \mathcal C with probability 1 and, for all
0\le\epsilon\le1,
\operatorname{dist}(w,\mathcal C)>\epsilon
\quad\Longrightarrow\quad
\Pr[\text{tester rejects }w]>\lambda\epsilon,
where distance is relative Hamming distance.
Lean code for Definition7.2.2●1 definition
Associated Lean declarations
-
FABL.IsLocalStringTester[complete]
-
FABL.IsLocalStringTester[complete]
-
abbrevdefined in FABL/Chapter07/PCPP.leancomplete
abbrev FABL.IsLocalStringTester.{u} {Alphabet : Type u} [DecidableEq Alphabet] {n r : ℕ} [NeZero n] (T : FABL.NonadaptiveStringTester Alphabet n r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) : Prop
abbrev FABL.IsLocalStringTester.{u} {Alphabet : Type u} [DecidableEq Alphabet] {n r : ℕ} [NeZero n] (T : FABL.NonadaptiveStringTester Alphabet n r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) : Prop
O'Donnell, Definition 7.11: local testing of a finite-alphabet string property.
-
FABL.IsAllZeroString[complete] -
FABL.IsAllEqualString[complete] -
FABL.pcppBoolF₂Equiv[complete] -
FABL.boolStringParity[complete] -
FABL.IsOddWeightString[complete] -
FABL.allZeroStringTester[complete] -
FABL.allZeroStringTester_acceptanceProbability[complete] -
FABL.allZeroStringTester_rejectionProbability[complete] -
FABL.allZeroStringTester_isLocalTester[complete] -
FABL.allEqualStringTester[complete] -
FABL.allEqualStringTester_rejectionProbability[complete] -
FABL.allEqualStringTester_rejectionProbability_eq[complete] -
FABL.uniformProbability_bool_false_add_true[complete] -
FABL.allEqualStringTester_isLocalTester[complete]
Example 7.12. Let
\mathcal Z=\{0^n\}, \mathcal E=\{0^n,1^n\}, and
\mathcal O=\{w\in\mathbb F_2^n:\sum_iw_i=1\}.
-
Sampling one uniform coordinate and checking that it is zero locally tests
\mathcal Zwith one query and rejection rate1. -
Sampling independent uniform
i,jand checkingw_i=w_jlocally tests\mathcal Ewith two queries and rejection rate1; at distance\epsilonits rejection probability is\frac12-\frac12(1-2\epsilon)^2\ge\epsilon. -
Every tester for
\mathcal Owith perfect completeness must query allncoordinates.
Lean code for Lemma7.2.3●14 declarations
Associated Lean declarations
-
FABL.IsAllZeroString[complete]
-
FABL.IsAllEqualString[complete]
-
FABL.pcppBoolF₂Equiv[complete]
-
FABL.boolStringParity[complete]
-
FABL.IsOddWeightString[complete]
-
FABL.allZeroStringTester[complete]
-
FABL.allZeroStringTester_acceptanceProbability[complete]
-
FABL.allZeroStringTester_rejectionProbability[complete]
-
FABL.allZeroStringTester_isLocalTester[complete]
-
FABL.allEqualStringTester[complete]
-
FABL.allEqualStringTester_rejectionProbability[complete]
-
FABL.allEqualStringTester_rejectionProbability_eq[complete]
-
FABL.uniformProbability_bool_false_add_true[complete]
-
FABL.allEqualStringTester_isLocalTester[complete]
-
FABL.IsAllZeroString[complete] -
FABL.IsAllEqualString[complete] -
FABL.pcppBoolF₂Equiv[complete] -
FABL.boolStringParity[complete] -
FABL.IsOddWeightString[complete] -
FABL.allZeroStringTester[complete] -
FABL.allZeroStringTester_acceptanceProbability[complete] -
FABL.allZeroStringTester_rejectionProbability[complete] -
FABL.allZeroStringTester_isLocalTester[complete] -
FABL.allEqualStringTester[complete] -
FABL.allEqualStringTester_rejectionProbability[complete] -
FABL.allEqualStringTester_rejectionProbability_eq[complete] -
FABL.uniformProbability_bool_false_add_true[complete] -
FABL.allEqualStringTester_isLocalTester[complete]
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.IsAllZeroString {n : ℕ} (w : Fin n → Bool) : Prop
def FABL.IsAllZeroString {n : ℕ} (w : Fin n → Bool) : Prop
The singleton property consisting of the all-zero Boolean string.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.IsAllEqualString {n : ℕ} (w : Fin n → Bool) : Prop
def FABL.IsAllEqualString {n : ℕ} (w : Fin n → Bool) : Prop
The property consisting of the two constant Boolean strings.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.pcppBoolF₂Equiv : Bool ≃ FABL.𝔽₂
def FABL.pcppBoolF₂Equiv : Bool ≃ FABL.𝔽₂
The explicit bridge `false ↔ 0`, `true ↔ 1` between Boolean strings and `𝔽₂`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.boolStringParity {n : ℕ} (w : Fin n → Bool) : FABL.𝔽₂
def FABL.boolStringParity {n : ℕ} (w : Fin n → Bool) : FABL.𝔽₂
Parity of a Boolean string, computed in `𝔽₂`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.IsOddWeightString {n : ℕ} (w : Fin n → Bool) : Prop
def FABL.IsOddWeightString {n : ℕ} (w : Fin n → Bool) : Prop
The property of having an odd number of `true` coordinates.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.allZeroStringTester (n : ℕ) [NeZero n] : FABL.NonadaptiveStringTester Bool n 1
def FABL.allZeroStringTester (n : ℕ) [NeZero n] : FABL.NonadaptiveStringTester Bool n 1
Example 7.12's one-query tester for the all-zero string.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allZeroStringTester_acceptanceProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.acceptanceProbability (FABL.allZeroStringTester n) w = FABL.uniformProbability fun i => w i = false
theorem FABL.allZeroStringTester_acceptanceProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.acceptanceProbability (FABL.allZeroStringTester n) w = FABL.uniformProbability fun i => w i = false
The all-zero tester accepts precisely the sampled zero coordinates.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allZeroStringTester_rejectionProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allZeroStringTester n) w = FABL.uniformProbability fun i => w i = true
theorem FABL.allZeroStringTester_rejectionProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allZeroStringTester n) w = FABL.uniformProbability fun i => w i = true
The all-zero tester rejects with the relative weight of the input string.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allZeroStringTester_isLocalTester {n : ℕ} [NeZero n] : FABL.IsLocalStringTester (FABL.allZeroStringTester n) FABL.IsAllZeroString 1
theorem FABL.allZeroStringTester_isLocalTester {n : ℕ} [NeZero n] : FABL.IsLocalStringTester (FABL.allZeroStringTester n) FABL.IsAllZeroString 1
Example 7.12: the all-zero property has a one-query local tester with rejection rate one.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.allEqualStringTester (n : ℕ) [NeZero n] : FABL.NonadaptiveStringTester Bool n 2
def FABL.allEqualStringTester (n : ℕ) [NeZero n] : FABL.NonadaptiveStringTester Bool n 2
Example 7.12's two-query equality tester.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allEqualStringTester_rejectionProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allEqualStringTester n) w = Finset.univ.expect fun i => Finset.univ.expect fun j => if w i ≠ w j then 1 else 0
theorem FABL.allEqualStringTester_rejectionProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allEqualStringTester n) w = Finset.univ.expect fun i => Finset.univ.expect fun j => if w i ≠ w j then 1 else 0
The equality tester's rejection probability is the probability that two independent coordinates differ.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allEqualStringTester_rejectionProbability_eq {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allEqualStringTester n) w = (2 * FABL.uniformProbability fun i => w i = false) * FABL.uniformProbability fun i => w i = true
theorem FABL.allEqualStringTester_rejectionProbability_eq {n : ℕ} [NeZero n] (w : Fin n → Bool) : FABL.NonadaptiveFunctionTester.rejectionProbability (FABL.allEqualStringTester n) w = (2 * FABL.uniformProbability fun i => w i = false) * FABL.uniformProbability fun i => w i = true
The two independent samples disagree with probability twice the product of the zero and one densities.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.uniformProbability_bool_false_add_true {n : ℕ} [NeZero n] (w : Fin n → Bool) : ((FABL.uniformProbability fun i => w i = false) + FABL.uniformProbability fun i => w i = true) = 1
theorem FABL.uniformProbability_bool_false_add_true {n : ℕ} [NeZero n] (w : Fin n → Bool) : ((FABL.uniformProbability fun i => w i = false) + FABL.uniformProbability fun i => w i = true) = 1
The zero and one coordinate densities partition the uniform probability space.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.allEqualStringTester_isLocalTester {n : ℕ} [NeZero n] : FABL.IsLocalStringTester (FABL.allEqualStringTester n) FABL.IsAllEqualString 1
theorem FABL.allEqualStringTester_isLocalTester {n : ℕ} [NeZero n] : FABL.IsLocalStringTester (FABL.allEqualStringTester n) FABL.IsAllEqualString 1
Example 7.12: the all-equal property has a two-query local tester with rejection rate one.
-
FABL.inputProofWord[complete] -
FABL.PCPPSystem[complete] -
FABL.PCPPSystem.acceptanceProbability[complete] -
FABL.PCPPSystem.rejectionProbability[complete] -
FABL.IsPCPP[complete] -
FABL.IsPCPP.exists_close_of_acceptanceProbability_ge[complete] -
FABL.isPCPP_of_exists_close_of_acceptanceProbability_ge[complete]
Definition 7.13. A property
\mathcal C\subseteq\{0,1\}^n has an r-query, length-\ell,
rejection-rate-\lambda PCPP if there is an r-query tester T for
pairs (w,\Pi)\in\{0,1\}^{n+\ell} such that
w\in\mathcal C
\Longrightarrow
\exists\Pi,\ \Pr[T(w,\Pi)\text{ accepts}]=1,
and, for every 0\le\epsilon\le1,
\operatorname{dist}(w,\mathcal C)>\epsilon
\Longrightarrow
\forall\Pi,\ \Pr[T(w,\Pi)\text{ rejects}]>\lambda\epsilon.
The distance is measured only on the alleged input w, not on the proof.
Lean code for Definition7.2.4●7 declarations
Associated Lean declarations
-
FABL.inputProofWord[complete]
-
FABL.PCPPSystem[complete]
-
FABL.PCPPSystem.acceptanceProbability[complete]
-
FABL.PCPPSystem.rejectionProbability[complete]
-
FABL.IsPCPP[complete]
-
FABL.IsPCPP.exists_close_of_acceptanceProbability_ge[complete]
-
FABL.isPCPP_of_exists_close_of_acceptanceProbability_ge[complete]
-
FABL.inputProofWord[complete] -
FABL.PCPPSystem[complete] -
FABL.PCPPSystem.acceptanceProbability[complete] -
FABL.PCPPSystem.rejectionProbability[complete] -
FABL.IsPCPP[complete] -
FABL.IsPCPP.exists_close_of_acceptanceProbability_ge[complete] -
FABL.isPCPP_of_exists_close_of_acceptanceProbability_ge[complete]
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.inputProofWord.{u} {Alphabet : Type u} {n ℓ : ℕ} (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : Fin n ⊕ Fin ℓ → Alphabet
def FABL.inputProofWord.{u} {Alphabet : Type u} {n ℓ : ℕ} (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : Fin n ⊕ Fin ℓ → Alphabet
Concatenate an alleged input and a proof without hiding the two regions behind arithmetic casts.
-
structuredefined in FABL/Chapter07/PCPP.leancomplete
structure FABL.PCPPSystem.{u} (Alphabet : Type u) (n ℓ r : ℕ) : Type (u + 1)
structure FABL.PCPPSystem.{u} (Alphabet : Type u) (n ℓ r : ℕ) : Type (u + 1)
A finite `r`-query verifier for a length-`n` input and a length-`ℓ` proof.
Fields
verifier : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin ℓ) Alphabet r
The verifier queries the disjoint input/proof address space.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.PCPPSystem.acceptanceProbability.{u} {Alphabet : Type u} {n ℓ r : ℕ} (V : FABL.PCPPSystem Alphabet n ℓ r) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : ℝ
def FABL.PCPPSystem.acceptanceProbability.{u} {Alphabet : Type u} {n ℓ r : ℕ} (V : FABL.PCPPSystem Alphabet n ℓ r) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : ℝ
Acceptance probability of a PCPP verifier on an alleged input and proof.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.PCPPSystem.rejectionProbability.{u} {Alphabet : Type u} {n ℓ r : ℕ} (V : FABL.PCPPSystem Alphabet n ℓ r) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : ℝ
def FABL.PCPPSystem.rejectionProbability.{u} {Alphabet : Type u} {n ℓ r : ℕ} (V : FABL.PCPPSystem Alphabet n ℓ r) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) : ℝ
Rejection probability of a PCPP verifier on an alleged input and proof.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.IsPCPP.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] (V : FABL.PCPPSystem Alphabet n ℓ r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) : Prop
def FABL.IsPCPP.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] (V : FABL.PCPPSystem Alphabet n ℓ r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) : Prop
O'Donnell, Definition 7.13: perfect-completeness PCPP with linear proximity soundness. The distance condition quantifies only over the alleged input `w`; no distance is imposed on the proof. The universal formulation also handles an empty property honestly.
-
theoremdefined in FABL/Chapter07/PCPP.leancomplete
theorem FABL.IsPCPP.exists_close_of_acceptanceProbability_ge.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] {V : FABL.PCPPSystem Alphabet n ℓ r} {P : (Fin n → Alphabet) → Prop} {rate ε : ℝ} (hV : FABL.IsPCPP V P rate) (hε : ε ∈ Set.Icc 0 1) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) (haccept : 1 - rate * ε ≤ V.acceptanceProbability w proof) : FABL.IsCloseToProperty ε w P
theorem FABL.IsPCPP.exists_close_of_acceptanceProbability_ge.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] {V : FABL.PCPPSystem Alphabet n ℓ r} {P : (Fin n → Alphabet) → Prop} {rate ε : ℝ} (hV : FABL.IsPCPP V P rate) (hε : ε ∈ Set.Icc 0 1) (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet) (haccept : 1 - rate * ε ≤ V.acceptanceProbability w proof) : FABL.IsCloseToProperty ε w P
High verifier acceptance yields a close property member whenever the property is nonempty.
-
theoremdefined in FABL/Chapter07/PCPP.leancomplete
theorem FABL.isPCPP_of_exists_close_of_acceptanceProbability_ge.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] (V : FABL.PCPPSystem Alphabet n ℓ r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) (hrate : 0 < rate) (hcomplete : ∀ (w : Fin n → Alphabet), P w → ∃ proof, V.acceptanceProbability w proof = 1) (hclose : ∀ ε ∈ Set.Icc 0 1, ∀ (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet), 1 - rate * ε ≤ V.acceptanceProbability w proof → FABL.IsCloseToProperty ε w P) : FABL.IsPCPP V P rate
theorem FABL.isPCPP_of_exists_close_of_acceptanceProbability_ge.{u} {Alphabet : Type u} [Fintype Alphabet] [DecidableEq Alphabet] {n ℓ r : ℕ} [NeZero n] (V : FABL.PCPPSystem Alphabet n ℓ r) (P : (Fin n → Alphabet) → Prop) (rate : ℝ) (hrate : 0 < rate) (hcomplete : ∀ (w : Fin n → Alphabet), P w → ∃ proof, V.acceptanceProbability w proof = 1) (hclose : ∀ ε ∈ Set.Icc 0 1, ∀ (w : Fin n → Alphabet) (proof : Fin ℓ → Alphabet), 1 - rate * ε ≤ V.acceptanceProbability w proof → FABL.IsCloseToProperty ε w P) : FABL.IsPCPP V P rate
The high-acceptance implication is sufficient for PCPP soundness.
Remark 7.14. The desired PCPP parameters have a very small universal
query bound r, a proof length as short as possible, and a positive
rejection-rate constant independent of the input length.
-
FABL.OddWeightPartialSumCheckSeed[complete] -
FABL.boolPrefixParity[complete] -
FABL.oddWeightPartialSumProof[complete] -
FABL.OddWeightPartialSumCheckHolds[complete] -
FABL.oddWeightPartialSumPCPPSystem[complete] -
FABL.oddWeightPartialSumPCPPSystem_rejectionProbability[complete] -
FABL.oddWeightPartialSumProof_checks[complete] -
FABL.isOddWeightString_of_partialSumChecks[complete] -
FABL.oddWeightPartialSumPCPPSystem_isPCPP[complete]
Example 7.15. For n\ge2, the odd-weight property \mathcal O has a
3-query, length-n-1, rejection-rate-1 PCPP. A valid proof records
the partial sums
\Pi_j=\sum_{i=1}^{j+1}w_i\pmod2.
The verifier uniformly checks one of the local equations
\Pi_1=w_1+w_2,\qquad
\Pi_j=\Pi_{j-1}+w_{j+1},\qquad
\Pi_{n-1}=1.
The formal construction is parameterized as n=m+2, so every dimension
in the stated range has a valid first, step, and final check without an
out-of-range partial-sum index.
Lean code for Lemma7.2.6●9 declarations
Associated Lean declarations
-
FABL.OddWeightPartialSumCheckSeed[complete]
-
FABL.boolPrefixParity[complete]
-
FABL.oddWeightPartialSumProof[complete]
-
FABL.OddWeightPartialSumCheckHolds[complete]
-
FABL.oddWeightPartialSumPCPPSystem[complete]
-
FABL.oddWeightPartialSumPCPPSystem_rejectionProbability[complete]
-
FABL.oddWeightPartialSumProof_checks[complete]
-
FABL.isOddWeightString_of_partialSumChecks[complete]
-
FABL.oddWeightPartialSumPCPPSystem_isPCPP[complete]
-
FABL.OddWeightPartialSumCheckSeed[complete] -
FABL.boolPrefixParity[complete] -
FABL.oddWeightPartialSumProof[complete] -
FABL.OddWeightPartialSumCheckHolds[complete] -
FABL.oddWeightPartialSumPCPPSystem[complete] -
FABL.oddWeightPartialSumPCPPSystem_rejectionProbability[complete] -
FABL.oddWeightPartialSumProof_checks[complete] -
FABL.isOddWeightString_of_partialSumChecks[complete] -
FABL.oddWeightPartialSumPCPPSystem_isPCPP[complete]
-
abbrevdefined in FABL/Chapter07/PCPPConstructions.leancomplete
abbrev FABL.OddWeightPartialSumCheckSeed (m : ℕ) : Type
abbrev FABL.OddWeightPartialSumCheckSeed (m : ℕ) : Type
The `n = m + 2` checks in Example 7.15: the two Boolean seeds are the explicit first and last checks, while `Fin m` indexes the recurrence checks.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.boolPrefixParity {m : ℕ} (w : Fin (m + 2) → Bool) (k : ℕ) : FABL.𝔽₂
def FABL.boolPrefixParity {m : ℕ} (w : Fin (m + 2) → Bool) (k : ℕ) : FABL.𝔽₂
The parity of the first `k` coordinates, interpreted in `𝔽₂`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.oddWeightPartialSumProof {m : ℕ} (w : Fin (m + 2) → Bool) : Fin (m + 1) → Bool
def FABL.oddWeightPartialSumProof {m : ℕ} (w : Fin (m + 2) → Bool) : Fin (m + 1) → Bool
The canonical proof string in Example 7.15 contains the successive partial parities through coordinates `1, ..., m + 1`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.OddWeightPartialSumCheckHolds {m : ℕ} (seed : FABL.OddWeightPartialSumCheckSeed m) (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) : Prop
def FABL.OddWeightPartialSumCheckHolds {m : ℕ} (seed : FABL.OddWeightPartialSumCheckSeed m) (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) : Prop
The mathematical equation checked by each of Example 7.15's explicit endpoint or recurrence seeds.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.oddWeightPartialSumPCPPSystem (m : ℕ) : FABL.PCPPSystem Bool (m + 2) (m + 1) 3
def FABL.oddWeightPartialSumPCPPSystem (m : ℕ) : FABL.PCPPSystem Bool (m + 2) (m + 1) 3
Example 7.15's three-query, length-`m + 1` PCPP system for odd-weight strings of length `m + 2`. The `m = 0` instance has exactly the first and last checks and proof length one.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.oddWeightPartialSumPCPPSystem_rejectionProbability {m : ℕ} (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) : (FABL.oddWeightPartialSumPCPPSystem m).rejectionProbability w proof = FABL.uniformProbability fun seed => ¬FABL.OddWeightPartialSumCheckHolds seed w proof
theorem FABL.oddWeightPartialSumPCPPSystem_rejectionProbability {m : ℕ} (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) : (FABL.oddWeightPartialSumPCPPSystem m).rejectionProbability w proof = FABL.uniformProbability fun seed => ¬FABL.OddWeightPartialSumCheckHolds seed w proof
Example 7.15's verifier rejects with the uniform fraction of failed prefix equations.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.oddWeightPartialSumProof_checks {m : ℕ} (w : Fin (m + 2) → Bool) (hw : FABL.IsOddWeightString w) (seed : FABL.OddWeightPartialSumCheckSeed m) : FABL.OddWeightPartialSumCheckHolds seed w (FABL.oddWeightPartialSumProof w)
theorem FABL.oddWeightPartialSumProof_checks {m : ℕ} (w : Fin (m + 2) → Bool) (hw : FABL.IsOddWeightString w) (seed : FABL.OddWeightPartialSumCheckSeed m) : FABL.OddWeightPartialSumCheckHolds seed w (FABL.oddWeightPartialSumProof w)
Correct partial sums satisfy every first, recurrence, and final check.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.isOddWeightString_of_partialSumChecks {m : ℕ} (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) (hchecks : ∀ (seed : FABL.OddWeightPartialSumCheckSeed m), FABL.OddWeightPartialSumCheckHolds seed w proof) : FABL.IsOddWeightString w
theorem FABL.isOddWeightString_of_partialSumChecks {m : ℕ} (w : Fin (m + 2) → Bool) (proof : Fin (m + 1) → Bool) (hchecks : ∀ (seed : FABL.OddWeightPartialSumCheckSeed m), FABL.OddWeightPartialSumCheckHolds seed w proof) : FABL.IsOddWeightString w
If all prefix equations hold, then the input has odd weight.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.oddWeightPartialSumPCPPSystem_isPCPP (m : ℕ) : FABL.IsPCPP (FABL.oddWeightPartialSumPCPPSystem m) FABL.IsOddWeightString 1
theorem FABL.oddWeightPartialSumPCPPSystem_isPCPP (m : ℕ) : FABL.IsPCPP (FABL.oddWeightPartialSumPCPPSystem m) FABL.IsOddWeightString 1
O'Donnell, Example 7.15, including the explicit `n = 2` endpoint: odd-weight strings of length `m + 2` have a three-query, length-`m + 1` PCPP with rejection rate one.
-
FABL.pcppBoolSignEquiv[complete] -
FABL.booleanStringIndexEquiv[complete] -
FABL.signCubeIndexEquiv[complete] -
FABL.pcppProofFunction[complete] -
FABL.encodeBooleanFunctionProof[complete] -
FABL.coordinateTruthTable[complete] -
FABL.propertyIndexSet[complete] -
FABL.boolTruthTableLiftTester[complete] -
FABL.boolTruthTableLiftTester_acceptanceProbability[complete] -
FABL.coordinateTrueIndexSet[complete] -
FABL.subsetIndicatorSign_coordinateTrueIndexSet[complete] -
FABL.coordinateLocalCorrection_correctProbability_ge[complete] -
FABL.coordinateCorrectionProbability[complete] -
FABL.coordinateConsistencyFunctionTester[complete] -
FABL.coordinateConsistencyFunctionTester_acceptanceProbability[complete] -
FABL.coordinateLocalCorrection_dictator[complete] -
FABL.propertyTruthTableFunctionTester[complete] -
FABL.arbitraryPropertyPCPPSystem[complete] -
FABL.arbitraryPropertyPCPPSystem_acceptanceProbability[complete] -
FABL.arbitraryPropertyPCPPSystem_complete[complete] -
FABL.arbitraryPropertyPCPPSystem_close_of_acceptanceProbability_ge[complete] -
FABL.arbitraryPropertyPCPPSystem_isPCPP[complete] -
FABL.arbitraryPropertyPCPPDescription[complete] -
FABL.exists_arbitraryPropertyPCPPSystem[complete]
Theorem 7.16. Every property
\mathcal C\subseteq\{0,1\}^n has a 3-query PCPP of proof length
2^{2^n}
and rejection rate 0.001.
Writing N=2^n, identify a proof with a Boolean function on
\{0,1\}^N. A correct proof is the truth table of the dictator indexed
by a word w'\in\mathcal C. One branch tests this dictator subclass; the
other locally corrects it at the strings
X^{(j)}_{\iota(y)}=y_j and compares the answers with the alleged input
bits w_j.
The production theorem also covers the empty property: completeness is
vacuous, while every alleged input has normalized distance 1 and the
property-test branch supplies soundness.
Lean code for Theorem7.2.7●24 declarations
Associated Lean declarations
-
FABL.pcppBoolSignEquiv[complete]
-
FABL.booleanStringIndexEquiv[complete]
-
FABL.signCubeIndexEquiv[complete]
-
FABL.pcppProofFunction[complete]
-
FABL.encodeBooleanFunctionProof[complete]
-
FABL.coordinateTruthTable[complete]
-
FABL.propertyIndexSet[complete]
-
FABL.boolTruthTableLiftTester[complete]
-
FABL.boolTruthTableLiftTester_acceptanceProbability[complete]
-
FABL.coordinateTrueIndexSet[complete]
-
FABL.subsetIndicatorSign_coordinateTrueIndexSet[complete]
-
FABL.coordinateLocalCorrection_correctProbability_ge[complete]
-
FABL.coordinateCorrectionProbability[complete]
-
FABL.coordinateConsistencyFunctionTester[complete]
-
FABL.coordinateConsistencyFunctionTester_acceptanceProbability[complete]
-
FABL.coordinateLocalCorrection_dictator[complete]
-
FABL.propertyTruthTableFunctionTester[complete]
-
FABL.arbitraryPropertyPCPPSystem[complete]
-
FABL.arbitraryPropertyPCPPSystem_acceptanceProbability[complete]
-
FABL.arbitraryPropertyPCPPSystem_complete[complete]
-
FABL.arbitraryPropertyPCPPSystem_close_of_acceptanceProbability_ge[complete]
-
FABL.arbitraryPropertyPCPPSystem_isPCPP[complete]
-
FABL.arbitraryPropertyPCPPDescription[complete]
-
FABL.exists_arbitraryPropertyPCPPSystem[complete]
-
FABL.pcppBoolSignEquiv[complete] -
FABL.booleanStringIndexEquiv[complete] -
FABL.signCubeIndexEquiv[complete] -
FABL.pcppProofFunction[complete] -
FABL.encodeBooleanFunctionProof[complete] -
FABL.coordinateTruthTable[complete] -
FABL.propertyIndexSet[complete] -
FABL.boolTruthTableLiftTester[complete] -
FABL.boolTruthTableLiftTester_acceptanceProbability[complete] -
FABL.coordinateTrueIndexSet[complete] -
FABL.subsetIndicatorSign_coordinateTrueIndexSet[complete] -
FABL.coordinateLocalCorrection_correctProbability_ge[complete] -
FABL.coordinateCorrectionProbability[complete] -
FABL.coordinateConsistencyFunctionTester[complete] -
FABL.coordinateConsistencyFunctionTester_acceptanceProbability[complete] -
FABL.coordinateLocalCorrection_dictator[complete] -
FABL.propertyTruthTableFunctionTester[complete] -
FABL.arbitraryPropertyPCPPSystem[complete] -
FABL.arbitraryPropertyPCPPSystem_acceptanceProbability[complete] -
FABL.arbitraryPropertyPCPPSystem_complete[complete] -
FABL.arbitraryPropertyPCPPSystem_close_of_acceptanceProbability_ge[complete] -
FABL.arbitraryPropertyPCPPSystem_isPCPP[complete] -
FABL.arbitraryPropertyPCPPDescription[complete] -
FABL.exists_arbitraryPropertyPCPPSystem[complete]
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.pcppBoolSignEquiv : Bool ≃ FABL.Sign
def FABL.pcppBoolSignEquiv : Bool ≃ FABL.Sign
The explicit alphabet equivalence used to interpret a Boolean proof string as a sign-valued truth table.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.booleanStringIndexEquiv (n : ℕ) : (Fin n → Bool) ≃ Fin (2 ^ n)
def FABL.booleanStringIndexEquiv (n : ℕ) : (Fin n → Bool) ≃ Fin (2 ^ n)
A fixed enumeration of length-`n` Boolean strings.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.signCubeIndexEquiv (N : ℕ) : FABL.SignCube N ≃ Fin (2 ^ N)
def FABL.signCubeIndexEquiv (N : ℕ) : FABL.SignCube N ≃ Fin (2 ^ N)
A fixed enumeration of the sign cube, used for proof-string addresses.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.pcppProofFunction {N : ℕ} (proof : Fin (2 ^ N) → Bool) : FABL.BooleanFunction N
def FABL.pcppProofFunction {N : ℕ} (proof : Fin (2 ^ N) → Bool) : FABL.BooleanFunction N
Interpret a Boolean proof string as a sign-valued Boolean function.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.encodeBooleanFunctionProof {N : ℕ} (f : FABL.BooleanFunction N) : Fin (2 ^ N) → Bool
def FABL.encodeBooleanFunctionProof {N : ℕ} (f : FABL.BooleanFunction N) : Fin (2 ^ N) → Bool
Encode a sign-valued Boolean function as its Boolean proof truth table.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.coordinateTruthTable (n : ℕ) (j : Fin n) : FABL.SignCube (2 ^ n)
def FABL.coordinateTruthTable (n : ℕ) (j : Fin n) : FABL.SignCube (2 ^ n)
The truth table of the `j`th coordinate on length-`n` Boolean strings.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.propertyIndexSet {n : ℕ} (P : (Fin n → Bool) → Prop) : Finset (Fin (2 ^ n))
def FABL.propertyIndexSet {n : ℕ} (P : (Fin n → Bool) → Prop) : Finset (Fin (2 ^ n))
The truth-table indices of the strings in a fixed property.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.boolTruthTableLiftTester {r N : ℕ} (T : FABL.NonadaptiveFunctionTester (FABL.SignCube N) FABL.Sign r) (n : ℕ) : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ N)) Bool r
def FABL.boolTruthTableLiftTester {r N : ℕ} (T : FABL.NonadaptiveFunctionTester (FABL.SignCube N) FABL.Sign r) (n : ℕ) : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ N)) Bool r
Transport a sign-valued truth-table tester to the proof region of a Boolean PCPP word.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.boolTruthTableLiftTester_acceptanceProbability {r N : ℕ} (T : FABL.NonadaptiveFunctionTester (FABL.SignCube N) FABL.Sign r) (n : ℕ) (w : Fin n → Bool) (proof : Fin (2 ^ N) → Bool) : (FABL.boolTruthTableLiftTester T n).acceptanceProbability (FABL.inputProofWord w proof) = T.acceptanceProbability (FABL.pcppProofFunction proof)
theorem FABL.boolTruthTableLiftTester_acceptanceProbability {r N : ℕ} (T : FABL.NonadaptiveFunctionTester (FABL.SignCube N) FABL.Sign r) (n : ℕ) (w : Fin n → Bool) (proof : Fin (2 ^ N) → Bool) : (FABL.boolTruthTableLiftTester T n).acceptanceProbability (FABL.inputProofWord w proof) = T.acceptanceProbability (FABL.pcppProofFunction proof)
The lift preserves the tested truth table's acceptance probability exactly.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.coordinateTrueIndexSet (n : ℕ) (j : Fin n) : Finset (Fin (2 ^ n))
def FABL.coordinateTrueIndexSet (n : ℕ) (j : Fin n) : Finset (Fin (2 ^ n))
Indices at which the `j`th coordinate truth table has value `-1`.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.subsetIndicatorSign_coordinateTrueIndexSet (n : ℕ) (j : Fin n) : FABL.subsetIndicatorSign (FABL.coordinateTrueIndexSet n j) = FABL.coordinateTruthTable n j
theorem FABL.subsetIndicatorSign_coordinateTrueIndexSet (n : ℕ) (j : Fin n) : FABL.subsetIndicatorSign (FABL.coordinateTrueIndexSet n j) = FABL.coordinateTruthTable n j
The subset-indicator sign vector at a coordinate is its full Boolean truth table.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.coordinateLocalCorrection_correctProbability_ge {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (i : Fin (2 ^ n)) (δ : ℝ) (hclose : FABL.relativeHammingDist f (FABL.dictator i) ≤ δ) : 1 - 2 * δ ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)
theorem FABL.coordinateLocalCorrection_correctProbability_ge {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (i : Fin (2 ^ n)) (δ : ℝ) (hclose : FABL.relativeHammingDist f (FABL.dictator i) ≤ δ) : 1 - 2 * δ ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)
Local correction at a coordinate truth table recovers the corresponding bit of a nearby dictator with probability at least `1 - 2δ`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.coordinateCorrectionProbability {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (bit : Bool) : ℝ
def FABL.coordinateCorrectionProbability {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (bit : Bool) : ℝ
Success probability of local correction at one requested Boolean coordinate.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.coordinateConsistencyFunctionTester (n : ℕ) [NeZero n] : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ 2 ^ n)) Bool 3
def FABL.coordinateConsistencyFunctionTester (n : ℕ) [NeZero n] : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ 2 ^ n)) Bool 3
The three-query consistency test compares one alleged input bit with its two-query local correction from the alleged proof truth table.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.coordinateConsistencyFunctionTester_acceptanceProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) : (FABL.coordinateConsistencyFunctionTester n).acceptanceProbability (FABL.inputProofWord w proof) = Finset.univ.expect fun j => FABL.coordinateCorrectionProbability (FABL.pcppProofFunction proof) j (w j)
theorem FABL.coordinateConsistencyFunctionTester_acceptanceProbability {n : ℕ} [NeZero n] (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) : (FABL.coordinateConsistencyFunctionTester n).acceptanceProbability (FABL.inputProofWord w proof) = Finset.univ.expect fun j => FABL.coordinateCorrectionProbability (FABL.pcppProofFunction proof) j (w j)
Acceptance of the consistency component is the coordinate average of local-correction success probabilities.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.coordinateLocalCorrection_dictator {n : ℕ} (w : Fin n → Bool) (j : Fin n) (y : FABL.F₂Cube (2 ^ n)) : FABL.localCorrection (fun z => FABL.dictator ((FABL.booleanStringIndexEquiv n) w) ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv (w j)
theorem FABL.coordinateLocalCorrection_dictator {n : ℕ} (w : Fin n → Bool) (j : Fin n) (y : FABL.F₂Cube (2 ^ n)) : FABL.localCorrection (fun z => FABL.dictator ((FABL.booleanStringIndexEquiv n) w) ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv (w j)
Local correction of the truth table of a dictator returns the corresponding original Boolean coordinate on every correction seed.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.propertyTruthTableFunctionTester {n : ℕ} (P : (Fin n → Bool) → Prop) : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ 2 ^ n)) Bool 3
def FABL.propertyTruthTableFunctionTester {n : ℕ} (P : (Fin n → Bool) → Prop) : FABL.NonadaptiveFunctionTester (Fin n ⊕ Fin (2 ^ 2 ^ n)) Bool 3
The proof-test component applies Theorem 7.9 to the truth-table indices of a property.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.arbitraryPropertyPCPPSystem {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.PCPPSystem Bool n (2 ^ 2 ^ n) 3
def FABL.arbitraryPropertyPCPPSystem {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.PCPPSystem Bool n (2 ^ 2 ^ n) 3
Theorem 7.16's verifier uniformly chooses the property truth-table test or the input/proof consistency test.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.arbitraryPropertyPCPPSystem_acceptanceProbability {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) : (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w proof = ((FABL.propertyTruthTableFunctionTester P).acceptanceProbability (FABL.inputProofWord w proof) + (FABL.coordinateConsistencyFunctionTester n).acceptanceProbability (FABL.inputProofWord w proof)) / 2
theorem FABL.arbitraryPropertyPCPPSystem_acceptanceProbability {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) : (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w proof = ((FABL.propertyTruthTableFunctionTester P).acceptanceProbability (FABL.inputProofWord w proof) + (FABL.coordinateConsistencyFunctionTester n).acceptanceProbability (FABL.inputProofWord w proof)) / 2
The two components give the verifier acceptance probability as their arithmetic mean.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.arbitraryPropertyPCPPSystem_complete {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (w : Fin n → Bool) (hw : P w) : (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w (FABL.encodeBooleanFunctionProof (FABL.dictator ((FABL.booleanStringIndexEquiv n) w))) = 1
theorem FABL.arbitraryPropertyPCPPSystem_complete {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (w : Fin n → Bool) (hw : P w) : (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w (FABL.encodeBooleanFunctionProof (FABL.dictator ((FABL.booleanStringIndexEquiv n) w))) = 1
The encoded dictator truth table is a perfect proof for every member of the property.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.arbitraryPropertyPCPPSystem_close_of_acceptanceProbability_ge {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (ε : ℝ) (hε : ε ∈ Set.Icc 0 1) (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) (haccept : 1 - 1 / 1000 * ε ≤ (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w proof) : FABL.IsCloseToProperty ε w P
theorem FABL.arbitraryPropertyPCPPSystem_close_of_acceptanceProbability_ge {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] (ε : ℝ) (hε : ε ∈ Set.Icc 0 1) (w : Fin n → Bool) (proof : Fin (2 ^ 2 ^ n) → Bool) (haccept : 1 - 1 / 1000 * ε ≤ (FABL.arbitraryPropertyPCPPSystem P).acceptanceProbability w proof) : FABL.IsCloseToProperty ε w P
High acceptance of Theorem 7.16's verifier yields an input within `ε` of the property. The empty-property case is discharged by the property component itself.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.arbitraryPropertyPCPPSystem_isPCPP {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.IsPCPP (FABL.arbitraryPropertyPCPPSystem P) P (1 / 1000)
theorem FABL.arbitraryPropertyPCPPSystem_isPCPP {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.IsPCPP (FABL.arbitraryPropertyPCPPSystem P) P (1 / 1000)
O'Donnell, Theorem 7.16: every nonempty-length Boolean string property has a three-query PCPP with proof length exactly `2^(2^n)` and rejection rate `.001`.
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.arbitraryPropertyPCPPDescription {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.PCPPDescription n P
def FABL.arbitraryPropertyPCPPDescription {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : FABL.PCPPDescription n P
The exact semantic resource description supplied by Theorem 7.16.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.exists_arbitraryPropertyPCPPSystem {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : ∃ V, FABL.IsPCPP V P (1 / 1000)
theorem FABL.exists_arbitraryPropertyPCPPSystem {n : ℕ} (P : (Fin n → Bool) → Prop) [NeZero n] : ∃ V, FABL.IsPCPP V P (1 / 1000)
The existential book-facing form of Theorem 7.16, retaining its exact proof length, query count, and rejection rate.
Equation (7.1). If a proof function \Pi has relative Hamming distance
at most 200\lambda\epsilon from the dictator
\chi_{\iota(w')}, then for every coordinate j,
\Pr[\operatorname{LC}_{\Pi}(X^{(j)})=w'_j]
\ge1-400\lambda\epsilon\ge\frac12.
Here \operatorname{LC} is the BLR local-correction procedure and the
last inequality is used with \lambda=.001 and \epsilon\le1.
Lean code for Lemma7.2.8●1 theorem
Associated Lean declarations
-
FABL.equation_7_1[complete]
-
FABL.equation_7_1[complete]
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.equation_7_1 {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (i : Fin (2 ^ n)) (ε : ℝ) (hε : ε ∈ Set.Icc 0 1) (hclose : FABL.relativeHammingDist f (FABL.dictator i) ≤ 200 * (1 / 1000) * ε) : (1 - 400 * (1 / 1000) * ε ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)) ∧ 1 / 2 ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)
theorem FABL.equation_7_1 {n : ℕ} (f : FABL.BooleanFunction (2 ^ n)) (j : Fin n) (i : Fin (2 ^ n)) (ε : ℝ) (hε : ε ∈ Set.Icc 0 1) (hclose : FABL.relativeHammingDist f (FABL.dictator i) ≤ 200 * (1 / 1000) * ε) : (1 - 400 * (1 / 1000) * ε ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)) ∧ 1 / 2 ≤ FABL.uniformProbability fun y => FABL.localCorrection (fun z => f ((FABL.binaryCubeSignEquiv (2 ^ n)) z)) ((FABL.binaryCubeSignEquiv (2 ^ n)).symm (FABL.coordinateTruthTable n j)) y = FABL.pcppBoolSignEquiv ((FABL.booleanStringIndexEquiv n).symm i j)
O'Donnell, Equation (7.1): at rate `λ = .001`, a proof within `200λε` of a dictator locally corrects every requested bit with probability at least `1 - 400λε`, hence at least one half for `ε ≤ 1`.
-
FABL.OrderedBooleanGate[complete] -
FABL.BooleanCircuit[complete] -
FABL.BooleanCircuit.evalGate[complete] -
FABL.BooleanCircuit.eval[complete] -
FABL.BooleanCircuit.size[complete] -
FABL.BooleanCircuit.acceptedProperty[complete]
Equation (7.2). The string property accepted by an n-input Boolean
circuit C is
\mathcal C_C=\{w\in\{0,1\}^n:C(w)=1\}.
Lean code for Definition7.2.9●6 definitions
Associated Lean declarations
-
FABL.OrderedBooleanGate[complete]
-
FABL.BooleanCircuit[complete]
-
FABL.BooleanCircuit.evalGate[complete]
-
FABL.BooleanCircuit.eval[complete]
-
FABL.BooleanCircuit.size[complete]
-
FABL.BooleanCircuit.acceptedProperty[complete]
-
FABL.OrderedBooleanGate[complete] -
FABL.BooleanCircuit[complete] -
FABL.BooleanCircuit.evalGate[complete] -
FABL.BooleanCircuit.eval[complete] -
FABL.BooleanCircuit.size[complete] -
FABL.BooleanCircuit.acceptedProperty[complete]
-
inductivedefined in FABL/Chapter07/PCPP.leancomplete
inductive FABL.OrderedBooleanGate (n i : ℕ) : Type
inductive FABL.OrderedBooleanGate (n i : ℕ) : Type
One gate in a topologically ordered Boolean DAG. A gate at position `i` can reference only the preceding `i` gates.
Constructors
FABL.OrderedBooleanGate.input {n i : ℕ} (inputIndex : Fin n) : FABL.OrderedBooleanGate n i
Read an input bit.
FABL.OrderedBooleanGate.const {n i : ℕ} (value : Bool) : FABL.OrderedBooleanGate n i
A Boolean constant.
FABL.OrderedBooleanGate.neg {n i : ℕ} (source : Fin i) : FABL.OrderedBooleanGate n i
Negation of an earlier gate.
FABL.OrderedBooleanGate.and {n i : ℕ} (left right : Fin i) : FABL.OrderedBooleanGate n i
Conjunction of two earlier gates.
FABL.OrderedBooleanGate.or {n i : ℕ} (left right : Fin i) : FABL.OrderedBooleanGate n i
Disjunction of two earlier gates.
-
structuredefined in FABL/Chapter07/PCPP.leancomplete
structure FABL.BooleanCircuit (n : ℕ) : Type
structure FABL.BooleanCircuit (n : ℕ) : Type
A finite, single-output, topologically ordered Boolean DAG. The dependent gate table makes cyclic or forward references unrepresentable. Sharing is retained, so `gateCount` is the circuit size rather than the size of an unfolded formula.
Fields
gateCount : ℕ
Number of gates.
gates : (i : Fin self.gateCount) → FABL.OrderedBooleanGate n ↑i
Gate at each position in topological order.
output : Fin self.gateCount
Distinguished output gate. Its type forces every circuit to contain a gate.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.BooleanCircuit.evalGate {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) (i : Fin C.gateCount) : Bool
def FABL.BooleanCircuit.evalGate {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) (i : Fin C.gateCount) : Bool
Evaluate a gate of an ordered Boolean DAG.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.BooleanCircuit.eval {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) : Bool
def FABL.BooleanCircuit.eval {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) : Bool
Evaluate the output gate of a Boolean circuit.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.BooleanCircuit.size {n : ℕ} (C : FABL.BooleanCircuit n) : ℕ
def FABL.BooleanCircuit.size {n : ℕ} (C : FABL.BooleanCircuit n) : ℕ
Circuit size in Definition 7.17.
-
defdefined in FABL/Chapter07/PCPP.leancomplete
def FABL.BooleanCircuit.acceptedProperty {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) : Prop
def FABL.BooleanCircuit.acceptedProperty {n : ℕ} (C : FABL.BooleanCircuit n) (input : Fin n → Bool) : Prop
O'Donnell, Equation (7.2): the string property accepted by a circuit.
-
FABL.PCPPDescription[complete] -
FABL.SemanticPCPPReduction[complete] -
FABL.BinaryEncoding[complete] -
FABL.BinaryEncoding.encode_injective[complete] -
FABL.BinaryEncoding.language[complete] -
FABL.PackedBooleanCircuit[complete] -
FABL.PackedBooleanCircuit.size[complete] -
FABL.BooleanCircuitEncoding[complete] -
FABL.PackedPCPPDescription[complete] -
FABL.packPCPPDescription[complete] -
FABL.PolynomialTimeBound₂[complete] -
FABL.OutputSensitivePCPPReduction[complete] -
FABL.ProofLengthPolynomiallyBounded[complete] -
FABL.OutputSensitivePCPPReduction.toPolyTimeComputable[complete] -
FABL.OutputSensitivePCPPReduction.toPolytimeMap[complete]
Definition 7.17. A PCPP reduction is an algorithm which, given a finite
encoding of a Boolean circuit C, outputs a description of a PCPP for the
accepted property \mathcal C_C. It has query bound r, proof length
\ell(n,\operatorname{size}(C)), and rejection rate \lambda when every
output system has those parameters. Its machine running time is bounded
by a polynomial in the two quantities
\operatorname{size}(C)
\quad\text{and}\quad
\ell(n,\operatorname{size}(C)).
This is a two-parameter output-sensitive bound; it is not ordinary
polynomial time in the circuit encoding when \ell is exponential.
For the canonical packed ordered-DAG encoding used by the formal machine
adapter, \operatorname{size}(C) is the declared input length plus the
gate count; the codec certifies that this representation size is bounded by
the encoded bit length.
Lean code for Definition7.2.10●15 declarations
Associated Lean declarations
-
FABL.PCPPDescription[complete]
-
FABL.SemanticPCPPReduction[complete]
-
FABL.BinaryEncoding[complete]
-
FABL.BinaryEncoding.encode_injective[complete]
-
FABL.BinaryEncoding.language[complete]
-
FABL.PackedBooleanCircuit[complete]
-
FABL.PackedBooleanCircuit.size[complete]
-
FABL.BooleanCircuitEncoding[complete]
-
FABL.PackedPCPPDescription[complete]
-
FABL.packPCPPDescription[complete]
-
FABL.PolynomialTimeBound₂[complete]
-
FABL.OutputSensitivePCPPReduction[complete]
-
FABL.ProofLengthPolynomiallyBounded[complete]
-
FABL.OutputSensitivePCPPReduction.toPolyTimeComputable[complete]
-
FABL.OutputSensitivePCPPReduction.toPolytimeMap[complete]
-
FABL.PCPPDescription[complete] -
FABL.SemanticPCPPReduction[complete] -
FABL.BinaryEncoding[complete] -
FABL.BinaryEncoding.encode_injective[complete] -
FABL.BinaryEncoding.language[complete] -
FABL.PackedBooleanCircuit[complete] -
FABL.PackedBooleanCircuit.size[complete] -
FABL.BooleanCircuitEncoding[complete] -
FABL.PackedPCPPDescription[complete] -
FABL.packPCPPDescription[complete] -
FABL.PolynomialTimeBound₂[complete] -
FABL.OutputSensitivePCPPReduction[complete] -
FABL.ProofLengthPolynomiallyBounded[complete] -
FABL.OutputSensitivePCPPReduction.toPolyTimeComputable[complete] -
FABL.OutputSensitivePCPPReduction.toPolytimeMap[complete]
-
structuredefined in FABL/Chapter07/PCPP.leancomplete
structure FABL.PCPPDescription (n : ℕ) [NeZero n] (P : (Fin n → Bool) → Prop) : Type 1
structure FABL.PCPPDescription (n : ℕ) [NeZero n] (P : (Fin n → Bool) → Prop) : Type 1
A semantic PCPP description for a string property. The separate complexity adapter encodes this data and certifies the output-sensitive runtime of a reduction which produces it.
Fields
proofLength : ℕ
Proof length.
queryCount : ℕ
Query count.
system : FABL.PCPPSystem Bool n self.proofLength self.queryCount
Finite verifier.
rejectionRate : ℝ
Rejection rate.
isPCPP : FABL.IsPCPP self.system P self.rejectionRate
The verifier has the stated PCPP semantics.
-
abbrevdefined in FABL/Chapter07/PCPP.leancomplete
abbrev FABL.SemanticPCPPReduction : Type 1
abbrev FABL.SemanticPCPPReduction : Type 1
The pure semantic layer of a PCPP reduction, before machine encoding and runtime charges.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.BinaryEncoding.{u_1} (A : Type u_1) : Type u_1
structure FABL.BinaryEncoding.{u_1} (A : Type u_1) : Type u_1
An injective binary encoding with a partial decoder. Failure to decode is represented by `none`; successful decoding is canonical.
Fields
encode : A → List Bool
Encode a semantic object as a binary string.
decode : List Bool → Option A
Decode a binary string, returning `none` on malformed input.
decode_encode : ∀ (object : A), self.decode (self.encode object) = some object
Encoding followed by decoding recovers the object.
encode_decode : ∀ {bits : List Bool} {object : A}, self.decode bits = some object → self.encode object = bits
Every successfully decoded string is the canonical encoding of its result.
-
theoremdefined in FABL/Chapter07/Complexity.leancomplete
theorem FABL.BinaryEncoding.encode_injective.{u_1} {A : Type u_1} (encoding : FABL.BinaryEncoding A) : Function.Injective encoding.encode
theorem FABL.BinaryEncoding.encode_injective.{u_1} {A : Type u_1} (encoding : FABL.BinaryEncoding A) : Function.Injective encoding.encode
Every binary encoding is injective.
-
defdefined in FABL/Chapter07/Complexity.leancomplete
def FABL.BinaryEncoding.language.{u_1} {A : Type u_1} (encoding : FABL.BinaryEncoding A) : Language Bool
def FABL.BinaryEncoding.language.{u_1} {A : Type u_1} (encoding : FABL.BinaryEncoding A) : Language Bool
Language of well-formed strings for an encoding.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.PackedBooleanCircuit : Type
structure FABL.PackedBooleanCircuit : Type
A Boolean circuit with the nonzero input length required by Definition 7.17.
Fields
inputLength : ℕ
Number of input bits.
inputLength_ne_zero : self.inputLength ≠ 0
PCPP proximity is normalized by this positive input length.
circuit : FABL.BooleanCircuit self.inputLength
Canonical ordered-DAG circuit from `PCPP.lean`.
-
defdefined in FABL/Chapter07/Complexity.leancomplete
def FABL.PackedBooleanCircuit.size (C : FABL.PackedBooleanCircuit) : ℕ
def FABL.PackedBooleanCircuit.size (C : FABL.PackedBooleanCircuit) : ℕ
Representation size of a packed circuit: declared input coordinates plus ordered-DAG gates.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.BooleanCircuitEncoding : Type
structure FABL.BooleanCircuitEncoding : Type
An honest circuit encoding additionally records that the representation size is bounded by the encoded input length. This is the size-faithfulness needed to pass from output-sensitive time to ordinary input-length polynomial time.
Extends
-
FABL.BinaryEncoding FABL.PackedBooleanCircuit
Fields
encode : FABL.PackedBooleanCircuit → List Bool
Inherited from-
FABL.BinaryEncoding
decode : List Bool → Option FABL.PackedBooleanCircuit
Inherited from-
FABL.BinaryEncoding
decode_encode : ∀ (object : FABL.PackedBooleanCircuit), self.decode (self.encode object) = some object
Inherited from-
FABL.BinaryEncoding
encode_decode : ∀ {bits : List Bool} {object : FABL.PackedBooleanCircuit}, self.decode bits = some object → self.encode object = bits
Inherited from-
FABL.BinaryEncoding
size_le_encode_length : ∀ (C : FABL.PackedBooleanCircuit), C.size ≤ (self.encode C).length
A serialized circuit contains at least one bit per unit of represented input and gate data.
-
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.PackedPCPPDescription (semantic : FABL.SemanticPCPPReduction) : Type 1
structure FABL.PackedPCPPDescription (semantic : FABL.SemanticPCPPReduction) : Type 1
A PCPP description in the image of one fixed semantic reduction, packaged together with its source circuit. The equality field prevents the output codec from pretending to serialize an arbitrary real-valued PCPP description.
Fields
source : FABL.PackedBooleanCircuit
Source circuit.
description : FABL.PCPPDescription self.source.inputLength self.source.circuit.acceptedProperty
Semantic PCPP description for the source circuit.
description_eq : self.description = semantic self.source.circuit
The description is exactly the output selected by the semantic reduction.
-
defdefined in FABL/Chapter07/Complexity.leancomplete
def FABL.packPCPPDescription (semantic : FABL.SemanticPCPPReduction) (C : FABL.PackedBooleanCircuit) : FABL.PackedPCPPDescription fun {n} [NeZero n] => semantic
def FABL.packPCPPDescription (semantic : FABL.SemanticPCPPReduction) (C : FABL.PackedBooleanCircuit) : FABL.PackedPCPPDescription fun {n} [NeZero n] => semantic
Package the output of an existing semantic PCPP reduction.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.PolynomialTimeBound₂ : Type
structure FABL.PolynomialTimeBound₂ : Type
A two-parameter time bound certified polynomial in the sum of its parameters. Over natural parameters this is the standard `poly(first, second)` bound while retaining the two arguments in the machine statement.
Fields
timeBound : ℕ → ℕ → ℕ
Concrete bound as a function of two size parameters.
polynomial : Polynomial ℕ
Polynomial majorant.
le_polynomial : ∀ (first second : ℕ), self.timeBound first second ≤ Polynomial.eval (first + second) self.polynomial
The two-parameter bound is polynomial.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.OutputSensitivePCPPReduction (circuitEncoding : FABL.BooleanCircuitEncoding) : Type 1
structure FABL.OutputSensitivePCPPReduction (circuitEncoding : FABL.BooleanCircuitEncoding) : Type 1
Definition 7.17's machine boundary. The machine runs on total binary strings, with malformed encodings handled by the explicit `none` decoder branch. On a valid circuit its CSLib runtime is bounded in the two independent parameters `size C` and the generated proof length.
Fields
semantic : FABL.SemanticPCPPReduction
Pure PCPP construction.
descriptionEncoding : FABL.BinaryEncoding (FABL.PackedPCPPDescription fun {n} [NeZero n] => self.semantic)
Binary encoding of semantic outputs.
output : List Bool → List Bool
Total encoded output function; behavior on malformed encodings remains explicit below.
output_encode : ∀ (C : FABL.PackedBooleanCircuit), self.output (circuitEncoding.encode C) = self.descriptionEncoding.encode (FABL.packPCPPDescription (fun {n} [NeZero n] => self.semantic) C)
The machine's output agrees with the semantic PCPP construction on canonical inputs.
machine : Cslib.Turing.SingleTapeTM Bool
Underlying CSLib single-tape machine.
runtime : FABL.PolynomialTimeBound₂
Runtime as a polynomially bounded function of circuit size and proof length.
outputsWithinTime : ∀ (input : List Bool), self.machine.OutputsWithinTime input (self.output input) (match circuitEncoding.decode input with | some C => self.runtime.timeBound C.size (self.semantic C.circuit).proofLength | none => self.runtime.timeBound input.length 0)
Actual CSLib bounded execution. Malformed strings use `(input.length, 0)`; valid strings use `(circuit size, generated proof length)`.
-
structuredefined in FABL/Chapter07/Complexity.leancomplete
structure FABL.ProofLengthPolynomiallyBounded {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) : Type
structure FABL.ProofLengthPolynomiallyBounded {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) : Type
The additional condition under which an output-sensitive PCPP construction is ordinary input-length polynomial time.
Fields
polynomial : Polynomial ℕ
Polynomial proof-length majorant in circuit representation size.
proofLength_le : ∀ (C : FABL.PackedBooleanCircuit), (reduction.semantic C.circuit).proofLength ≤ Polynomial.eval C.size self.polynomial
Generated proof lengths obey the majorant.
-
defdefined in FABL/Chapter07/Complexity.leancomplete
def FABL.OutputSensitivePCPPReduction.toPolyTimeComputable {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) (hproof : FABL.ProofLengthPolynomiallyBounded reduction) : Cslib.Turing.SingleTapeTM.PolyTimeComputable reduction.output
def FABL.OutputSensitivePCPPReduction.toPolyTimeComputable {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) (hproof : FABL.ProofLengthPolynomiallyBounded reduction) : Cslib.Turing.SingleTapeTM.PolyTimeComputable reduction.output
An output-sensitive PCPP reduction becomes CSLib polynomial-time computable when its proof length is polynomially bounded by circuit size.
-
defdefined in FABL/Chapter07/Complexity.leancomplete
def FABL.OutputSensitivePCPPReduction.toPolytimeMap {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) (hproof : FABL.ProofLengthPolynomiallyBounded reduction) : FABL.PolytimeMap
def FABL.OutputSensitivePCPPReduction.toPolytimeMap {circuitEncoding : FABL.BooleanCircuitEncoding} (reduction : FABL.OutputSensitivePCPPReduction circuitEncoding) (hproof : FABL.ProofLengthPolynomiallyBounded reduction) : FABL.PolytimeMap
The corresponding book-facing polynomial-time map, available under the same proof-length hypothesis and not otherwise.
Theorem 7.18. There is a 3-query PCPP reduction with proof length
2^{2^n} and rejection rate 0.001. The reduction enumerates the
accepted property of the input circuit and instantiates the construction of
Theorem 7.16 within time polynomial in the circuit size and its output
length.
The associated production declarations prove the complete finite semantic construction and its exact resources. The machine-facing output-sensitive certificate is represented by Definition 7.17's injected CSLib adapter; no ordinary input-length polynomial-time conclusion is inferred for this doubly-exponential output.
Lean code for Theorem7.2.11●2 declarations
Associated Lean declarations
-
defdefined in FABL/Chapter07/PCPPConstructions.leancomplete
def FABL.exhaustiveCircuitSemanticPCPPReduction : FABL.SemanticPCPPReduction
def FABL.exhaustiveCircuitSemanticPCPPReduction : FABL.SemanticPCPPReduction
The pure semantic reduction in Theorem 7.18 applies Theorem 7.16 to the property accepted by the input circuit. Its output-sensitive running-time certification belongs to the complexity adapter.
-
theoremdefined in FABL/Chapter07/PCPPConstructions.leancomplete
theorem FABL.exhaustiveCircuitSemanticPCPPReduction_resources {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.exhaustiveCircuitSemanticPCPPReduction C).proofLength = 2 ^ 2 ^ n ∧ (FABL.exhaustiveCircuitSemanticPCPPReduction C).queryCount = 3 ∧ (FABL.exhaustiveCircuitSemanticPCPPReduction C).rejectionRate = 1 / 1000
theorem FABL.exhaustiveCircuitSemanticPCPPReduction_resources {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.exhaustiveCircuitSemanticPCPPReduction C).proofLength = 2 ^ 2 ^ n ∧ (FABL.exhaustiveCircuitSemanticPCPPReduction C).queryCount = 3 ∧ (FABL.exhaustiveCircuitSemanticPCPPReduction C).rejectionRate = 1 / 1000
O'Donnell, Theorem 7.18, semantic part: the exhaustive circuit reduction has proof length `2^(2^n)`, three queries, and rejection rate `.001`.
-
FABL.quadraticCircuitSemanticPCPPReduction[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_resources[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_proofLength[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_proofLength_le_explicit[complete] -
FABL.QuadraticCircuitOutputSensitiveAdapter[complete] -
FABL.QuadraticCircuitOutputSensitiveAdapter.semantic_eq_canonical[complete]
Theorem 7.19. There is a 3-query PCPP reduction of proof length
2^{\operatorname{poly}(\operatorname{size}(C))}
and positive universal rejection rate.
For the ordered-DAG representation, the proved size parameter is the input
length plus the gate count. This is necessary even when a circuit leaves
some declared inputs unused. The construction has rejection rate
1/12800000 and proof length at most
2^{12(n+\operatorname{gateCount}(C)+2)^2}.
Its semantic reduction is unconditional; the output-sensitive CSLib layer
requires a concrete codec and machine certificate satisfying Definition
7.17's adapter. The ordinary-input PolytimeMap specialization is not
applicable here because this theorem deliberately has exponential proof
length; its running time is polynomial in the output length instead.
Lean code for Theorem7.2.12●6 declarations
Associated Lean declarations
-
FABL.quadraticCircuitSemanticPCPPReduction[complete]
-
FABL.quadraticCircuitSemanticPCPPReduction_resources[complete]
-
FABL.quadraticCircuitSemanticPCPPReduction_proofLength[complete]
-
FABL.quadraticCircuitSemanticPCPPReduction_proofLength_le_explicit[complete]
-
FABL.QuadraticCircuitOutputSensitiveAdapter[complete]
-
FABL.QuadraticCircuitOutputSensitiveAdapter.semantic_eq_canonical[complete]
-
FABL.quadraticCircuitSemanticPCPPReduction[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_resources[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_proofLength[complete] -
FABL.quadraticCircuitSemanticPCPPReduction_proofLength_le_explicit[complete] -
FABL.QuadraticCircuitOutputSensitiveAdapter[complete] -
FABL.QuadraticCircuitOutputSensitiveAdapter.semantic_eq_canonical[complete]
-
defdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
def FABL.quadraticCircuitSemanticPCPPReduction : FABL.SemanticPCPPReduction
def FABL.quadraticCircuitSemanticPCPPReduction : FABL.SemanticPCPPReduction
Theorem 7.19's semantic three-query PCPP reduction for Boolean circuits.
-
theoremdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
theorem FABL.quadraticCircuitSemanticPCPPReduction_resources {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).queryCount = 3 ∧ (FABL.quadraticCircuitSemanticPCPPReduction C).rejectionRate = 1 / 12800000
theorem FABL.quadraticCircuitSemanticPCPPReduction_resources {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).queryCount = 3 ∧ (FABL.quadraticCircuitSemanticPCPPReduction C).rejectionRate = 1 / 12800000
Theorem 7.19 has three queries and a universal positive rejection rate.
-
theoremdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
theorem FABL.quadraticCircuitSemanticPCPPReduction_proofLength {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).proofLength = C.circuitQuadraticPCPPProofLength + 64 * C.circuitQuadraticFourQueryPCPPSystem.descriptionSize
theorem FABL.quadraticCircuitSemanticPCPPReduction_proofLength {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).proofLength = C.circuitQuadraticPCPPProofLength + 64 * C.circuitQuadraticFourQueryPCPPSystem.descriptionSize
Theorem 7.19 retains the exact finite proof-length formula from Exercise 7.12.
-
theoremdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
theorem FABL.quadraticCircuitSemanticPCPPReduction_proofLength_le_explicit {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).proofLength ≤ 2 ^ (12 * (n + C.gateCount + 2) ^ 2)
theorem FABL.quadraticCircuitSemanticPCPPReduction_proofLength_le_explicit {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : (FABL.quadraticCircuitSemanticPCPPReduction C).proofLength ≤ 2 ^ (12 * (n + C.gateCount + 2) ^ 2)
Theorem 7.19's three-query proof length is bounded by a single exponential in an explicit quadratic polynomial of the input length plus circuit gate count.
-
abbrevdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
abbrev FABL.QuadraticCircuitOutputSensitiveAdapter (circuitEncoding : FABL.BooleanCircuitEncoding) : Type 1
abbrev FABL.QuadraticCircuitOutputSensitiveAdapter (circuitEncoding : FABL.BooleanCircuitEncoding) : Type 1
The narrow machine boundary for Theorem 7.19: implementations certify the already-proved semantic construction through the existing output-sensitive Exercise 7.12 adapter.
-
theoremdefined in FABL/Chapter07/QuadraticCircuitReduction.leancomplete
theorem FABL.QuadraticCircuitOutputSensitiveAdapter.semantic_eq_canonical {circuitEncoding : FABL.BooleanCircuitEncoding} (adapter : FABL.QuadraticCircuitOutputSensitiveAdapter circuitEncoding) {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : adapter.outputSensitive.semantic C = FABL.quadraticCircuitSemanticPCPPReduction C
theorem FABL.QuadraticCircuitOutputSensitiveAdapter.semantic_eq_canonical {circuitEncoding : FABL.BooleanCircuitEncoding} (adapter : FABL.QuadraticCircuitOutputSensitiveAdapter circuitEncoding) {n : ℕ} [NeZero n] (C : FABL.BooleanCircuit n) : adapter.outputSensitive.semantic C = FABL.quadraticCircuitSemanticPCPPReduction C
An output-sensitive implementation computes exactly the canonical three-query semantics.
The PCPP Theorem. There is a 3-query PCPP reduction whose proof length
is polynomial in \operatorname{size}(C) and whose rejection rate is a
positive universal constant.
This quoted PCP/PCPP result is not proved in the book and supplies no assumption to the production library.
Theorem 7.20. There is a 3-query PCPP reduction with proof length
\operatorname{size}(C)\,
\operatorname{polylog}(\operatorname{size}(C))
and positive universal rejection rate.
The near-linear PCPP theorem is external to the book and remains a statement-only node.