OAI/Computability/UniqueGames/PCP/PoweringTableSemanticsLemmas.lean
59 declarations, 0 contain sorry, 0 declared as axioms
Exact semantics of the executable powering tables
The explicit label and dart bijections preserve every actual edge test and every rejected directed occurrence. The inverse label map covers all encoded assignments, so satisfiability and uniform rejection-count bounds transport without any consistency restriction on padded labels.
- abbrev
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.RawLabelingline 32 - abbrev
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabelingline 35 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.encodeLabelingline 38 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.decodeLabelingline 42 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.decodeLabeling_encodeLabelingline 46 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.encodeLabeling_decodeLabelingline 52 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.edgeSatisfied_encodedline 59Source documentation
Each enumerated directed occurrence evaluates its actual powering test.
theorem edgeSatisfied_encoded {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (labels : RawLabeling vertices d n) (e : PoweringTest.Dart (Fin vertices) (Fin d) n) : (GenericGraphTables.semantics (table input n)).edgeSatisfied (encodeLabeling d n labels) (encodeDart vertices d n e) = (mathematicalGraph input n).edgeSatisfied labels e := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.RawLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.encodeLabeling
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.edgeSatisfied_decodedline 72Source documentation
The equality also holds for every encoded assignment and every stored row.
theorem edgeSatisfied_decoded {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (labels : EncodedLabeling vertices d n) (i : Fin (dartCount vertices d n)) : (GenericGraphTables.semantics (table input n)).edgeSatisfied labels i = (mathematicalGraph input n).edgeSatisfied (decodeLabeling d n labels) (decodeDart vertices d n i) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.decodeLabeling
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.edgeSatisfied_eq_pathline 84Source documentation
The stored Boolean test is exactly the path test at the recorded endpoints.
theorem edgeSatisfied_eq_path {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (labels : EncodedLabeling vertices d n) (direction : Bool) (w : Walk (Fin vertices) (Fin d) (n + 1)) : (GenericGraphTables.semantics (table input n)).edgeSatisfied labels (encodeDart vertices d n (direction, w)) = PoweringTest.pathAccepts (PortTables.portGraph input) (PortTables.accepts input) n (finitePortSelector (PortTables.portGraph input) (n + 1)) w (decodeLabeling d n labels w.1) (decodeLabeling d n labels (endpoint (PortTables.portGraph input) w)) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.pathAccepts, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.portGraph, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.accepts, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.decodeLabeling
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.rejectionCount_encodedline 100Source documentation
Exact rejected-dart counting, retaining both orientations and repeated walks.
theorem rejectionCount_encoded {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (labels : RawLabeling vertices d n) : (GenericGraphTables.semantics (table input n)).rejectionCount (encodeLabeling d n labels) = (mathematicalGraph input n).rejectionCount labels := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.RawLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.encodeLabeling
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.rejectionCount_decodedline 110 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.card_darts_eq_tableline 119Source documentation
The denominator equality comes from the same explicit dart bijection.
theorem card_darts_eq_table {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) : Fintype.card (PoweringTest.Dart (Fin vertices) (Fin d) n) = (table input n).darts := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.satisfiable_iffline 127Source documentation
The table has a satisfying encoded assignment exactly when the powered graph does.
theorem satisfiable_iff {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) : (GenericGraphTables.semantics (table input n)).Satisfiable ↔ (mathematicalGraph input n).Satisfiable := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.preserves_satisfiabilityline 145Source documentation
Perfect completeness from the actual stored base predicates.
theorem preserves_satisfiability {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (h : (PortTables.baseGraph input).Satisfiable) : (GenericGraphTables.semantics (table input n)).Satisfiable := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.baseGraph, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.path_rejection_mean_eq_table_fractionline 154Source documentation
The path rejection average equals the encoded table's actual rejection fraction.
theorem path_rejection_mean_eq_table_fraction {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (labels : EncodedLabeling vertices d n) : SpectralReturn.mean (fun w : Walk (Fin vertices) (Fin d) (n + 1) => PoweringMoment.bit (PoweringTest.pathAccepts (PortTables.portGraph input) (PortTables.accepts input) n (finitePortSelector (PortTables.portGraph input) (n + 1)) w (decodeLabeling d n labels w.1) (decodeLabeling d n labels (endpoint (PortTables.portGraph input) w)) = false)) = ((GenericGraphTables.semantics (table input n)).rejectionCount labels : ℝ) / ((table input n).darts : ℝ) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.SpectralReturn.mean, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringMoment.bit, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.pathAccepts, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.portGraph, OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.accepts, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.decodeLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.uniform_count_gap_iffline 170Source documentation
Uniform actual rejection-count gaps are invariant under the executable encoding.
theorem uniform_count_gap_iff {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (epsilon : ℝ) : (∀ labels : EncodedLabeling vertices d n, epsilon * ((table input n).darts : ℝ) ≤ ((GenericGraphTables.semantics (table input n)).rejectionCount labels : ℝ)) ↔ (∀ labels : RawLabeling vertices d n, epsilon * (Fintype.card (PoweringTest.Dart (Fin vertices) (Fin d) n) : ℝ) ≤ ((mathematicalGraph input n).rejectionCount labels : ℝ)) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.RawLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.uniform_count_gapline 190Source documentation
Apply an established powering count bound to every encoded table labeling.
theorem uniform_count_gap {vertices d : Nat} (input : PortTables.Table vertices d) (n : Nat) (epsilon : ℝ) (hgap : ∀ labels : RawLabeling vertices d n, epsilon * (Fintype.card (PoweringTest.Dart (Fin vertices) (Fin d) n) : ℝ) ≤ ((mathematicalGraph input n).rejectionCount labels : ℝ)) : ∀ labels : EncodedLabeling vertices d n, epsilon * ((table input n).darts : ℝ) ≤ ((GenericGraphTables.semantics (table input n)).rejectionCount labels : ℝ) := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PortTables.Table, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.RawLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTest.Dart, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringTableSemantics.EncodedLabeling, OAI.UniqueGamesTheorem.Foundations.PCP.GenericGraphTables.semantics
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.iterate_mul_constline 218Source documentation
A constant scalar passes through every iterate of the actual graph mean.
theorem iterate_mul_const [Fintype D] (G : PortGraph V D) (n : Nat) (c : ℝ) (h : V → ℝ) : iterateOperator G n (fun x => c * h x) = fun x => c * iterateOperator G n h x := by … - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.endpointWitnessline 233Source documentation
The actual pivot dart is marked and both endpoint opinions pass their tests. For indicator opinions this is the indicator of their conjunction.
noncomputable def endpointWitness (G : PortGraph V D) (bad : Edge V D → Bool) (φ ψ : Edge V D → V → ℝ) (n : Nat) (k : Fin (n + 1)) (w : Walk V D (n + 1)) : ℝ := … - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.vertexWitnessline 240Source documentation
Vertex-indexed opinions are tested at the two endpoints of the pivot dart.
noncomputable def vertexWitness (G : PortGraph V D) (bad : Edge V D → Bool) (f : V → V → ℝ) (n : Nat) (k : Fin (n + 1)) : Walk V D (n + 1) → ℝ := … - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.endpoint_lower_boundline 247Source documentation
Pointwise bounds on the two genuine earlier-length graph iterates give the witness first moment. The hypotheses are only needed on marked darts.
theorem endpoint_lower_bound [Fintype V] [Fintype D] [Nonempty D] (G : PortGraph V D) (n : Nat) (k : Fin (n + 1)) (bad : Edge V D → Bool) (φ ψ : Edge V D → V → ℝ) (a : ℝ) (ha : 0 ≤ a) (hL : ∀ e, bad e = true → a ≤ iterateOperator G k.val (φ e) e.1) (hR : ∀ e, bad e = true → a ≤ iterateOperator G (n - k.val) (ψ e) (next G e.1 e.2)) : edgeDensity bad * a ^ 2 ≤ mean (endpointWitness G bad φ ψ n k) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.endpointWitness
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.lazy_middle_witness_meanline 289Source documentation
The two endpoint-opinion tests each retain probability at least
1/(2q)at every middle pivot. The walk has2N+1edges, withN=(4qM)^2, so the prefix and suffix lengths are exactlykand2N-k.The only modal input is the actual centered lazy iterate at each vertex. It will be supplied by the finite modal-opinion decoder, not by a witness law.
theorem lazy_middle_witness_mean [Fintype V] [Fintype D] [Nonempty D] (G : PortGraph V D) (q M : Nat) (hq : 1 ≤ q) (hM : 1 ≤ M) (k : Fin (2 * (4 * q * M) ^ 2 + 1)) (hlo : (4 * q * M) ^ 2 - M ≤ k.val) (hhi : k.val ≤ (4 * q * M) ^ 2 + M) (bad : Edge V (Bool × D) → Bool) (f : V → V → ℝ) (hf : ∀ u w, f u w ∈ Set.Icc (0 : ℝ) 1) (hmodal : ∀ u, 1 / (q : ℝ) ≤ iterateOperator (lazyGraph G) ((4 * q * M) ^ 2) (f u) u) : edgeDensity bad / (4 * (q : ℝ) ^ 2) ≤ mean (vertexWitness (lazyGraph G) bad f (2 * (4 * q * M) ^ 2) k) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.PoweringWitness.vertexWitness
- def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.centerline 336 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.le_centerline 338 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.gainline 346 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.decodedErrorline 353 - def
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.poweredRejectionline 358 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.witness_bit_eqline 364 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.modal_witness_meanline 377 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.rejection_lower_boundline 404Source documentation
Positive decoded error forces rejection of the actual powered graph. The cap and amplification coefficient are explicit constants.
theorem rejection_lower_bound (G : PortGraph V D) (lambda : ℝ) (certificate : SpectralCertificate (lazyGraph G) lambda) (accepts : Edge V (Bool × D) → A → A → Bool) (reverse_accepts : ∀ e a b, accepts ((lazyGraph G).rot e) b a = accepts e a b) (M : Nat) (hM : 1 ≤ M) (selectors : ∀ v, AddressSelector (lazyGraph G) (2 * center (Fintype.card A) M + 1) v) (labels : V → PaddedLabel (Bool × D) (2 * center (Fintype.card A) M + 1) A) (fallback : A) (hε : 0 < decodedError (lazyGraph G) accepts (2 * center (Fintype.card A) M) (center (Fintype.card A) M) selectors labels fallback) : gain (Fintype.card A) M lambda * min (decodedError (lazyGraph G) accepts (2 * center (Fintype.card A) M) …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.accepts, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.center, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.decodedError, OAI.UniqueGamesTheorem.Foundations.PCP.PoweringSoundness.gain
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringGap.gain_nonnegline 505 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.PoweringGap.uniform_count_gapline 514 - def
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.indicatorline 581 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.mean_indicatorline 583 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.energy_indicatorline 591 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.indicator_nonnegativeline 599 - def
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cutline 606 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_density_eqline 614Source documentation
The normalized cut count is exactly mean minus one-step correlation.
theorem cut_density_eq (S : Finset V) : ((cut G S).card : ℝ) / (Fintype.card (V × D) : ℝ) = mean (indicator S) - correlation (indicator S) (averagingOperator G (indicator S)) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut, OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.indicator
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_density_ge_varianceline 636 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_density_ge_quarterline 655 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_card_ge_quarter_degreeline 672Source documentation
The real cardinal estimate before removing denominators.
theorem cut_card_ge_quarter_degree (certificate : SpectralCertificate G (1/2)) (S : Finset V) (hsmall : 2 * S.card ≤ Fintype.card V) : (Fintype.card D : ℝ) * (S.card : ℝ) / 4 ≤ ((cut G S).card : ℝ) := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.degree_mul_card_le_four_cutline 689 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_card_ge_quarter_degree_of_card_le_halfline 698 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut_card_ge_twiceline 707Source documentation
The natural-number expansion used in cloud rounding. Empty vertex sets are included; a degree of at least eight supplies the nonempty port type.
theorem cut_card_ge_twice (G : PortGraph V D) (certificate : SpectralCertificate G (1/2)) (hdegree : 8 ≤ Fintype.card D) (S : Finset V) (hsmall : 2 * S.card ≤ Fintype.card V) : 2 * S.card ≤ (cut G S).card := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.SpectralCut.cut
- def
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrictline 740Source documentation
The values of a full Boolean tape on the legal coordinates.
def restrict (f : B → Bool) : {b // p b} → Bool := fun b => f b.1 … - def
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.extendline 745Source documentation
Extend a tape on legal coordinates by false on every other coordinate.
def extend (g : {b // p b} → Bool) : B → Bool := … - def
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalizeline 749Source documentation
Replace the values outside the legal coordinates by false.
def canonicalize (f : B → Bool) : B → Bool := extend p (restrict p f) …
Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.extend, OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict_applyline 752 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.extend_apply_of_memline 755 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.extend_apply_of_not_memline 759 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict_extendline 763 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalize_apply_of_memline 768 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalize_apply_of_not_memline 772 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict_canonicalizeline 776 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalize_idempotentline 780 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalize_eq_iffline 784 - theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.expect_restrictline 795Source documentation
Uniform full tapes induce exactly uniform legal-coordinate tapes.
theorem expect_restrict (h : ({b // p b} → Bool) → ℝ) : (𝔼 f : B → Bool, h (restrict p f)) = 𝔼 g : {b // p b} → Bool, h g := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.expect_canonicalizeline 812Source documentation
The same law after choosing the canonical full-domain oracle address.
theorem expect_canonicalize (h : (B → Bool) → ℝ) : (𝔼 f : B → Bool, h (canonicalize p f)) = 𝔼 g : {b // p b} → Bool, h (extend p g) := …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.canonicalize, OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.extend
- theorem
OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.expect_restrict_pairline 818Source documentation
Two independent full tapes restrict to two independent uniform legal tapes.
theorem expect_restrict_pair (h : ({b // p b} → Bool) → ({b // p b} → Bool) → ℝ) : (𝔼 f : B → Bool, 𝔼 g : B → Bool, h (restrict p f) (restrict p g)) = 𝔼 f : {b // p b} → Bool, 𝔼 g : {b // p b} → Bool, h f g := by …Mentions: OAI.UniqueGamesTheorem.Foundations.PCP.UniformRestriction.restrict