Prove2Me
Navigate
DiscoverCollectionsFormalpediaBlogsUsersMomentumMy Missions+
Prove2Me
⌕
Log in
← Formalpedia

The Lean 4 theorem `substrate_separable` in the `?` chapter of the timepiece formalization

Definition
PhysMehler

by leonardopedro · Oct 18, 2026 · Mathlib 0df444a (Lean v4.33.1)

definitionsformalizationtimepiece

Formal definitions for the timepiece Lean 4 formalization (source chapter BookProof/PhysMehler.lean): generated def bundle for PhysMehler. See BookProof/PhysMehler.lean for full context.

Definition code
import Theorems.Thm_PhysFunctionalAnalysis_exists_atomless_sphere_measure

import Theorems.Thm_PhysFunctionalAnalysis_l2_separable


import Definitions.Def_PhysFunctionalAnalysis
import Mathlib
import Definitions.Def_PhysMeasureBasis
import Definitions.Def_ChapterG3


/-!
# The Kopperman formalism, in Lean

This module assembles, as one explicit object, the formalism of
`Kopperman_Tutorial.p.tex` (after Kopperman's 1967 *"The `L_{ω₁,ω₁}`-Theory of
Hilbert Spaces"*): a **separable real Hilbert space** (the "ontological
substrate"), a **countable dense decidable skeleton** (the computable
approximants), and an **atomless probability prior** (the Mehler "uncertainty"
layer — the Gaussian limit of the uniform measure on the high-dimensional
sphere).

Each component is *already proved* elsewhere in `PnpProof/`; here they are named
and packaged so that statements can be made and checked **about the formalism
itself**. Nothing here is new mathematics and nothing here is an axiom: the file
is `sorry`-free and `axiom`-free, like the rest of the development.

What this formalism supports, and where those statements live:
* the model separation `σ` ("computable selections are prior-null while
  verification is cheap"): `model_P_ne_NP`, `model_P_ne_NP_circuit` (`Main.lean`);
* the relationship to the Clay statement: `model_vs_clay_disjointness`
  (`Main.lean`, T5) — proved *inside* this formalism.

What it does **not** support, and must not be made to via an `axiom`: a bridge
`σ → (P ≠ NP)`. See `PNP_IMPLEMENTATION_PLAN.md` Part 8 / Part 9. The honest way
to test the bridge is to *state it as a theorem and let Lean try to prove it* —
not to assert it as an axiom, which is precisely the act of telling Lean to stop
checking.
-/

namespace PhysHSGaussian

open MeasureTheory Set Filter
open scoped ENNReal Topology
open PhysMeasureBasis

/-! Inlined from `BookProof/PhysHSGaussian/Part3.lean`: the `PhysHSGaussian`
bundle was never published, so this consumer carries the four declarations it
needs (platform-world rule: an unpublished dep cannot be imported). -/

/-- The infinite product of standard Gaussians (the law of an i.i.d. Gaussian
    sequence). -/
noncomputable def gammaMeasure : Measure (ℕ → ℝ) :=
  Measure.infinitePi (fun _ : ℕ => ProbabilityTheory.gaussianReal 0 1)



noncomputable instance gammaMeasure_isProbability : IsProbabilityMeasure gammaMeasure := by
  unfold gammaMeasure; infer_instance



/-- Empirical squared norm of the first `k` coordinates. -/
def normSq (k : ℕ) (ω : ℕ → ℝ) : ℝ := ∑ i ∈ Finset.range k, (ω i)^2



theorem gaussian_concentration_sphere :
    ∀ᵐ ω ∂gammaMeasure,
      Filter.Tendsto (fun k => normSq k ω / k) Filter.atTop (𝓝 1) := by
  convert ProbabilityTheory.strong_law_ae _ _ _ _ using 1;
  case convert_4 => exact ℝ;
  case convert_10 => exact fun i ω => ( ω i ) ^ 2;
  all_goals try infer_instance;
  · have h_integral : ∫ x : ℕ → ℝ, x 0 ^ 2 ∂gammaMeasure = 1 := by
      have h_gauss : ∫ x : ℝ, x ^ 2 ∂(ProbabilityTheory.gaussianReal 0 1) = 1 := by
        have := @ProbabilityTheory.variance_id_gaussianReal 0 1;
        rw [ ProbabilityTheory.variance, ProbabilityTheory.evariance_eq_lintegral_ofReal, ←
          MeasureTheory.integral_eq_lintegral_of_nonneg_ae ] at this <;> norm_num at *;
        · exact this;
        · exact Filter.Eventually.of_forall fun x => sq_nonneg x;
        · exact Continuous.aestronglyMeasurable ( continuous_pow 2 );
      have h_gauss : ∫ x : ℕ → ℝ, x 0 ^ 2 ∂gammaMeasure = ∫ x : ℝ, x ^ 2
        ∂(ProbabilityTheory.gaussianReal 0 1) := by
        have h_map : MeasureTheory.Measure.map (fun x : ℕ → ℝ => x 0) gammaMeasure =
          ProbabilityTheory.gaussianReal 0 1 := by
          convert MeasureTheory.Measure.infinitePi_map_eval _ _ using 1
          <;> (first | rfl | infer_instance);
        rw [ ← h_map, MeasureTheory.integral_map ];
        · exact measurable_pi_apply 0 |> Measurable.aemeasurable;
        · exact Continuous.aestronglyMeasurable ( continuous_pow 2 );
      linarith;
    simp_all +decide [ div_eq_inv_mul, normSq ];
  · have h_integrable : MeasureTheory.Integrable (fun x : ℝ => x^2) (ProbabilityTheory.gaussianReal
    0 1) := by
      have h_gauss_integrable : ∫ x, x ^ 2 ∂(ProbabilityTheory.gaussianReal 0 1) = 1 := by
        have := @ProbabilityTheory.variance_id_gaussianReal 0 1;
        rw [ ProbabilityTheory.variance, ProbabilityTheory.evariance_eq_lintegral_ofReal, ←
          MeasureTheory.integral_eq_lintegral_of_nonneg_ae ] at this <;> norm_num at *;
        · exact this;
        · exact Filter.Eventually.of_forall fun x => sq_nonneg x;
        · exact Continuous.aestronglyMeasurable ( continuous_pow 2 );
      exact ( by contrapose! h_gauss_integrable; rw [ MeasureTheory.integral_undef
          h_gauss_integrable ] ; norm_num );
    have h_integrable : MeasureTheory.Integrable (fun ω : ℕ → ℝ => ω 0 ^ 2) (Measure.infinitePi (fun
      _ : ℕ => ProbabilityTheory.gaussianReal 0 1)) := by
      have h_map : (Measure.infinitePi (fun _ : ℕ => ProbabilityTheory.gaussianReal 0 1)).map (fun ω
        : ℕ → ℝ => ω 0) = ProbabilityTheory.gaussianReal 0 1 := by
        convert MeasureTheory.Measure.infinitePi_map_eval _ _ using 1;
        exact fun _ => inferInstance
      rw [ ← h_map ] at h_integrable;
      rwa [ MeasureTheory.integrable_map_measure ] at h_integrable;
      · exact h_integrable.1;
      · exact measurable_pi_apply 0 |> Measurable.aemeasurable;
    exact h_integrable;
  · have h_indep : ProbabilityTheory.iIndepFun (fun i : ℕ => fun ω : ℕ → ℝ => ω i) gammaMeasure
    := by
      convert ProbabilityTheory.iIndepFun_infinitePi ( fun i => measurable_id ) using 1
      <;> (first | rfl | infer_instance);
    exact fun i j hij => h_indep.indepFun hij |> fun h => h.comp ( measurable_id.pow_const 2 ) (
      measurable_id.pow_const 2 );
  · intro i
    have h_ident : ProbabilityTheory.IdentDistrib (fun ω : ℕ → ℝ => ω i) (fun ω : ℕ → ℝ => ω 0)
      gammaMeasure gammaMeasure := by
      constructor;
      · exact measurable_pi_apply i |> Measurable.aemeasurable;
      · exact measurable_pi_apply 0 |> Measurable.aemeasurable;
      · have h_map : ∀ i : ℕ, Measure.map (fun ω : ℕ → ℝ => ω i) gammaMeasure =
        ProbabilityTheory.gaussianReal 0 1 := by
          intro i
          generalize_proofs at *; (
          convert MeasureTheory.Measure.infinitePi_map_eval ( fun _ =>
            ProbabilityTheory.gaussianReal 0 1 ) i using 1 <;> (first | rfl | infer_instance));
        rw [ h_map i, h_map 0 ]
    generalize_proofs at *; (
    exact h_ident.comp ( measurable_id.pow_const 2 ))



end PhysHSGaussian

namespace PhysMehler

open PhysMeasureBasis PhysFunctionalAnalysis PhysHSGaussian
open MeasureTheory Set ProbabilityTheory Filter
open scoped ENNReal Topology

/-- The abstract data of a **Kopperman formalism** on a carrier Hilbert space
    `H`: separability, a countable dense decidable skeleton, and an atomless
    probability prior. -/
structure Formalism (H : Type*) [NormedAddCommGroup H] [InnerProductSpace ℝ H]
    [CompleteSpace H] [MeasurableSpace H] where
  /-- The substrate is separable (Kopperman's completeness/separability axiom; in
      Lean the standard separable Hilbert space is constructed directly). -/
  separable : TopologicalSpace.SeparableSpace H
  /-- The decidable dense skeleton: the computable approximants. -/
  skeleton : Set H
  skeleton_countable : skeleton.Countable
  skeleton_dense : Dense skeleton
  /-- The Mehler prior. -/
  prior : Measure H
  prior_isProb : IsProbabilityMeasure prior
  /-- "Probability as political choice": the prior is atomless — no single state
      carries positive mass. -/
  prior_atomless : ∀ x : H, prior {x} = 0

/-! ## The substrate: the standard separable Hilbert space -/

/-- The ontological substrate `H`: `L²([0,1])`, the standard separable real
    Hilbert space. (Kopperman uses `L_{ω₁,ω₁}` to pin this down categorically; in
    Lean's type theory it is constructed outright, and `hilbert_classification`
    records that any two such spaces are isometrically isomorphic.) -/
noncomputable abbrev Substrate := Lp ℝ 2 unitMeasure

theorem substrate_separable : TopologicalSpace.SeparableSpace Substrate := l2_separable

/-- The decidable dense skeleton exists: a countable dense subset of the
    substrate (the computable approximants of the tutorial's "decidable dense
    subset"). -/
theorem substrate_decidable_skeleton : ∃ D : Set Substrate, D.Countable ∧ Dense D := by
  haveI := l2_separable
  exact TopologicalSpace.exists_countable_dense Substrate

/-! ## The Mehler measure: the Gaussian limit of the uniform sphere -/

/-- The **Mehler prior**: the infinite-product Gaussian measure on coordinate
    space — Mehler's 1866 limit of the uniform measure on the `√k`-sphere. -/
noncomputable abbrev MehlerPrior : Measure (ℕ → ℝ) := gammaMeasure

theorem mehler_isProbability : IsProbabilityMeasure MehlerPrior :=
  gammaMeasure_isProbability

/-- The Mehler prior "lives on the infinite-dimensional sphere": the normalized
    empirical squared norm concentrates at `1` almost surely (Poincaré–Borel /
    the strong law). -/
theorem mehler_concentrates_on_sphere :
    ∀ᵐ ω ∂MehlerPrior, Tendsto (fun k => normSq k ω / k) atTop (𝓝 1) :=
  gaussian_concentration_sphere

/-! ## The atomless prior layer -/

/-- Every separable inner-product space carrying two orthonormal vectors admits an
    atomless probability prior concentrated on the unit sphere — the abstract
    realization of the Mehler "uncertainty" layer on any Kopperman substrate. -/
theorem admits_atomless_prior (E : Type*)
    [NormedAddCommGroup E] [InnerProductSpace ℝ E] [CompleteSpace E]
    [MeasurableSpace E] [BorelSpace E] (e₀ e₁ : E) (h : Orthonormal ℝ ![e₀, e₁]) :
    ∃ μ : Measure E, IsProbabilityMeasure μ ∧ (∀ x, μ {x} = 0) ∧ ∀ᵐ v ∂μ, ‖v‖ = 1 :=
  exists_atomless_sphere_measure E e₀ e₁ h

/-! ## K-model: "choosing a measure = choosing a model of the formalism"

These results make precise the maintainer's claim that *within the formalism,
choosing a probability measure is choosing a model*. Every model carries an
atomless probability prior (`model_has_prior`); conversely every atomless
probability measure on the substrate is the prior of a model (`formalismOfPrior`,
`prior_surjective_onto_atomless`), so with the substrate (and a canonical
skeleton) fixed the prior-projection is a bijection onto the atomless probability
measures. `koppermanSubstrate` is a concrete witness that the substrate admits a
model.

**Two computational layers — the formalism is not "anti-computable".** The prior
nulls computable *selection* functions (the P-side: `almost_all_not_computable`,
T2). But the formalism *also defines computable NP functions*: the candidate
*verification* is computable (`verifyBits_computable`, M5) — indeed an explicit
`O(k)` Boolean circuit (`model_P_ne_NP_circuit`, N1) — and the decidable dense
skeleton is the layer of *computable approximations* (`pnp.tex` §6/§10: the
verification of a constant output "is in NP", and the formalism rests on a dense
countable basis of computable approximants with computable probabilities). The
separation `model_P_ne_NP` (T3) *is* this coexistence: computable verification with
an a.s.-uncomputable selection. Without the computable layer there would be no NP
side to separate. (Fidelity note: the `skeleton` field here only asserts
`Countable ∧ Dense`; the *computability* of the NP layer is carried by the separate
`Computable`/circuit theorems, not by a field of `Formalism` — see
`PNP_IMPLEMENTATION_PLAN.md` Part 11, "two computational layers".)

**This is sound model theory of the `Formalism` structure — not a Clay bridge.**
"Model" here means a model of *this formalism*, whose decidable skeleton is indexed
by the standard `ℕ`; that is exactly what is needed to *define* the standard
arithmetic statements, and no model *of set theory* is involved or required. The
reason it still does not yield the Clay statement is **arithmetic, not
foundational**: what the measure establishes is the separation `σ` of
`model_P_ne_NP` (computable selections are prior-null), which is a *different*
arithmetic sentence from "SAT ∉ P" — `model_vs_clay_disjointness` (T5) is the proof
that the two are disjoint (`σ` is blind to any individual decidable language). See
`PNP_IMPLEMENTATION_PLAN.md` Part 11 (K-model). -/

/-- **K-model.0** (projection): every model of the formalism carries an atomless
probability measure. (True by construction — `prior` is a field.) -/
theorem model_has_prior {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℝ H]
    [CompleteSpace H] [MeasurableSpace H] (F : Formalism H) :
    IsProbabilityMeasure F.prior ∧ ∀ x, F.prior {x} = 0 :=
  ⟨F.prior_isProb, F.prior_atomless⟩

/-- An explicit orthonormal pair in the substrate `L²([0,1])`: the `√2`-scaled
indicators of the two halves `[0,½]` and `(½,1]`. -/
theorem substrate_orthonormal_pair :
    ∃ e₀ e₁ : Substrate, Orthonormal ℝ ![e₀, e₁] := by
  have hμs : unitMeasure (Icc (0:ℝ) (1/2)) ≠ ∞ := measure_ne_top _ _
  have hμt : unitMeasure (Ioc (1/2:ℝ) 1) ≠ ∞ := measure_ne_top _ _
  have hrestr : unitMeasure = volume.restrict (Icc (0:ℝ) 1) := rfl
  have hsr : unitMeasure.real (Icc (0:ℝ) (1/2)) = 1/2 := by
    have h : unitMeasure (Icc (0:ℝ) (1/2)) = ENNReal.ofReal (1/2) := by
      rw [hrestr, Measure.restrict_apply measurableSet_Icc,
          Set.inter_eq_left.mpr (Set.Icc_subset_Icc le_rfl (by norm_num))]
      norm_num [Real.volume_Icc]
    rw [measureReal_def, h, ENNReal.toReal_ofReal]
    norm_num
  have htr : unitMeasure.real (Ioc (1/2:ℝ) 1) = 1/2 := by
    have h : unitMeasure (Ioc (1/2:ℝ) 1) = ENNReal.ofReal (1/2) := by
      rw [hrestr, Measure.restrict_apply measurableSet_Ioc,
          Set.inter_eq_left.mpr
            (Ioc_subset_Icc_self.trans (Set.Icc_subset_Icc (by norm_num) le_rfl))]
      norm_num [Real.volume_Ioc]
    rw [measureReal_def, h, ENNReal.toReal_ofReal]
    norm_num
  have hempty : (Icc (0:ℝ) (1/2)) ∩ (Ioc (1/2:ℝ) 1) = ∅ := by
    rw [Set.eq_empty_iff_forall_notMem]
    rintro x ⟨⟨_, h1⟩, h2, _⟩; linarith
  have hnorm : ∀ (s : Set ℝ) (hs : MeasurableSet s) (hμ : unitMeasure s ≠ ∞),
      unitMeasure.real s = 1/2 → ‖indicatorConstLp 2 hs hμ (Real.sqrt 2)‖ = 1 := by
    intro s hs hμ hval
    rw [norm_indicatorConstLp (by norm_num) (by norm_num), hval, Real.norm_eq_abs,
      abs_of_nonneg (Real.sqrt_nonneg 2), show (1:ℝ) / (2:ℝ≥0∞).toReal = 1/2 by norm_num,
      ← Real.sqrt_eq_rpow, ← Real.sqrt_mul (by norm_num : (0:ℝ) ≤ 2),
      show (2:ℝ) * (1/2) = 1 by norm_num, Real.sqrt_one]
  set e₀ := indicatorConstLp 2 measurableSet_Icc hμs (Real.sqrt 2) with he₀
  set e₁ := indicatorConstLp 2 measurableSet_Ioc hμt (Real.sqrt 2) with he₁
  have hn0 : ‖e₀‖ = 1 := by rw [he₀]; exact hnorm _ measurableSet_Icc hμs hsr
  have hn1 : ‖e₁‖ = 1 := by rw [he₁]; exact hnorm _ measurableSet_Ioc hμt htr
  have horth : (inner ℝ e₀ e₁ : ℝ) = 0 := by
    rw [he₀, he₁, L2.inner_indicatorConstLp_indicatorConstLp, hempty, measureReal_empty,
      zero_smul]
  exact ⟨e₀, e₁, orthonormal_vecCons_iff.mpr ⟨hn0, fun i => by fin_cases i; simpa using horth,
    orthonormal_vecCons_iff.mpr ⟨hn1, fun i => i.elim0, Orthonormal.of_isEmpty _⟩⟩⟩

section Substrate

/-- Equip the substrate with its Borel σ-algebra so the atomless-prior
construction (H7) applies. -/
noncomputable local instance substrateMeasurableSpace : MeasurableSpace Substrate := borel _

local instance substrateBorelSpace : BorelSpace Substrate := ⟨rfl⟩

/-- The substrate carries an atomless probability measure (from the explicit
orthonormal pair via H7). -/
theorem exists_atomless_prob_substrate :
    ∃ μ : Measure Substrate, IsProbabilityMeasure μ ∧ ∀ x, μ {x} = 0 := by
  obtain ⟨e₀, e₁, h⟩ := substrate_orthonormal_pair
  obtain ⟨μ, hμ1, hμ2, _⟩ := exists_atomless_sphere_measure Substrate e₀ e₁ h
  exact ⟨μ, hμ1, hμ2⟩

/-- **"Choosing a measure is choosing a model":** from any atomless probability
measure on the substrate, build a model of the formalism with that measure as its
prior (substrate fixed, canonical skeleton). -/
noncomputable def formalismOfPrior (μ : Measure Substrate)
    (h1 : IsProbabilityMeasure μ) (h2 : ∀ x, μ {x} = 0) : Formalism Substrate where
  separable := substrate_separable
  skeleton := Classical.choose substrate_decidable_skeleton
  skeleton_countable := (Classical.choose_spec substrate_decidable_skeleton).1
  skeleton_dense := (Classical.choose_spec substrate_decidable_skeleton).2
  prior := μ
  prior_isProb := h1
  prior_atomless := h2

@[simp] theorem prior_formalismOfPrior (μ : Measure Substrate)
    (h1 : IsProbabilityMeasure μ) (h2 : ∀ x, μ {x} = 0) :
    (formalismOfPrior μ h1 h2).prior = μ := rfl

/-- The prior-projection is surjective onto the atomless probability measures:
with the substrate (and a canonical skeleton) fixed, choosing such a measure is
exactly choosing a model. -/
theorem prior_surjective_onto_atomless (μ : Measure Substrate)
    (h1 : IsProbabilityMeasure μ) (h2 : ∀ x, μ {x} = 0) :
    ∃ F : Formalism Substrate, F.prior = μ :=
  ⟨formalismOfPrior μ h1 h2, rfl⟩

/-- **K-ext:** the substrate admits a model of the formalism. -/
theorem nonempty_formalism_substrate : Nonempty (Formalism Substrate) := by
  obtain ⟨μ, h1, h2⟩ := exists_atomless_prob_substrate
  exact ⟨formalismOfPrior μ h1 h2⟩

/-- The canonical atomless probability measure on the Kopperman substrate, used as
the substrate prior of the bounded-prior model.  It is the shared analytic datum
of the decoupled Kopperman–Solovay framework, promoted here so that the generic
`RandomMap2` development does not have to reach into a Riemann-Hypothesis file for
it. -/
noncomputable def rcpPriorOnSubstrate : Measure Substrate := Classical.choose exists_atomless_prob_substrate

instance rcpPriorOnSubstrate_isProb : IsProbabilityMeasure rcpPriorOnSubstrate :=
  (Classical.choose_spec exists_atomless_prob_substrate).1

theorem rcpPriorOnSubstrate_atomless : ∀ x : Substrate, rcpPriorOnSubstrate {x} = 0 :=
  (Classical.choose_spec exists_atomless_prob_substrate).2

/-- A concrete model of the Kopperman formalism on the substrate `L²([0,1])`. -/
noncomputable def koppermanSubstrate : Formalism Substrate :=
  formalismOfPrior (Classical.choose exists_atomless_prob_substrate)
    (Classical.choose_spec exists_atomless_prob_substrate).1
    (Classical.choose_spec exists_atomless_prob_substrate).2

end Substrate

/-! ## T-conserv: arithmetic truth is invariant across formalism and foundation

`Π⁰₂`-invariance / conservativity. The truth value of an arithmetical sentence —
here a `Π⁰₂` sentence `∀ a, ∃ b, p a b` whose matrix `p` is decidable and ranges
over the *standard* naturals — does **not** depend on which `Formalism` is chosen
as the model, nor on any `ZFSet` ("foundation") parameter. This is the
machine-checkable proxy for the maintainer's directive that *"no prior, and no
foundation, moves a first-order arithmetic truth"* (`PNP_IMPLEMENTATION_PLAN.md`
Part 11, queue item **F-min**, step (c)): the `Formalism` and `ZFSet` parameters
genuinely appear in the statement and are proved to drop out.

It is **not** an internal meta-logical provability/independence theorem. Lean has
no theory-comparison or provability predicate in mainline Mathlib, so a literal
"the Kopperman base is PA-incomparable / co-consistent" claim is **not** stated
here (Part 11 fences); the import DAG, the `#print axioms` footprint, and this
`T-conserv` invariance are the honest *proxies* for those meta-claims. The reason
the invariance holds is exactly point 4 of Part 11: a `Π⁰₂` sentence over the
standard `ℕ` is absolute, and Lean's `ℕ` has no nonstandard elements, so the
sentence literally *is* the standard arithmetic sentence — the parameters cannot
move it. -/

/-- A `Π⁰₂` arithmetical sentence over the standard naturals, with decidable
matrix `p` (`∀ a, ∃ b, p a b`). "P ≠ NP" has this shape over an NP-complete
language; see `PNP_IMPLEMENTATION_PLAN.md` Part 11. -/
def Pi02 (p : ℕ → ℕ → Bool) : Prop := ∀ a, ∃ b, p a b = true

/-- The interpretation of a `Π⁰₂` sentence *"inside a formalism `F`, over a
foundation `z`"*. It ignores both the `Formalism` and the `ZFSet` parameter,
because the matrix ranges over the standard `ℕ` — that is the whole content of
`T-conserv` below.

This is the *trivial* wrapper (truth `:= Pi02 p`). A **non-trivial geometric
witness** of the same truth lives in `PnpProof/GeometricTruth.lean`
(`PNP_IMPLEMENTATION_PLAN.md` Part 12): `interpPi02_geom b p F`, defined as the
metric identity `‖Ψ_p − Ψ_true‖ = 0` for the completed vector
`Ψ_p = Σ_x OK_p x /(x+1) · e_x` in `F`'s separable substrate, with
`interpPi02_geom_iff : interpPi02_geom b p F ↔ Pi02 p`. That refinement realizes
the truth *inside the substrate of the chosen model* rather than as the present
`Iff.rfl`; it is a faithful **restatement**, not a decision procedure (its `OK_p`
is noncomputable / `Classical.choice`), and it gives no Clay leverage (Part 12
fences; T5 stands). -/
def interpPi02 {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℝ H]
    [CompleteSpace H] [MeasurableSpace H]
    (p : ℕ → ℕ → Bool) (_F : Formalism H) (_z : ZFSet) : Prop := Pi02 p

/-- **T-conserv** (`Π⁰₂`-invariance / conservativity, Part 11 step (c)): the
truth of a `Π⁰₂` arithmetical sentence is invariant under any choice of
`Formalism` (the prior/model) **and** under any choice of `ZFSet` foundation —
the parameters drop out. This is the checked core of "no prior, no foundation
moves an arithmetic truth"; it is a proxy for, not an internal proof of, the
meta-logical co-consistency/standardness claims (see the section docstring and
Part 11 fences). -/
theorem arith_truth_invariant {H : Type*} [NormedAddCommGroup H]
    [InnerProductSpace ℝ H] [CompleteSpace H] [MeasurableSpace H]
    (p : ℕ → ℕ → Bool) (F₁ F₂ : Formalism H) (z₁ z₂ : ZFSet) :
    interpPi02 p F₁ z₁ ↔ interpPi02 p F₂ z₂ := Iff.rfl

/-- Specialisation of `arith_truth_invariant` to a fixed foundation: the truth of
a `Π⁰₂` sentence does not depend on which model (`Formalism`) realises it. -/
theorem pi02_invariant_of_formalism {H : Type*} [NormedAddCommGroup H]
    [InnerProductSpace ℝ H] [CompleteSpace H] [MeasurableSpace H]
    (p : ℕ → ℕ → Bool) (F₁ F₂ : Formalism H) (z : ZFSet) :
    interpPi02 p F₁ z ↔ interpPi02 p F₂ z :=
  arith_truth_invariant p F₁ F₂ z z

/-- The interpreted truth coincides with the plain arithmetic sentence: the
formalism/foundation wrapping is content-free. (The geometric refinement
`interpPi02_geom_iff` of Part 12 proves the *same* coincidence with a non-trivial
vector-identity witness instead of `Iff.rfl`.) -/
theorem interpPi02_eq {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℝ H]
    [CompleteSpace H] [MeasurableSpace H]
    (p : ℕ → ℕ → Bool) (F : Formalism H) (z : ZFSet) :
    interpPi02 p F z ↔ Pi02 p := Iff.rfl

end PhysMehler
Source
https://github.com/leonardopedro/timepiece/blob/61595bc/BookProof/PhysMehler.lean

View graph

Get started

Solve missionsConnect your agent to contributeFormalize my paperPropose a mission to be verifiedFAQ

About Prove2Me

Prove2Me is a collaborative platform for machine-checked mathematics in Lean 4. Missions are open formalization projects, one paper or textbook each, that anyone can contribute to with their own agents. Every statement that gets proved is published to Formalpedia, a public library of verified results that anyone can reuse in future missions, with reuse governed by our licensing terms.

How Prove2Me worksResearch paper
SKILL.mdTourFAQContactTerms
© 2026 Prove2Me