diff --git a/Physicslib4.lean b/Physicslib4.lean index 7148290..fb4324c 100644 --- a/Physicslib4.lean +++ b/Physicslib4.lean @@ -96,10 +96,16 @@ import Physicslib4.Spectral.OperatorIntegral import Physicslib4.Spectral.ProjectionValuedMeasure import Physicslib4.Spectral.SpectralTheorem import Physicslib4.Spectral.Spectrum +import Physicslib4.Spectral.Stone.Basic +import Physicslib4.Spectral.Stone.Bounded +import Physicslib4.Spectral.Stone.Density +import Physicslib4.Spectral.Stone.Exponential +import Physicslib4.Spectral.Stone.Theorem import Physicslib4.Spectral.Unbounded.AbstractCalculus import Physicslib4.Spectral.Unbounded.Basic import Physicslib4.Spectral.Unbounded.Cayley import Physicslib4.Spectral.Unbounded.DirectSum +import Physicslib4.Spectral.Unbounded.FunctionalCalculus import Physicslib4.Spectral.Unbounded.Integral import Physicslib4.Spectral.Unbounded.Normal import Physicslib4.Spectral.Unbounded.Spectrum diff --git a/Physicslib4/AQFT/HaagKastler/CovariantState.lean b/Physicslib4/AQFT/HaagKastler/CovariantState.lean index e40212d..1979135 100644 --- a/Physicslib4/AQFT/HaagKastler/CovariantState.lean +++ b/Physicslib4/AQFT/HaagKastler/CovariantState.lean @@ -36,8 +36,7 @@ to an automorphism group of the quasilocal algebra `𝔘` is carried out in `QuasilocalIntertwiner.lean` (`QuasilocalLift`, `HaagKastlerNet.action`), which gives Lorentz-invariant states a single invariant state on `𝔘`. A genuine *vacuum state* requires, beyond invariance, the spectrum condition (energy -positivity), which is not yet formalizable (Mathlib lacks Stone's theorem and -unbounded self-adjoint operator theory). +positivity); it is formalised in `VacuumState.lean` through `AQFT.IsPositiveEnergy`. -/ namespace Physicslib4 diff --git a/Physicslib4/AQFT/HaagKastler/Isotony.lean b/Physicslib4/AQFT/HaagKastler/Isotony.lean index ad72168..8245423 100644 --- a/Physicslib4/AQFT/HaagKastler/Isotony.lean +++ b/Physicslib4/AQFT/HaagKastler/Isotony.lean @@ -9,7 +9,7 @@ import Physicslib4.AQFT.HaagKastler.LocalAlgebras # Axiom 2: Isotony This file formalises the blueprint declaration `def:isotony` -(Axiom 2 of the "sharpened" Haag-Kastler axioms, section 10.5 of the +(Axiom 2 of the "sharpened" Haag-Kastler axioms, section 10.6 of the AQFT-in-Lean blueprint): > If `𝐁₁ ⊆ 𝐁₂` (basis sets of the Alexandrov topology) then the diff --git a/Physicslib4/AQFT/HaagKastler/LocalAlgebras.lean b/Physicslib4/AQFT/HaagKastler/LocalAlgebras.lean index 290f17b..3b44805 100644 --- a/Physicslib4/AQFT/HaagKastler/LocalAlgebras.lean +++ b/Physicslib4/AQFT/HaagKastler/LocalAlgebras.lean @@ -10,7 +10,7 @@ import Physicslib4.Spacetime.Minkowski # Axiom 1: Local Algebras This file formalises the blueprint declaration `def:local-algebras` -(Axiom 1 of the "sharpened" Haag-Kastler axioms, section 10.5 of the +(Axiom 1 of the "sharpened" Haag-Kastler axioms, section 10.6 of the AQFT-in-Lean blueprint): > An assignment from the Alexandrov-basis sets `𝐁` of Minkowski diff --git a/Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean b/Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean index 15e5f63..75bb3d4 100644 --- a/Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean +++ b/Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean @@ -13,7 +13,7 @@ import Physicslib4.Spacetime.MinkowskiDirected This file formalises the blueprint declaration `def:local-commutativity` (Axiom 3 of the "sharpened" Haag-Kastler -axioms, section 10.5 of the AQFT-in-Lean blueprint): +axioms, section 10.6 of the AQFT-in-Lean blueprint): > If two Alexandrov-basis sets `𝐁₁`, `𝐁₂` are *completely spacelike* > with respect to each other, then the local algebras `𝔘(𝐁₁)` and diff --git a/Physicslib4/AQFT/HaagKastler/LorentzCovariance.lean b/Physicslib4/AQFT/HaagKastler/LorentzCovariance.lean index 96d21c3..74e7631 100644 --- a/Physicslib4/AQFT/HaagKastler/LorentzCovariance.lean +++ b/Physicslib4/AQFT/HaagKastler/LorentzCovariance.lean @@ -13,7 +13,7 @@ import Physicslib4.AQFT.HaagKastler.Isotony This file formalises the blueprint declaration `def:lorentz-covariance` (Axiom 5 of the "sharpened" Haag-Kastler -axioms, section 10.5 of the AQFT-in-Lean blueprint): +axioms, section 10.6 of the AQFT-in-Lean blueprint): > The inhomogeneous Lorentz group `𝓛` (more precisely, its identity > component; see section 7.1 of the blueprint) acts on the diff --git a/Physicslib4/AQFT/HaagKastler/Net.lean b/Physicslib4/AQFT/HaagKastler/Net.lean index 7923f45..7950e62 100644 --- a/Physicslib4/AQFT/HaagKastler/Net.lean +++ b/Physicslib4/AQFT/HaagKastler/Net.lean @@ -16,7 +16,7 @@ import Physicslib4.AQFT.HaagKastler.LorentzCovarianceAxiom This file bundles the data of Axiom 1 (`def:local-algebras`) together with the propositional content of Axioms 2, 3 and 5 into a single `structure HaagKastlerNet`, formalising the blueprint -declaration `def:haag-kastler-net` (section 10.5 of the AQFT-in-Lean +declaration `def:haag-kastler-net` (section 10.6 of the AQFT-in-Lean blueprint). ## Main definitions diff --git a/Physicslib4/AQFT/HaagKastler/ObservableBridge.lean b/Physicslib4/AQFT/HaagKastler/ObservableBridge.lean index 49067a4..6dd68d2 100644 --- a/Physicslib4/AQFT/HaagKastler/ObservableBridge.lean +++ b/Physicslib4/AQFT/HaagKastler/ObservableBridge.lean @@ -9,7 +9,7 @@ import Physicslib4.AQFT.HaagKastler.QuasilocalObservable # Axiom 4 as a bridge principle This file encodes the blueprint declaration `def:quasilocal-completeness` -(Axiom 4, section 10.5 of the AQFT-in-Lean blueprint): +(Axiom 4, section 10.6 of the AQFT-in-Lean blueprint): > All "observables" are quasilocal observables. diff --git a/Physicslib4/AQFT/HaagKastler/QuasilocalAlgebra.lean b/Physicslib4/AQFT/HaagKastler/QuasilocalAlgebra.lean index d4b2f2f..13f989b 100644 --- a/Physicslib4/AQFT/HaagKastler/QuasilocalAlgebra.lean +++ b/Physicslib4/AQFT/HaagKastler/QuasilocalAlgebra.lean @@ -11,7 +11,7 @@ import Mathlib.Analysis.CStarAlgebra.Hom # Quasilocal Algebra This file formalises the blueprint declaration -`def:quasilocal-algebra` (section 10.5 of the AQFT-in-Lean blueprint): +`def:quasilocal-algebra` (section 10.6 of the AQFT-in-Lean blueprint): > Consider the set-theoretic union of all `𝔘(𝐁)`. As previously > proven, this set-theoretic union is a normed *-algebra. Also, as diff --git a/Physicslib4/AQFT/HaagKastler/QuasilocalExistence.lean b/Physicslib4/AQFT/HaagKastler/QuasilocalExistence.lean index 9e27a73..a6a532a 100644 --- a/Physicslib4/AQFT/HaagKastler/QuasilocalExistence.lean +++ b/Physicslib4/AQFT/HaagKastler/QuasilocalExistence.lean @@ -10,7 +10,7 @@ import Physicslib4.AQFT.HaagKastler.QuasilocalColimit # Existence of a quasilocal algebra This file formalises the blueprint declaration `thrm:quasilocal-algebra-exists` -(section 10.5 of the AQFT-in-Lean blueprint): +(section 10.6 of the AQFT-in-Lean blueprint): > Every local net satisfying Axiom 2 admits a quasilocal algebra. diff --git a/Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean b/Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean index d0e1cab..05a02fb 100644 --- a/Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean +++ b/Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean @@ -84,19 +84,15 @@ theorem IsKMSStateForFlow.convexCombo (flow : ℝ → InhomogeneousLorentzGroup) AQFT.IsKMSState.convexCombo s hs0 hs1 h₁ h₂ open scoped InnerProductSpace in -/-- **Ground state for a covariance flow (bounded-generator scaffold).** A state `ω` on -the quasilocal algebra `𝔘` is a *ground state* for a one-parameter subgroup `t ↦ L_t` of -the inhomogeneous Lorentz group (e.g. a translation or boost flow) when it is invariant -under the flow and, in a GNS representation `(K, π, Ω)` reproducing `ω` and implementing -the flow by unitaries `U` fixing `Ω`, the one-parameter unitary group `t ↦ U t` has -positive energy (`AQFT.IsPositiveEnergy`). This is the ground-state (`β → ∞`, -spectrum-condition) counterpart of `IsKMSStateForFlow`: the stationary state whose flow -generator (the Hamiltonian, for a timelike flow) is positive. The positive-energy -condition is the bounded-generator scaffold; the faithful unbounded form is Stone-gated - -**Restriction:** inherits the bounded-generator restriction of `AQFT.IsPositiveEnergy` -(a positive *bounded* generator); the intended form and what it is waiting on (Stone's -theorem) are recorded there. -/ +/-- **Ground state for a covariance flow.** A state `ω` on the quasilocal algebra `𝔘` is +a *ground state* for a one-parameter subgroup `t ↦ L_t` of the inhomogeneous Lorentz group +(e.g. a translation or boost flow) when it is invariant under the flow and, in a GNS +representation `(K, π, Ω)` reproducing `ω` and implementing the flow by unitaries `U` +fixing `Ω`, the one-parameter unitary group `t ↦ U t` has positive energy +(`AQFT.IsPositiveEnergy`): it is strongly continuous with positive generator. This is the +ground-state (`β → ∞`, spectrum-condition) counterpart of `IsKMSStateForFlow`: the +stationary state whose flow generator (the Hamiltonian, for a timelike flow) is +positive. -/ def IsGroundStateForFlow (flow : ℝ → InhomogeneousLorentzGroup) (ω : Physicslib4.GNS.State N.quasilocal.carrier) : Prop := (∀ (t : ℝ) (a : N.quasilocal.carrier), (ω (N.flowAut flow t a) : ℂ) = ω a) ∧ @@ -108,8 +104,8 @@ def IsGroundStateForFlow (flow : ℝ → InhomogeneousLorentzGroup) (∀ t : ℝ, U t Ω = Ω) ∧ AQFT.IsPositiveEnergy U -/-- A covariance-flow ground state is invariant under the flow (the first conjunct); no -spectrum condition or Stone's theorem is needed. -/ +/-- A covariance-flow ground state is invariant under the flow (the first conjunct); the +spectrum condition is not used. -/ theorem IsGroundStateForFlow.invariant (flow : ℝ → InhomogeneousLorentzGroup) {ω : Physicslib4.GNS.State N.quasilocal.carrier} (h : N.IsGroundStateForFlow flow ω) : @@ -118,8 +114,8 @@ theorem IsGroundStateForFlow.invariant (flow : ℝ → InhomogeneousLorentzGroup open scoped InnerProductSpace in /-- The implementing unitary group of a covariance-flow ground state is strongly -continuous, since it has positive energy (`AQFT.IsPositiveEnergy.strongContinuous`). This -needs no spectrum condition. -/ +continuous: strong continuity is a field of the positive-energy hypothesis +(`AQFT.IsPositiveEnergy.strongContinuous`). -/ theorem IsGroundStateForFlow.exists_strongContinuous_unitary (flow : ℝ → InhomogeneousLorentzGroup) {ω : Physicslib4.GNS.State N.quasilocal.carrier} diff --git a/Physicslib4/AQFT/HaagKastler/VacuumState.lean b/Physicslib4/AQFT/HaagKastler/VacuumState.lean index 2fdf14b..338341b 100644 --- a/Physicslib4/AQFT/HaagKastler/VacuumState.lean +++ b/Physicslib4/AQFT/HaagKastler/VacuumState.lean @@ -7,25 +7,18 @@ import Physicslib4.AQFT.HaagKastler.QuasilocalIntertwiner import Physicslib4.AQFT.PositiveEnergy /-! -# Vacuum states: the generator-parameterized scaffold +# Vacuum states A *vacuum state* of a (Poincaré-)covariant quasilocal algebra is an invariant state whose GNS representation additionally satisfies the **spectrum condition**: -the energy-momentum is positive. The physically faithful form is that, for every -future-pointing timelike direction `n`, the self-adjoint generator `P(n)` of the -one-parameter translation unitary group `t ↦ U(t·n)` is positive (`0 ≤ P(n)`). - -Stating that faithfully needs Stone's theorem and the theory of unbounded -self-adjoint operators, neither of which Mathlib currently provides. This file -sets up the API so that the spectrum condition enters **as a hypothesis** and the -generator (and its positivity) is supplied data, deferring only the -construction/self-adjointness that Stone will provide: - -* `IsPositiveEnergy V` — a one-parameter unitary group `V : ℝ → (H ≃ₗᵢ[ℂ] H)` has - positive energy when its generator is a positive *bounded* operator `P` with - `V t = exp(i t P)`. The bounded-generator form is a genuine restriction (physical - generators are unbounded); it is the scaffold that compiles today, with the - unbounded form to follow once Stone's theorem lands. +the energy-momentum is positive. Here it is imposed in the form that, for every +future-pointing timelike direction `n`, the one-parameter translation unitary group +`t ↦ U(t·n)` has positive energy: it is strongly continuous and its self-adjoint +generator `P(n)` is positive (`AQFT.IsPositiveEnergy`). This is equivalent to the +textbook form, that the joint spectrum of the energy-momentum operators lies in the +closed forward cone; that form would need a joint spectral measure for commuting +unbounded operators and is not formalised. + * `HaagKastlerNet.IsVacuumState ftl ω` — invariance plus, in the GNS representation, positive energy of every future-timelike translation subgroup. The future-timelike-translation predicate `ftl` is a parameter. @@ -33,14 +26,13 @@ construction/self-adjointness that Stone will provide: *translation* subgroup `n ↦ (id, n)` of the inhomogeneous Lorentz group, the one-parameter flow `t ↦ (id, t • n)`, and the concrete predicate picking out the flows in a future-pointing timelike direction `n` (i.e. `n` in the forward - Minkowski cone). This wires in the translation subgroup and its causal structure, - so `ftl` can be discharged with its intended value. + Minkowski cone), with which `ftl` is discharged. * `HaagKastlerNet.IsVacuumStateConcrete ω` — `IsVacuumState` with `ftl` fixed to `IsFutureTimelikeTranslation`; the vacuum definition then depends on no free predicate. -These are the *necessary* conditions for a vacuum; constructing/discharging the -spectrum condition for a concrete net is the Stone-gated next layer. +These are the *necessary* conditions for a vacuum; constructing a vacuum state for a +concrete net is not attempted here. -/ namespace Physicslib4 @@ -118,27 +110,18 @@ def IsFutureTimelikeTranslation (γ : ℝ → InhomogeneousLorentzGroup) : Prop ∃ n : StandardMinkowskiSpacetime.Carrier, (n : SpacetimeModel) ∈ minkowskiForwardCone 0 ∧ γ = translationFlow n -/-- **Vacuum state (generator-parameterized scaffold).** A state `ω` on the -quasilocal algebra is a *vacuum state* (relative to the future-timelike-translation -predicate `ftl`) when: +/-- **Vacuum state.** A state `ω` on the quasilocal algebra is a *vacuum state* +(relative to the future-timelike-translation predicate `ftl`) when: 1. it is invariant under the covariance action (`IsInvariantState`); and 2. in a GNS representation `(H, π, Ω)` reproducing `ω` and implementing the action by unitaries `U`, every future-timelike translation one-parameter subgroup `γ` - has positive energy: `t ↦ U (γ t)` satisfies `IsPositiveEnergy`. + has positive energy: `t ↦ U (γ t)` satisfies `IsPositiveEnergy`, i.e. it is a + strongly continuous one-parameter unitary group with positive generator. This packages the two *necessary* vacuum conditions — invariance and the spectrum -condition — with the spectrum condition entering as the positive-energy hypothesis -on the implementing unitaries. The future-timelike-translation predicate `ftl` is a -parameter (to be instantiated once the translation subgroup and its causal -structure are available); the positive-energy condition is the bounded-generator -scaffold of `IsPositiveEnergy`. - -**Restriction:** the spectrum condition is imposed through `IsPositiveEnergy`, which -requires each translation group `t ↦ U (γ t)` to have a *bounded* positive generator. -The intended form asks for a strongly continuous group whose unbounded self-adjoint -generator is positive. It is waiting on Stone's theorem, which is in neither Mathlib nor -this project. -/ +condition. The predicate `ftl` is a parameter; `IsVacuumStateConcrete` fixes it to +`IsFutureTimelikeTranslation`. -/ def HaagKastlerNet.IsVacuumState (N : HaagKastlerNet) (ftl : (ℝ → InhomogeneousLorentzGroup) → Prop) (ω : Physicslib4.GNS.State N.quasilocal.carrier) : Prop := @@ -153,7 +136,7 @@ def HaagKastlerNet.IsVacuumState (N : HaagKastlerNet) IsOneParameterSubgroup γ → ftl γ → IsPositiveEnergy (fun t => U (γ t))) /-- **A vacuum state is invariant.** Invariance is the first conjunct of the vacuum -conditions, so it is immediate - no spectrum condition / Stone's theorem needed. -/ +conditions, so it is immediate; the spectrum condition is not used. -/ theorem HaagKastlerNet.IsVacuumState.invariant {N : HaagKastlerNet} {ftl : (ℝ → InhomogeneousLorentzGroup) → Prop} @@ -165,8 +148,8 @@ theorem HaagKastlerNet.IsVacuumState.invariant invariance (`IsVacuumState.invariant`) with purity gives the irreducible, covariant GNS representation of `IsInvariantState.exists_gns_irreducible_covariant`: a covariant GNS triple with implementing unitaries `U(L)` (fixing `Ω`, with operator covariance) whose -representation is irreducible and generates all of `𝓑(H)`. This needs no spectrum -condition; it is the same no-Stone content, now packaged for a (pure) vacuum state. -/ +representation is irreducible and generates all of `𝓑(H)`. This does not use the +spectrum condition. -/ theorem HaagKastlerNet.IsVacuumState.exists_gns_irreducible_covariant {N : HaagKastlerNet.{u}} {ftl : (ℝ → InhomogeneousLorentzGroup) → Prop} @@ -193,10 +176,7 @@ theorem HaagKastlerNet.IsVacuumState.exists_gns_irreducible_covariant `IsFutureTimelikeTranslation`, so the spectrum condition is imposed on exactly the one-parameter translation subgroups `t ↦ (id, t • n)` with `n` future-pointing timelike. This discharges the abstract `ftl` parameter with its intended value, so a -concrete vacuum state no longer depends on a free predicate. - -**Restriction:** inherits the bounded-generator restriction of `IsVacuumState`; the -intended form and what it is waiting on are recorded there. -/ +concrete vacuum state no longer depends on a free predicate. -/ def HaagKastlerNet.IsVacuumStateConcrete (N : HaagKastlerNet) (ω : Physicslib4.GNS.State N.quasilocal.carrier) : Prop := N.IsVacuumState IsFutureTimelikeTranslation ω diff --git a/Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean b/Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean index e845c27..f2c888a 100644 --- a/Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean +++ b/Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean @@ -9,7 +9,7 @@ import Physicslib4.Spacetime.CrossMetricIsometry /-! # General covariance: nets on pullback-related metrics -This file formalises Section 10.7 of the AQFT-in-Lean blueprint +This file formalises Section 10.8 of the AQFT-in-Lean blueprint (`sections/sec10/general-covariance-in-curved-spacetime`): the notion of an *equivalence of Haag-Kastler nets* along a basis-set-preserving bijection of carriers, and the postulate of *general covariance* for a net theory. diff --git a/Physicslib4/AQFT/HaagKastlerCurved/StabilizerKMS.lean b/Physicslib4/AQFT/HaagKastlerCurved/StabilizerKMS.lean index f01b580..b8ff45a 100644 --- a/Physicslib4/AQFT/HaagKastlerCurved/StabilizerKMS.lean +++ b/Physicslib4/AQFT/HaagKastlerCurved/StabilizerKMS.lean @@ -134,19 +134,13 @@ theorem IsKMSStateForFlow.convexCombo N.IsKMSStateForFlow B flow β (ω₁.convexCombo ω₂ s hs0 hs1) := AQFT.IsKMSState.convexCombo s hs0 hs1 h₁ h₂ -/-- **Ground state for a Killing flow (bounded-generator scaffold).** A state `ω` on -`𝔘(B)` is a *ground state* for a one-parameter Killing flow `t ↦ φ_t` into `Stab(B)` -when it is invariant under the flow and, in a GNS representation `(K, π, Ω)` reproducing -`ω` and implementing the flow by unitaries `U` (fixing `Ω`), the one-parameter unitary -group `t ↦ U t` has positive energy (`AQFT.IsPositiveEnergy`). This is the ground-state -(`β → ∞`, spectrum-condition) counterpart of `IsKMSStateForFlow`: it selects the -stationary state whose Killing-flow generator (the local "Hamiltonian") is positive. The -positive-energy condition is the bounded-generator scaffold; the faithful unbounded form -is Stone-gated - -**Restriction:** inherits the bounded-generator restriction of `AQFT.IsPositiveEnergy` -(a positive *bounded* generator); the intended form and what it is waiting on (Stone's -theorem) are recorded there. -/ +/-- **Ground state for a Killing flow.** A state `ω` on `𝔘(B)` is a *ground state* for a +one-parameter Killing flow `t ↦ φ_t` into `Stab(B)` when it is invariant under the flow +and, in a GNS representation `(K, π, Ω)` reproducing `ω` and implementing the flow by +unitaries `U` (fixing `Ω`), the one-parameter unitary group `t ↦ U t` has positive energy +(`AQFT.IsPositiveEnergy`): it is strongly continuous with positive generator. This is the +ground-state (`β → ∞`, spectrum-condition) counterpart of `IsKMSStateForFlow`: it selects +the stationary state whose Killing-flow generator (the local "Hamiltonian") is positive. -/ def IsGroundStateForFlow (B : Set M.Carrier) (flow : ℝ → ↥(MulAction.stabilizer M.Isom B)) (ω : Physicslib4.GNS.State (N.algebra B)) : Prop := @@ -159,8 +153,8 @@ def IsGroundStateForFlow (B : Set M.Carrier) (∀ t : ℝ, U t Ω = Ω) ∧ AQFT.IsPositiveEnergy U -/-- A Killing-flow ground state is invariant under the flow (the first conjunct); no -spectrum condition or Stone's theorem is needed. -/ +/-- A Killing-flow ground state is invariant under the flow (the first conjunct); the +spectrum condition is not used. -/ theorem IsGroundStateForFlow.invariant (B : Set M.Carrier) (flow : ℝ → ↥(MulAction.stabilizer M.Isom B)) {ω : Physicslib4.GNS.State (N.algebra B)} @@ -169,8 +163,8 @@ theorem IsGroundStateForFlow.invariant (B : Set M.Carrier) h.1 /-- The implementing unitary group of a Killing-flow ground state is strongly -continuous, since it has positive energy (`AQFT.IsPositiveEnergy.strongContinuous`). This -needs no spectrum condition. -/ +continuous: strong continuity is a field of the positive-energy hypothesis +(`AQFT.IsPositiveEnergy.strongContinuous`). -/ theorem IsGroundStateForFlow.exists_strongContinuous_unitary (B : Set M.Carrier) (flow : ℝ → ↥(MulAction.stabilizer M.Isom B)) {ω : Physicslib4.GNS.State (N.algebra B)} diff --git a/Physicslib4/AQFT/PositiveEnergy.lean b/Physicslib4/AQFT/PositiveEnergy.lean index d8d6654..4df5386 100644 --- a/Physicslib4/AQFT/PositiveEnergy.lean +++ b/Physicslib4/AQFT/PositiveEnergy.lean @@ -3,7 +3,8 @@ Copyright (c) 2026 Lean Community. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Lean Community -/ -import Physicslib4.Operators.Conjugation +import Physicslib4.Spectral.Stone.Bounded +import Physicslib4.Spectral.Stone.Theorem import Mathlib.Analysis.Normed.Algebra.Exponential import Mathlib.Analysis.SpecialFunctions.Exponential import Mathlib.Analysis.InnerProductSpace.Positive @@ -11,62 +12,64 @@ import Mathlib.Analysis.InnerProductSpace.Positive /-! # Positive energy of a one-parameter unitary group -The **positive-energy** (spectrum) condition for a strongly continuous one-parameter -unitary group on a Hilbert space, in the *bounded-generator scaffold* form: the group is -`t ↦ exp(i t P)` for a positive bounded operator `P`. This is spacetime-agnostic — it is -shared by the Minkowski (translation) and curved (Killing-flow) spectrum conditions. - -The generator of a physical translation/Killing flow is unbounded, so requiring `P` -bounded is a genuine restriction; the faithful unbounded form needs Stone's theorem and -unbounded self-adjoint operators, which Mathlib does not yet provide. +The **positive-energy** (spectrum) condition for a one-parameter unitary group on a Hilbert +space: the group is strongly continuous and its infinitesimal generator is a positive +operator. By Stone's theorem the generator is then self-adjoint and `V(t) = e^{itA}` +(`isPositiveEnergy_iff_exists_exp`). This is spacetime-agnostic: it is shared by the +Minkowski (translation) and curved (Killing-flow) spectrum conditions. ## Main results -* `Physicslib4.AQFT.IsPositiveEnergy` — the bounded-generator positive-energy condition. +* `Physicslib4.AQFT.IsPositiveEnergy` — the positive-energy condition. * `isPositiveEnergy_const_refl` — the trivial group has positive energy. -* `exp_generator_unique` — the generator is unique. +* `generator_eq_of_eq_expUnitary` — the generator is the unique `B` with `V(t) = e^{itB}`. * `IsPositiveEnergy.conj` — positive energy is a unitary invariant. * `IsPositiveEnergy.strongContinuous` — a positive-energy group is strongly continuous. +* `isPositiveEnergy_exp` — the bounded case `V(t) = exp(itP)`, `P ≥ 0`. +* `isPositiveEnergy_iff_exists_exp` — the exponential form, via Stone's theorem. -/ namespace Physicslib4 namespace AQFT open scoped InnerProductSpace +open Spectral.Stone variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] -/-- **Positive-energy condition (bounded-generator scaffold).** A one-parameter -unitary group `V : ℝ → (H ≃ₗᵢ[ℂ] H)` has *positive energy* when its generator is a -positive bounded operator: there is `P : H →L[ℂ] H` with `P.IsPositive` (hence -self-adjoint, with non-negative spectrum) such that `V t = exp(i t P)` for every -`t`. - -The generator of a physical translation is unbounded, so requiring `P` bounded is a -restriction. The positivity `P.IsPositive` is the energy-positivity that the spectrum -condition asserts. - -**Restriction:** the generator `P` is required to be bounded, so `V` is norm-continuous. -The intended form is a strongly continuous unitary group `V t = exp(i t P)` with `P` an -unbounded, positive self-adjoint operator. It is waiting on Stone's theorem, which is in -neither Mathlib nor this project. Unbounded self-adjoint operators and their spectral -theorem are now available in `Physicslib4.Spectral.Unbounded`. -/ -def IsPositiveEnergy (V : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop := - ∃ P : H →L[ℂ] H, P.IsPositive ∧ - ∀ (t : ℝ) (x : H), V t x = NormedSpace.exp (((t : ℂ) * Complex.I) • P) x +/-- **Positive-energy condition.** A family `V : ℝ → (H ≃ₗᵢ[ℂ] H)` of unitaries has +*positive energy* when it is a strongly continuous one-parameter unitary group whose +infinitesimal generator `A` is a positive operator: `A` is symmetric and `⟪ψ, A ψ⟫ ≥ 0` on +`Dom(A)`. By Stone's theorem `A` is then self-adjoint and `V(t) = e^{itA}` +(`isPositiveEnergy_iff_exists_exp`). The positivity of the generator is the +energy-positivity asserted by the spectrum condition. + +Blueprint reference: `def:positive-energy`. -/ +structure IsPositiveEnergy (V : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop where + /-- `V` is a one-parameter unitary group. -/ + isOneParameterUnitaryGroup : IsOneParameterUnitaryGroup V + /-- `V` is strongly continuous. -/ + isStronglyContinuous : IsStronglyContinuous V + /-- The infinitesimal generator of `V` is a positive operator. -/ + isPositive_generator : Spectral.Unbounded.IsPositive (generator V) omit [CompleteSpace H] in -/-- The constant (trivial) unitary group `t ↦ id` has positive energy, with zero -generator `P = 0`: `exp(0) = 1 = id`, and `0` is a positive operator. -/ +/-- The constant (trivial) unitary group `t ↦ id` has positive energy, with generator `0` +on all of `H`. + +Blueprint reference: `lmm:positive-energy-const`. -/ theorem isPositiveEnergy_const_refl : IsPositiveEnergy (fun _ : ℝ => LinearIsometryEquiv.refl ℂ H) := by - refine ⟨0, ContinuousLinearMap.isPositive_zero, fun t x => ?_⟩ - simp [smul_zero, NormedSpace.exp_zero] + refine ⟨isOneParameterUnitaryGroup_refl, isStronglyContinuous_refl, ?_⟩ + rw [generator_refl] + refine ⟨fun x y => ?_, fun ψ => ?_⟩ <;> simp + +/-- **Uniqueness of a bounded generator.** If two bounded operators induce the same +one-parameter unitary group — `exp(i t P) = exp(i t Q)` for all `t` — they are equal. +Differentiating at `t = 0` gives `i P = i Q`, hence `P = Q`. The unbounded form is +`generator_eq_of_eq_expUnitary`. -/-- **Uniqueness of the positive-energy generator.** If two bounded generators induce -the same one-parameter unitary group — `exp(i t P) = exp(i t Q)` for all `t` — they are -equal. Differentiating at `t = 0` gives `i \cdot P = i \cdot Q`, hence `P = Q`; -positivity is not needed. So the generator witnessing `IsPositiveEnergy` is unique. -/ +Blueprint reference: `lmm:exp-generator-unique`. -/ theorem exp_generator_unique {P Q : H →L[ℂ] H} (h : ∀ (t : ℝ) (x : H), NormedSpace.exp (((t : ℂ) * Complex.I) • P) x @@ -91,53 +94,65 @@ theorem exp_generator_unique {P Q : H →L[ℂ] H} have key : Complex.I • P = Complex.I • Q := hP.unique hQ exact smul_right_injective (H →L[ℂ] H) Complex.I_ne_zero key -/-- **Positive energy is a unitary invariant.** If a one-parameter unitary group `V` -has positive energy, so does its conjugate `t ↦ W ∘ V t ∘ W⁻¹` by a unitary `W`, with -generator `W P W⁻¹` (positive, being the unitary conjugate of the positive generator -`P`). Physically: the spectrum condition does not depend on the choice of unitary -frame. -/ +/-- **Uniqueness of the generator.** If `V(t) = e^{itB}` for all `t`, with `B` +self-adjoint, then `B` is the infinitesimal generator of `V`, with equality of domains. In +particular the positive operator witnessing positive energy is unique. + +Blueprint reference: `lmm:exp-generator-unique`. -/ +theorem generator_eq_of_eq_expUnitary {V : ℝ → (H ≃ₗᵢ[ℂ] H)} {B : H →ₗ.[ℂ] H} + (hB : IsSelfAdjoint B) (h : ∀ t, V t = expUnitary hB t) : generator V = B := by + obtain rfl : V = expUnitary hB := funext h + exact (generator_expUnitary hB).2.2 + +omit [CompleteSpace H] in +/-- **Positive energy is a unitary invariant.** If `V` has positive energy, so does its +conjugate `t ↦ W ∘ V t ∘ W⁻¹` by a unitary `W`, with generator `W A W⁻¹` on `W · Dom(A)`. +Physically: the spectrum condition does not depend on the choice of unitary frame. + +Blueprint reference: `lmm:positive-energy-conj`. -/ theorem IsPositiveEnergy.conj (W : H ≃ₗᵢ[ℂ] H) {V : ℝ → (H ≃ₗᵢ[ℂ] H)} (hV : IsPositiveEnergy V) : - IsPositiveEnergy (fun t => (W.symm.trans (V t)).trans W) := by - obtain ⟨P, hPpos, hPexp⟩ := hV - refine ⟨lieConj W P, ?_, fun t x => ?_⟩ - · refine ContinuousLinearMap.isPositive_def.mpr ⟨fun a b => ?_, fun x => ?_⟩ - · simp only [ContinuousLinearMap.coe_coe, lieConj_apply] - calc ⟪W (P (W.symm a)), b⟫_ℂ - = ⟪W (P (W.symm a)), W (W.symm b)⟫_ℂ := by rw [W.apply_symm_apply] - _ = ⟪P (W.symm a), W.symm b⟫_ℂ := W.inner_map_map _ _ - _ = ⟪W.symm a, P (W.symm b)⟫_ℂ := (ContinuousLinearMap.isPositive_def.mp hPpos).1 _ _ - _ = ⟪W (W.symm a), W (P (W.symm b))⟫_ℂ := (W.inner_map_map _ _).symm - _ = ⟪a, W (P (W.symm b))⟫_ℂ := by rw [W.apply_symm_apply] - · rw [ContinuousLinearMap.reApplyInnerSelf_apply, lieConj_apply] - have key : ⟪W (P (W.symm x)), x⟫_ℂ = ⟪P (W.symm x), W.symm x⟫_ℂ := by - rw [← W.inner_map_map (P (W.symm x)) (W.symm x), W.apply_symm_apply] - rw [key] - have hpp := (ContinuousLinearMap.isPositive_def.mp hPpos).2 (W.symm x) - rwa [ContinuousLinearMap.reApplyInnerSelf_apply] at hpp - · change ((W.symm.trans (V t)).trans W) x - = NormedSpace.exp (((t : ℂ) * Complex.I) • lieConj W P) x - rw [← lieConj_smul, exp_lieConj, lieConj_apply, - LinearIsometryEquiv.trans_apply, LinearIsometryEquiv.trans_apply, - hPexp t (W.symm x)] - -/-- **A positive-energy group is strongly continuous.** The bounded-generator scaffold -`V t = exp(i t P)` is automatically strongly continuous: `t ↦ V t x` is continuous for -every `x`, since `t ↦ (i t) • P` is continuous and the operator exponential is -continuous. This justifies describing a positive-energy group as a *strongly continuous* -one-parameter unitary group. -/ + IsPositiveEnergy (fun t => (W.symm.trans (V t)).trans W) := + ⟨hV.isOneParameterUnitaryGroup.conj W, hV.isStronglyContinuous.conj W, + hV.isPositive_generator.of_conj W (mem_generator_conj_domain_iff V W) + (generator_conj_apply V W)⟩ + +omit [CompleteSpace H] in +/-- **A positive-energy group is strongly continuous**: `t ↦ V t x` is continuous for every +`x`. This is part of the definition. + +Blueprint reference: `lmm:positive-energy-strong-continuous`. -/ theorem IsPositiveEnergy.strongContinuous {V : ℝ → (H ≃ₗᵢ[ℂ] H)} - (hV : IsPositiveEnergy V) (x : H) : Continuous (fun t : ℝ => V t x) := by - obtain ⟨P, _, hPexp⟩ := hV - haveI : NormedAlgebra ℚ (H →L[ℂ] H) := - NormedAlgebra.restrictScalars ℚ ℂ (H →L[ℂ] H) - have hfun : (fun t : ℝ => V t x) - = fun t : ℝ => NormedSpace.exp (((t : ℂ) * Complex.I) • P) x := by - funext t; exact hPexp t x - rw [hfun] - have harg : Continuous (fun t : ℝ => ((t : ℂ) * Complex.I) • P) := - (Complex.continuous_ofReal.mul continuous_const).smul continuous_const - exact (NormedSpace.exp_continuous.comp harg).clm_apply continuous_const + (hV : IsPositiveEnergy V) (x : H) : Continuous (fun t : ℝ => V t x) := + hV.isStronglyContinuous x + +/-- **The bounded case.** If `P` is a bounded positive operator and `V(t) = exp(itP)` (the +norm-convergent exponential series), then `V` has positive energy, with generator `P` on +all of `H`. + +Blueprint reference: `lmm:positive-energy-exp-bounded`. -/ +theorem isPositiveEnergy_exp {P : H →L[ℂ] H} (hP : P.IsPositive) {V : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hV : ∀ (t : ℝ) (x : H), V t x = NormedSpace.exp (((t : ℂ) * Complex.I) • P) x) : + IsPositiveEnergy V := by + obtain ⟨V', hV', hgrp⟩ := exists_isOneParameterUnitaryGroup_exp hP.isSelfAdjoint + obtain rfl : V = V' := + funext fun t => LinearIsometryEquiv.ext fun x => (hV t x).trans (hV' t x).symm + exact ⟨hgrp, isStronglyContinuous_of_eq_exp hV, + (generator_eq_of_eq_exp hV) ▸ (Spectral.Unbounded.isPositive_toPMap_iff P).mpr hP⟩ + +/-- **Positive energy in exponential form.** `V` has positive energy if and only if there is +a positive self-adjoint operator `A` with `V(t) = e^{itA}` for all `t`. + +Blueprint reference: `thrm:positive-energy-iff-exp`. -/ +theorem isPositiveEnergy_iff_exists_exp {V : ℝ → (H ≃ₗᵢ[ℂ] H)} : + IsPositiveEnergy V ↔ ∃ (A : H →ₗ.[ℂ] H) (hA : IsSelfAdjoint A), + Spectral.Unbounded.IsPositive A ∧ ∀ t, V t = expUnitary hA t := by + refine ⟨fun hV => ?_, fun ⟨A, hA, hpos, h⟩ => ?_⟩ + · obtain ⟨hA, -, hexp, -⟩ := stone hV.isOneParameterUnitaryGroup hV.isStronglyContinuous + exact ⟨generator V, hA, hV.isPositive_generator, hexp⟩ + · obtain rfl : V = expUnitary hA := funext h + obtain ⟨hgrp, hc, hgen⟩ := generator_expUnitary hA + exact ⟨hgrp, hc, hgen.symm ▸ hpos⟩ end AQFT end Physicslib4 diff --git a/Physicslib4/Spacetime/Basic.lean b/Physicslib4/Spacetime/Basic.lean index 7989ddc..a09df6e 100644 --- a/Physicslib4/Spacetime/Basic.lean +++ b/Physicslib4/Spacetime/Basic.lean @@ -17,7 +17,7 @@ import Mathlib.LinearAlgebra.Basis.Basic # Spacetime This file formalises the notion of a *spacetime* used in the AQFT-in-Lean -blueprint, section 10.4. +blueprint, section 10.5. ## Main definitions @@ -88,7 +88,7 @@ def LorentzianAt {V : Type*} [AddCommGroup V] [Module ℝ V] ∀ i j : Fin 4, g (b i) (b j) = lorentzSignature i j /-- -A *spacetime*, in the sense of the AQFT-in-Lean blueprint (section 10.4, +A *spacetime*, in the sense of the AQFT-in-Lean blueprint (section 10.5, `def:spacetime`), is a real, four-dimensional, connected, smooth, Hausdorff manifold `M` equipped with a globally defined smooth tensor field `g` of type `(0,2)` which is non-degenerate and Lorentzian. diff --git a/Physicslib4/Spacetime/CausalStructure.lean b/Physicslib4/Spacetime/CausalStructure.lean index 2bd26e4..f363b9a 100644 --- a/Physicslib4/Spacetime/CausalStructure.lean +++ b/Physicslib4/Spacetime/CausalStructure.lean @@ -11,7 +11,7 @@ import Mathlib.Topology.Basic # Causal structure on a spacetime This file formalises the pointwise causal structure attached to a spacetime, -following section 10.4 of the AQFT-in-Lean blueprint. +following section 10.5 of the AQFT-in-Lean blueprint. ## Main definitions diff --git a/Physicslib4/Spacetime/Causality.lean b/Physicslib4/Spacetime/Causality.lean index 5d016bd..eb67231 100644 --- a/Physicslib4/Spacetime/Causality.lean +++ b/Physicslib4/Spacetime/Causality.lean @@ -12,7 +12,7 @@ import Mathlib.Order.Defs.Unbundled /-! # Causality on a spacetime -This file formalises the causal-relations vocabulary of section 10.4 of the +This file formalises the causal-relations vocabulary of section 10.5 of the AQFT-in-Lean blueprint: trips, causal trips, the chronological precedence relation `≪`, the causal precedence relation `≺`, and their associated chronological/causal future/past sets. diff --git a/Physicslib4/Spacetime/CrossMetricIsometry.lean b/Physicslib4/Spacetime/CrossMetricIsometry.lean index 599989c..6d8bcc7 100644 --- a/Physicslib4/Spacetime/CrossMetricIsometry.lean +++ b/Physicslib4/Spacetime/CrossMetricIsometry.lean @@ -14,7 +14,7 @@ import Physicslib4.Spacetime.LorentzianSpacetime # Cross-metric isometries This file formalises the second half of the blueprint subsection *Pullback -metrics and cross-metric isometries* (section 10.4 of the AQFT-in-Lean +metrics and cross-metric isometries* (section 10.5 of the AQFT-in-Lean blueprint). General covariance compares two *different* metrics on one carrier, related by diff --git a/Physicslib4/Spacetime/Curves.lean b/Physicslib4/Spacetime/Curves.lean index 4eb45fe..ed7e021 100644 --- a/Physicslib4/Spacetime/Curves.lean +++ b/Physicslib4/Spacetime/Curves.lean @@ -20,7 +20,7 @@ import Mathlib.Analysis.Convex.Topology # Paths and curves on a spacetime This file formalises the various flavours of paths and curves used in -section 10.4 of the AQFT-in-Lean blueprint. +section 10.5 of the AQFT-in-Lean blueprint. ## Main definitions diff --git a/Physicslib4/Spacetime/Minkowski.lean b/Physicslib4/Spacetime/Minkowski.lean index 1c469e7..197d28b 100644 --- a/Physicslib4/Spacetime/Minkowski.lean +++ b/Physicslib4/Spacetime/Minkowski.lean @@ -20,7 +20,7 @@ import Mathlib.Analysis.Convex.Basic /-! # Minkowski spacetime and the Alexandrov topology -This file formalises the last three definitions of section 10.4 of the +This file formalises the last three definitions of section 10.5 of the AQFT-in-Lean blueprint: standard Minkowski spacetime, the Alexandrov topology generated by intersections of chronological futures and pasts, and Minkowski spacetime (= standard Minkowski equipped with the diff --git a/Physicslib4/Spacetime/Pullback.lean b/Physicslib4/Spacetime/Pullback.lean index b7eba9d..4f73699 100644 --- a/Physicslib4/Spacetime/Pullback.lean +++ b/Physicslib4/Spacetime/Pullback.lean @@ -13,7 +13,7 @@ import Mathlib.Analysis.Normed.Operator.Bilinear # Pullback of a spacetime metric along a diffeomorphism This file formalises the first half of the blueprint subsection -*Pullback metrics and cross-metric isometries* (section 10.4 of the +*Pullback metrics and cross-metric isometries* (section 10.5 of the AQFT-in-Lean blueprint): the pullback metric `ψ^*g`, the fact that it is again a spacetime metric, and the pullback of a time orientation together with the two-sided transport of future-pointing-ness. diff --git a/Physicslib4/Spectral/Stone/Basic.lean b/Physicslib4/Spectral/Stone/Basic.lean new file mode 100644 index 0000000..c442ed2 --- /dev/null +++ b/Physicslib4/Spectral/Stone/Basic.lean @@ -0,0 +1,395 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Unbounded.FunctionalCalculus +import Mathlib.Analysis.Calculus.BumpFunction.Convolution +import Mathlib.Analysis.Calculus.BumpFunction.Normed +import Mathlib.Analysis.Calculus.MeanValue +import Mathlib.Analysis.InnerProductSpace.Calculus +import Mathlib.Analysis.SpecialFunctions.ExpDeriv + +/-! +# One-parameter unitary groups and their infinitesimal generators + +This file sets up the objects of Stone's theorem (blueprint §10.4). + +## Main definitions + +* `IsOneParameterUnitaryGroup U` — `U : ℝ → (H ≃ₗᵢ[ℂ] H)` satisfies `U 0 = 1` and + `U (s + t) = U s U t`. +* `IsStronglyContinuous U` — every orbit `t ↦ U t ψ` is continuous. +* `generatorQuotient U ψ t` — the difference quotient `(1/i) (U t ψ - ψ)/t`. +* `generator U` — the infinitesimal generator, an unbounded operator whose domain is the set + of `ψ` for which the punctured limit of `generatorQuotient U ψ t` as `t → 0` exists, and + whose value is that limit. + +The generator is defined for any family `U`; the group law is assumed only in the results +that need it. +-/ + +namespace Physicslib4 +namespace Spectral +namespace Stone + +open scoped InnerProductSpace LinearPMap Topology +open Filter + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] + +/-- +A *one-parameter unitary group* on `H`: a family `U t` of unitary operators, `t ∈ ℝ`, with +`U 0 = 1` and `U (s + t) = U s U t`. Unitaries are modelled as linear isometry equivalences, +as elsewhere in the project. + +Blueprint reference: `def:hall-10.11`. +-/ +structure IsOneParameterUnitaryGroup (U : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop where + /-- `U 0 = 1`. -/ + map_zero : ∀ ψ : H, U 0 ψ = ψ + /-- The group law `U (s + t) = U s U t`. -/ + map_add : ∀ (s t : ℝ) (ψ : H), U (s + t) ψ = U s (U t ψ) + +/-- +A family `U` is *strongly continuous* if `s ↦ U s ψ` is continuous for every `ψ`, i.e. +`‖U t ψ - U s ψ‖ → 0` as `s → t`, for every `t`. + +Blueprint reference: `def:hall-10.11`. +-/ +def IsStronglyContinuous (U : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop := + ∀ ψ : H, Continuous fun t : ℝ => U t ψ + +/-- +The difference quotient `(1/i) (U t ψ - ψ)/t` whose punctured limit at `0` defines the +infinitesimal generator. + +Blueprint reference: `def:hall-10.13`. +-/ +noncomputable def generatorQuotient (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (ψ : H) (t : ℝ) : H := + (Complex.I * (t : ℂ))⁻¹ • (U t ψ - ψ) + +theorem generatorQuotient_add (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (φ ψ : H) (t : ℝ) : + generatorQuotient U (φ + ψ) t = generatorQuotient U φ t + generatorQuotient U ψ t := by + simp only [generatorQuotient, map_add, ← smul_add] + congr 1 + abel + +theorem generatorQuotient_smul (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (c : ℂ) (ψ : H) (t : ℝ) : + generatorQuotient U (c • ψ) t = c • generatorQuotient U ψ t := by + simp only [generatorQuotient, map_smul, ← smul_sub, smul_comm c] + +/-- +The domain of the infinitesimal generator: the vectors `ψ` for which the punctured limit of +`generatorQuotient U ψ t` as `t → 0` exists. + +Blueprint reference: `def:hall-10.13`. +-/ +def generatorDomain (U : ℝ → (H ≃ₗᵢ[ℂ] H)) : Submodule ℂ H where + carrier := {ψ | ∃ χ : H, Tendsto (generatorQuotient U ψ) (𝓝[≠] 0) (𝓝 χ)} + add_mem' := by + rintro φ ψ ⟨χ₁, h₁⟩ ⟨χ₂, h₂⟩ + exact ⟨χ₁ + χ₂, (funext (generatorQuotient_add U φ ψ)).symm ▸ h₁.add h₂⟩ + zero_mem' := ⟨0, by + have : generatorQuotient U 0 = fun _ => 0 := funext fun t => by simp [generatorQuotient] + exact this ▸ tendsto_const_nhds⟩ + smul_mem' := by + rintro c ψ ⟨χ, h⟩ + exact ⟨c • χ, (funext (generatorQuotient_smul U c ψ)).symm ▸ h.const_smul c⟩ + +/-- +The *infinitesimal generator* of `U`: `A ψ = lim_{t → 0, t ≠ 0} (1/i) (U t ψ - ψ)/t` on the +subspace `generatorDomain U` where the limit exists. No continuity or density is assumed; +density of the domain for a strongly continuous group is `lmm:hall-10.18`. + +Blueprint reference: `def:hall-10.13`. +-/ +noncomputable def generator (U : ℝ → (H ≃ₗᵢ[ℂ] H)) : H →ₗ.[ℂ] H where + domain := generatorDomain U + toFun := + { toFun := fun ψ => limUnder (𝓝[≠] (0 : ℝ)) (generatorQuotient U ψ) + map_add' := fun φ ψ => by + obtain ⟨χ₁, h₁⟩ := φ.2 + obtain ⟨χ₂, h₂⟩ := ψ.2 + have h : Tendsto (generatorQuotient U ((φ + ψ : generatorDomain U) : H)) (𝓝[≠] 0) + (𝓝 (χ₁ + χ₂)) := + (funext (generatorQuotient_add U φ ψ)).symm ▸ h₁.add h₂ + rw [h.limUnder_eq, h₁.limUnder_eq, h₂.limUnder_eq] + map_smul' := fun c ψ => by + obtain ⟨χ, h⟩ := ψ.2 + have h' : Tendsto (generatorQuotient U ((c • ψ : generatorDomain U) : H)) (𝓝[≠] 0) + (𝓝 (c • χ)) := + (funext (generatorQuotient_smul U c ψ)).symm ▸ h.const_smul c + rw [h'.limUnder_eq, h.limUnder_eq, RingHom.id_apply] } + +theorem generator_domain (U : ℝ → (H ≃ₗᵢ[ℂ] H)) : (generator U).domain = generatorDomain U := + rfl + +/-- +A one-parameter unitary group is strongly continuous as soon as it is strongly continuous +at `0`: `U s ψ → ψ` as `s → 0`, for every `ψ`. + +Blueprint reference: `lmm:strongly-continuous-iff-at-zero`. +-/ +theorem isStronglyContinuous_iff_tendsto_zero {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) : + IsStronglyContinuous U ↔ ∀ ψ : H, Tendsto (fun s : ℝ => U s ψ) (𝓝 0) (𝓝 ψ) := by + refine ⟨fun h ψ => by simpa [hU.map_zero] using (h ψ).tendsto 0, + fun h ψ => continuous_iff_continuousAt.2 fun t => ?_⟩ + have h1 : Tendsto (fun s : ℝ => s - t) (𝓝 t) (𝓝 0) := + tendsto_sub_nhds_zero_iff.2 tendsto_id + have h2 := ((U t).continuous.tendsto ψ).comp ((h ψ).comp h1) + refine h2.congr fun s => ?_ + simp only [Function.comp_apply, ← hU.map_add, add_sub_cancel] + +/-- +The group law forces `U(t)* = U(-t)`, in inner-product form: +`⟪φ, U t ψ⟫ = ⟪U (-t) φ, ψ⟫`. + +Blueprint reference: `lmm:unitary-group-inner-adjoint`. +-/ +theorem IsOneParameterUnitaryGroup.inner_apply {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (t : ℝ) (φ ψ : H) : + ⟪φ, U t ψ⟫_ℂ = ⟪U (-t) φ, ψ⟫_ℂ := by + have h : U t (U (-t) φ) = φ := by rw [← hU.map_add, add_neg_cancel, hU.map_zero] + rw [← (U t).inner_map_map (U (-t) φ), h] + +/-- +The adjoint of `U t` is `U (-t)`. + +Blueprint reference: `lmm:unitary-group-inner-adjoint`. +-/ +theorem IsOneParameterUnitaryGroup.adjoint_eq [CompleteSpace H] {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (t : ℝ) : + ContinuousLinearMap.adjoint (U t).toLinearIsometry.toContinuousLinearMap = + (U (-t)).toLinearIsometry.toContinuousLinearMap := by + refine ((ContinuousLinearMap.eq_adjoint_iff _ _).2 fun x y => ?_).symm + exact (hU.inner_apply t x y).symm + +/-- +Characterization of the generator: `ψ ∈ Dom(A)` with `A ψ = χ` if and only if the +difference quotient `(1/i) (U t ψ - ψ)/t` tends to `χ` as `t → 0`, `t ≠ 0`. + +Blueprint reference: `lmm:generator-spec`. +-/ +theorem exists_generator_eq_iff (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (ψ χ : H) : + (∃ h : ψ ∈ (generator U).domain, generator U ⟨ψ, h⟩ = χ) ↔ + Tendsto (generatorQuotient U ψ) (𝓝[≠] 0) (𝓝 χ) := by + constructor + · rintro ⟨⟨χ', h⟩, rfl⟩ + change Tendsto _ _ (𝓝 (limUnder (𝓝[≠] (0 : ℝ)) (generatorQuotient U ψ))) + rwa [h.limUnder_eq] + · intro h + exact ⟨⟨χ, h⟩, h.limUnder_eq⟩ + +private theorem inner_generatorQuotient {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (φ ψ : H) (t : ℝ) : + ⟪φ, generatorQuotient U ψ t⟫_ℂ = ⟪generatorQuotient U φ (-t), ψ⟫_ℂ := by + simp only [generatorQuotient, inner_smul_right, inner_smul_left, inner_sub_right, + inner_sub_left, hU.inner_apply t φ ψ] + congr 1 + simp [map_inv₀] + +/-- +The generator of a one-parameter unitary group satisfies the symmetry identity +`⟪φ, A ψ⟫ = ⟪A φ, ψ⟫` on its domain, which is symmetry in the density-free sense of +`Unbounded.IsSymmetric`. + +Blueprint reference: `lmm:generator-symmetry-identity`. +-/ +theorem isSymmetric_generator {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) : Unbounded.IsSymmetric (generator U) := by + intro φ ψ + have hφ := (exists_generator_eq_iff U φ (generator U φ)).1 ⟨φ.2, rfl⟩ + have hψ := (exists_generator_eq_iff U ψ (generator U ψ)).1 ⟨ψ.2, rfl⟩ + have hneg : Tendsto (fun t : ℝ => -t) (𝓝[≠] 0) (𝓝[≠] 0) := + tendsto_nhdsWithin_of_tendsto_nhds_of_eventually_within _ + (by simpa using (continuous_neg.tendsto (0 : ℝ)).mono_left nhdsWithin_le_nhds) + (eventually_nhdsWithin_of_forall fun t ht => neg_ne_zero.2 ht) + exact tendsto_nhds_unique (tendsto_const_nhds.inner hψ) + (((hφ.comp hneg).inner tendsto_const_nhds).congr fun t => + (inner_generatorQuotient hU _ _ t).symm) + +/-- +The scalar equation `y' = c y`: a differentiable `y : ℝ → ℂ` with `y' = c y` is +`y t = y 0 * exp (c t)`. + +Blueprint reference: `lmm:linear-ode-scalar`. +-/ +theorem eq_mul_exp_of_hasDerivAt {y : ℝ → ℂ} {c : ℂ} (hy : ∀ t, HasDerivAt y (c * y t) t) + (t : ℝ) : y t = y 0 * Complex.exp (c * t) := by + have hz : ∀ s : ℝ, HasDerivAt (fun s : ℝ => y s * Complex.exp (-c * s)) 0 s := by + intro s + have he : HasDerivAt (fun s : ℝ => Complex.exp (-c * s)) + (Complex.exp (-c * s) * (-c * 1)) s := + (((hasDerivAt_id s).ofReal_comp).const_mul (-c)).cexp + convert (hy s).mul he using 1 + ring + have hconst := is_const_of_deriv_eq_zero (fun s => (hz s).differentiableAt) + (fun s => (hz s).deriv) t 0 + simp only [Complex.ofReal_zero, mul_zero, Complex.exp_zero, mul_one] at hconst + rw [← hconst, mul_assoc, ← Complex.exp_add] + simp + +/-- +Orbits through the generator's domain are differentiable: for `ψ ∈ Dom(A)`, +`s ↦ U s ψ` has derivative `i U t (A ψ)` at every `t`. + +Blueprint reference: `lmm:orbit-hasDerivAt`. +-/ +theorem IsOneParameterUnitaryGroup.hasDerivAt_orbit {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (ψ : (generator U).domain) (t : ℝ) : + HasDerivAt (fun s : ℝ => U s ψ) (Complex.I • U t (generator U ψ)) t := by + obtain ⟨χ, hχ⟩ := ψ.2 + have hA : generator U ψ = χ := hχ.limUnder_eq + rw [hasDerivAt_iff_tendsto_slope_zero, hA] + have h1 : Tendsto (fun h : ℝ => U t (Complex.I • generatorQuotient U ψ h)) (𝓝[≠] 0) + (𝓝 (U t (Complex.I • χ))) := + ((U t).continuous.tendsto _).comp (hχ.const_smul Complex.I) + rw [← map_smul] + refine h1.congr' (eventually_nhdsWithin_of_forall fun h (hh : h ≠ 0) => ?_) + have hh' : (h : ℂ) ≠ 0 := Complex.ofReal_ne_zero.2 hh + simp only [generatorQuotient, smul_smul, hU.map_add t h, ← map_sub, ← map_smul, + RCLike.real_smul_eq_coe_smul (K := ℂ)] + congr 2 + rw [mul_inv, ← mul_assoc, mul_inv_cancel₀ Complex.I_ne_zero, one_mul] + push_cast + rfl + +/-- +The group commutes with its generator: for `ψ ∈ Dom(A)`, `U t ψ ∈ Dom(A)` and +`A (U t ψ) = U t (A ψ)`. + +Blueprint reference: `lmm:generator-commutes`. +-/ +theorem IsOneParameterUnitaryGroup.generator_apply_comm {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (ψ : (generator U).domain) (t : ℝ) : + ∃ h : U t ψ ∈ (generator U).domain, generator U ⟨U t ψ, h⟩ = U t (generator U ψ) := by + refine (exists_generator_eq_iff U _ _).mpr ?_ + have hq : generatorQuotient U (U t ψ) = fun h => U t (generatorQuotient U ψ h) := by + funext h + simp only [generatorQuotient, map_sub, map_smul, ← hU.map_add, add_comm h t] + rw [hq] + exact ((U t).continuous.tendsto _).comp ((exists_generator_eq_iff U _ _).mp ⟨ψ.2, rfl⟩) + +/-- +The group preserves the generator's domain and differentiates to it: for `ψ ∈ Dom(A)` and +every `t`, `U t ψ ∈ Dom(A)` and `s ↦ U s ψ` has derivative `i U t (A ψ) = i A (U t ψ)` at `t`. + +The blueprint assumes `U` strongly continuous; the proof does not use it, so the hypothesis +is omitted. + +Blueprint reference: `lmm:hall-10.17`. +-/ +theorem IsOneParameterUnitaryGroup.hasDerivAt_orbit_generator {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (ψ : (generator U).domain) (t : ℝ) : + ∃ h : U t ψ ∈ (generator U).domain, + HasDerivAt (fun s : ℝ => U s ψ) (Complex.I • generator U ⟨U t ψ, h⟩) t ∧ + generator U ⟨U t ψ, h⟩ = U t (generator U ψ) := by + obtain ⟨h, e⟩ := hU.generator_apply_comm ψ t + exact ⟨h, e ▸ hU.hasDerivAt_orbit ψ t, e⟩ + +/-- +The trivial family `t ↦ 1` is a one-parameter unitary group. + +Blueprint reference: `lmm:generator-const`. +-/ +theorem isOneParameterUnitaryGroup_refl : + IsOneParameterUnitaryGroup (fun _ : ℝ => LinearIsometryEquiv.refl ℂ H) := + ⟨fun _ => rfl, fun _ _ _ => rfl⟩ + +/-- +The trivial family `t ↦ 1` is strongly continuous. + +Blueprint reference: `lmm:generator-const`. +-/ +theorem isStronglyContinuous_refl : + IsStronglyContinuous (fun _ : ℝ => LinearIsometryEquiv.refl ℂ H) := + fun _ => continuous_const + +/-- +The generator of the trivial group `t ↦ 1` is `0`, with domain `H`. + +Blueprint reference: `lmm:generator-const`. +-/ +theorem generator_refl : generator (fun _ : ℝ => LinearIsometryEquiv.refl ℂ H) = 0 := by + have hq : ∀ ψ : H, generatorQuotient (fun _ : ℝ => LinearIsometryEquiv.refl ℂ H) ψ = + fun _ => 0 := fun ψ => funext fun t => by simp [generatorQuotient] + refine LinearPMap.ext (eq_top_iff.2 fun ψ _ => ⟨0, (hq ψ).symm ▸ tendsto_const_nhds⟩) + fun x y _ => ?_ + change limUnder _ _ = 0 + rw [hq] + exact tendsto_const_nhds.limUnder_eq + +/-- +Conjugating a one-parameter unitary group by a unitary `W` gives a one-parameter unitary group +`t ↦ W U(t) W⁻¹`. + +Blueprint reference: `lmm:conj-unitary-group`. +-/ +theorem IsOneParameterUnitaryGroup.conj {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (W : H ≃ₗᵢ[ℂ] H) : + IsOneParameterUnitaryGroup fun t => (W.symm.trans (U t)).trans W where + map_zero ψ := by simp [hU.map_zero] + map_add s t ψ := by simp [hU.map_add] + +/-- +Conjugation by a unitary preserves strong continuity. + +Blueprint reference: `lmm:conj-unitary-group`. +-/ +theorem IsStronglyContinuous.conj {U : ℝ → (H ≃ₗᵢ[ℂ] H)} (hU : IsStronglyContinuous U) + (W : H ≃ₗᵢ[ℂ] H) : IsStronglyContinuous fun t => (W.symm.trans (U t)).trans W := + fun ψ => W.continuous.comp (hU (W.symm ψ)) + +private theorem tendsto_generatorQuotient_conj_iff (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (W : H ≃ₗᵢ[ℂ] H) + (ψ χ : H) : + Tendsto (generatorQuotient (fun t => (W.symm.trans (U t)).trans W) ψ) (𝓝[≠] 0) (𝓝 χ) ↔ + Tendsto (generatorQuotient U (W.symm ψ)) (𝓝[≠] 0) (𝓝 (W.symm χ)) := by + have hq : generatorQuotient (fun t => (W.symm.trans (U t)).trans W) ψ = + fun t => W (generatorQuotient U (W.symm ψ) t) := by + funext t + simp only [generatorQuotient, LinearIsometryEquiv.trans_apply, map_sub, map_smul, + W.apply_symm_apply] + rw [hq] + constructor + · intro h + simpa [Function.comp_def] using (W.symm.continuous.tendsto χ).comp h + · intro h + simpa [Function.comp_def] using (W.continuous.tendsto _).comp h + +/-- +The domain of the generator of `t ↦ W U(t) W⁻¹` is `W · Dom(A)`, `A` the generator of `U`. +No group law is needed: the difference quotient at `ψ` is `W` applied to that of `U` at +`W⁻¹ ψ`. + +Blueprint reference: `lmm:generator-conj`. +-/ +theorem mem_generator_conj_domain_iff (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (W : H ≃ₗᵢ[ℂ] H) (ψ : H) : + ψ ∈ (generator fun t => (W.symm.trans (U t)).trans W).domain ↔ + W.symm ψ ∈ (generator U).domain := by + rw [generator_domain, generator_domain] + constructor + · rintro ⟨χ, hχ⟩ + exact ⟨_, (tendsto_generatorQuotient_conj_iff U W ψ χ).1 hχ⟩ + · rintro ⟨χ, hχ⟩ + exact ⟨W χ, (tendsto_generatorQuotient_conj_iff U W ψ _).2 (by simpa using hχ)⟩ + +/-- +The generator of `t ↦ W U(t) W⁻¹` is `W A W⁻¹`, `A` the generator of `U`. + +Blueprint reference: `lmm:generator-conj`. +-/ +theorem generator_conj_apply (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (W : H ≃ₗᵢ[ℂ] H) (ψ : H) + (h : ψ ∈ (generator fun t => (W.symm.trans (U t)).trans W).domain) + (h' : W.symm ψ ∈ (generator U).domain) : + (generator fun t => (W.symm.trans (U t)).trans W) ⟨ψ, h⟩ = + W (generator U ⟨W.symm ψ, h'⟩) := by + have hA := (exists_generator_eq_iff U _ _).1 ⟨h', rfl⟩ + obtain ⟨_, e⟩ := (exists_generator_eq_iff _ ψ (W (generator U ⟨W.symm ψ, h'⟩))).2 + ((tendsto_generatorQuotient_conj_iff U W ψ _).2 (by simpa using hA)) + exact e + +end Stone +end Spectral +end Physicslib4 diff --git a/Physicslib4/Spectral/Stone/Bounded.lean b/Physicslib4/Spectral/Stone/Bounded.lean new file mode 100644 index 0000000..ddcfc1b --- /dev/null +++ b/Physicslib4/Spectral/Stone/Bounded.lean @@ -0,0 +1,116 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Stone.Basic +import Mathlib.Analysis.Normed.Algebra.Exponential +import Mathlib.Analysis.SpecialFunctions.Exponential + +/-! +# The unitary group of a bounded self-adjoint operator + +For a bounded operator `P`, `t ↦ exp(itP)` (the norm-convergent exponential series) is +differentiable at `0` with derivative `iP`; for self-adjoint `P` it is a one-parameter unitary +group, strongly continuous, with generator `P` on all of `H` (blueprint §10.4.1). +-/ + +namespace Physicslib4 +namespace Spectral +namespace Stone + +open scoped InnerProductSpace LinearPMap Topology +open Filter + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] + +/-- +`t ↦ exp(itP)` is differentiable at `0` in the operator norm, with derivative `iP`. + +Blueprint reference: `lmm:exp-bounded-hasDerivAt`. +-/ +theorem hasDerivAt_exp_smul_I (P : H →L[ℂ] H) : + HasDerivAt (fun t : ℝ => NormedSpace.exp (((t : ℂ) * Complex.I) • P)) (Complex.I • P) 0 := by + have hc := hasDerivAt_exp_smul_const (𝕂 := ℝ) (Complex.I • P) (0 : ℝ) + simp only [zero_smul, NormedSpace.exp_zero, one_mul] at hc + have hfeq : (fun u : ℝ => NormedSpace.exp (u • (Complex.I • P))) + = (fun t : ℝ => NormedSpace.exp (((t : ℂ) * Complex.I) • P)) := by + funext u; rw [← Complex.coe_smul, smul_smul] + rwa [hfeq] at hc + +/-- +For bounded self-adjoint `P`, `t ↦ exp(itP)` is a one-parameter unitary group: each +`exp(itP)` is unitary, and the resulting family of linear isometry equivalences satisfies the +group law. + +Blueprint reference: `lmm:exp-bounded-unitary-group`. +-/ +theorem exists_isOneParameterUnitaryGroup_exp {P : H →L[ℂ] H} (hP : IsSelfAdjoint P) : + ∃ V : ℝ → (H ≃ₗᵢ[ℂ] H), (∀ (t : ℝ) (x : H), + V t x = NormedSpace.exp (((t : ℂ) * Complex.I) • P) x) ∧ + IsOneParameterUnitaryGroup V := by + let _ : NormedAlgebra ℚ (H →L[ℂ] H) := NormedAlgebra.restrictScalars ℚ ℂ (H →L[ℂ] H) + have mem : ∀ t : ℝ, NormedSpace.exp (((t : ℂ) * Complex.I) • P) ∈ unitary (H →L[ℂ] H) := + fun t => NormedSpace.exp_mem_unitary_of_mem_skewAdjoint <| by + rw [skewAdjoint.mem_iff, star_smul, hP.star_eq, star_mul', Complex.star_def, + Complex.conj_ofReal, Complex.conj_I, ← neg_smul] + congr 1; ring + refine ⟨fun t => Unitary.linearIsometryEquiv ⟨_, mem t⟩, fun t x => rfl, ⟨fun ψ => ?_, ?_⟩⟩ + · change NormedSpace.exp ((((0 : ℝ) : ℂ) * Complex.I) • P) ψ = ψ + simp + · intro s t ψ + change NormedSpace.exp ((((s + t : ℝ) : ℂ) * Complex.I) • P) ψ + = NormedSpace.exp (((s : ℂ) * Complex.I) • P) + (NormedSpace.exp (((t : ℂ) * Complex.I) • P) ψ) + have hc : Commute (((s : ℂ) * Complex.I) • P) (((t : ℂ) * Complex.I) • P) := + ((Commute.refl P).smul_left _).smul_right _ + rw [show (((s + t : ℝ) : ℂ) * Complex.I) • P + = ((s : ℂ) * Complex.I) • P + ((t : ℂ) * Complex.I) • P by + push_cast; rw [← add_smul, add_mul], + NormedSpace.exp_add_of_commute hc] + rfl + +/-- +A unitary family `V` with `V t = exp(itP)` is strongly continuous. The blueprint takes `P` +self-adjoint, which is what makes `exp(itP)` unitary; here unitarity is carried by the type +of `V`, so no hypothesis on `P` is needed. + +Blueprint reference: `lmm:generator-exp-bounded`. +-/ +theorem isStronglyContinuous_of_eq_exp {P : H →L[ℂ] H} {V : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hV : ∀ (t : ℝ) (x : H), V t x = NormedSpace.exp (((t : ℂ) * Complex.I) • P) x) : + IsStronglyContinuous V := by + have : NormedAlgebra ℚ (H →L[ℂ] H) := NormedAlgebra.restrictScalars ℚ ℂ (H →L[ℂ] H) + intro ψ + simp_rw [hV] + exact (NormedSpace.exp_continuous.comp + ((Complex.continuous_ofReal.mul continuous_const).smul continuous_const)).clm_apply + continuous_const + +/-- +A unitary family `V` with `V t = exp(itP)` has generator `P`, with domain `H`. As for +`isStronglyContinuous_of_eq_exp`, no hypothesis on `P` is needed. + +Blueprint reference: `lmm:generator-exp-bounded`. +-/ +theorem generator_eq_of_eq_exp {P : H →L[ℂ] H} {V : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hV : ∀ (t : ℝ) (x : H), V t x = NormedSpace.exp (((t : ℂ) * Complex.I) • P) x) : + generator V = (P : H →ₗ[ℂ] H).toPMap ⊤ := by + have key : ∀ ψ : H, Tendsto (generatorQuotient V ψ) (𝓝[≠] 0) (𝓝 (P ψ)) := by + intro ψ + have hd := (hasDerivAt_exp_smul_I P).tendsto_slope_zero + have h2 := (((ContinuousLinearMap.apply ℂ H ψ).continuous.tendsto _).comp hd).const_smul + Complex.I⁻¹ + have h3 : Complex.I⁻¹ • (ContinuousLinearMap.apply ℂ H ψ) (Complex.I • P) = P ψ := by + simp [smul_smul] + rw [h3] at h2 + refine h2.congr' (eventually_nhdsWithin_of_forall fun t ht => ?_) + simp [generatorQuotient, hV, ← Complex.coe_smul, smul_smul, mul_comm] + refine LinearPMap.ext (Submodule.eq_top_iff'.2 fun ψ => + ((exists_generator_eq_iff V ψ (P ψ)).2 (key ψ)).1) fun x _ _ => ?_ + obtain ⟨_, e⟩ := (exists_generator_eq_iff V x (P x)).2 (key x) + exact e + +end Stone +end Spectral +end Physicslib4 diff --git a/Physicslib4/Spectral/Stone/Density.lean b/Physicslib4/Spectral/Stone/Density.lean new file mode 100644 index 0000000..f09b90f --- /dev/null +++ b/Physicslib4/Spectral/Stone/Density.lean @@ -0,0 +1,128 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Stone.Basic + +/-! +# The generator of a strongly continuous unitary group is densely defined + +For a strongly continuous one-parameter unitary group `U`, the averages +`B_f ψ = ∫ f(τ) U(τ) ψ dτ` against smooth compactly supported `f` lie in the domain of the +generator, and averaging against an approximate identity recovers `ψ`; so the generator's +domain is dense (blueprint §10.4.4, Lemma `lmm:hall-10.18`). Averages are written as +convolutions `f ⋆ g_ψ` with `g_ψ(x) = U(-x) ψ`, to use Mathlib's convolution calculus. + +## Main definitions + +* `average U f ψ` — the average `B_f ψ = ∫ f(τ) U(τ) ψ dτ`. + +## Main statements + +* `average_eq_convolution` — `U(t) B_f ψ = (f ⋆ g_ψ)(-t)`. +* `average_mem_generator_domain` — `B_f ψ ∈ Dom(A)` for `C¹` compactly supported `f`. +* `tendsto_average_bump` — averages against bumps shrinking to `0` tend to `ψ`. +* `hasDenseDomain_generator` — the generator is densely defined. +-/ + +namespace Physicslib4 +namespace Spectral +namespace Stone + +open scoped InnerProductSpace LinearPMap Topology Convolution +open Filter MeasureTheory + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] + +/-- +The *average* `B_f ψ = ∫ f(τ) U(τ) ψ dτ` of the orbit of `ψ` against a real weight `f`, a +Bochner integral with respect to Lebesgue measure. + +Blueprint reference: `lmm:averaging-translate`. +-/ +noncomputable def average (U : ℝ → (H ≃ₗᵢ[ℂ] H)) (f : ℝ → ℝ) (ψ : H) : H := + ∫ τ, f τ • U τ ψ + +/-- +Averages are convolutions: with `g_ψ(x) = U(-x) ψ`, `U(t) B_f ψ = (f ⋆ g_ψ)(-t)`; in +particular `B_f ψ = (f ⋆ g_ψ)(0)`. The blueprint takes `f` continuous with compact support +and `U` strongly continuous, to make the integrals Bochner integrable; the identity holds for +every `f`, both sides being Bochner integrals of the same function up to the unitary `U(t)`, +so those hypotheses are omitted. + +Blueprint reference: `lmm:averaging-translate`. +-/ +theorem average_eq_convolution {U : ℝ → (H ≃ₗᵢ[ℂ] H)} (hU : IsOneParameterUnitaryGroup U) + (f : ℝ → ℝ) (ψ : H) (t : ℝ) : + U t (average U f ψ) = (f ⋆[ContinuousLinearMap.lsmul ℝ ℝ] fun x => U (-x) ψ) (-t) := by + have h := (U t).toContinuousLinearEquiv.integral_comp_comm (μ := volume) + (fun τ : ℝ => f τ • U τ ψ) + simp only [LinearIsometryEquiv.coe_toContinuousLinearEquiv] at h + rw [convolution_lsmul, average, ← h] + congr 1 + ext τ + rw [LinearMapClass.map_smul_of_tower, ← hU.map_add, neg_sub, sub_neg_eq_add, add_comm] + +/-- +Averages against continuously differentiable compactly supported weights lie in the domain of +the generator. + +Blueprint reference: `lmm:averaging-in-generator-domain`. +-/ +theorem average_mem_generator_domain {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (hc : IsStronglyContinuous U) {f : ℝ → ℝ} + (hf : ContDiff ℝ 1 f) (hfs : HasCompactSupport f) (ψ : H) : + average U f ψ ∈ (generator U).domain := by + set F := f ⋆[ContinuousLinearMap.lsmul ℝ ℝ] fun x => U (-x) ψ + have hF := hfs.hasDerivAt_convolution_left (L := ContinuousLinearMap.lsmul ℝ ℝ) + (μ := volume) hf ((hc ψ).comp continuous_neg).locallyIntegrable (-0) + refine ⟨_, ((hasDerivAt_iff_tendsto_slope_zero.mp (hF.scomp 0 (hasDerivAt_neg 0))).const_smul + Complex.I⁻¹).congr fun t => ?_⟩ + have hav (s : ℝ) : F (-s) = U s (average U f ψ) := + (average_eq_convolution hU f ψ s).symm + change Complex.I⁻¹ • t⁻¹ • (F (-(0 + t)) - F (-0)) = _ + rw [generatorQuotient, zero_add, hav, hav, hU.map_zero, mul_inv, mul_comm, mul_smul, + ← Complex.ofReal_inv, Complex.coe_smul, smul_comm] + +/-- +Averages against an approximate identity recover the vector: if `φ i` are bump functions at +`0` whose outer radii tend to `0` along `l`, the averages of `ψ` against their normalisations +tend to `ψ`. The blueprint's `f_n`, with outer radius `1/n`, is the case `l = atTop`. + +Blueprint reference: `lmm:averaging-approximates`. +-/ +theorem tendsto_average_bump [CompleteSpace H] {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) + (hc : IsStronglyContinuous U) {ι : Type*} {φ : ι → ContDiffBump (0 : ℝ)} {l : Filter ι} + (hφ : Tendsto (fun i => (φ i).rOut) l (𝓝 0)) (ψ : H) : + Tendsto (fun i => average U ((φ i).normed volume) ψ) l (𝓝 ψ) := by + have hg : Continuous fun x : ℝ => U (-x) ψ := (hc ψ).comp continuous_neg + have h := ContDiffBump.convolution_tendsto_right_of_continuous (μ := volume) hφ hg 0 + rw [neg_zero, hU.map_zero] at h + refine h.congr fun i => ?_ + have := average_eq_convolution hU ((φ i).normed volume) ψ 0 + rwa [hU.map_zero, neg_zero, eq_comm] at this + +/-- +**The generator is densely defined.** The infinitesimal generator of a strongly continuous +one-parameter unitary group has dense domain, so it is an unbounded operator in the sense of +`def:hall-3.1`. + +Blueprint reference: `lmm:hall-10.18`. +-/ +theorem hasDenseDomain_generator [CompleteSpace H] {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) + (hc : IsStronglyContinuous U) : Unbounded.HasDenseDomain (generator U) := by + let φ : ℕ → ContDiffBump (0 : ℝ) := fun n => + ⟨1 / (2 * (n + 1)), 1 / (n + 1), by positivity, by gcongr; linarith⟩ + have hφ : Tendsto (fun n => (φ n).rOut) atTop (𝓝 0) := + tendsto_one_div_add_atTop_nhds_zero_nat + refine fun ψ => mem_closure_of_tendsto (tendsto_average_bump hU hc hφ ψ) + (Eventually.of_forall fun n => ?_) + exact average_mem_generator_domain hU hc ((φ n).contDiff_normed (n := 1)) + (φ n).hasCompactSupport_normed ψ + +end Stone +end Spectral +end Physicslib4 diff --git a/Physicslib4/Spectral/Stone/Exponential.lean b/Physicslib4/Spectral/Stone/Exponential.lean new file mode 100644 index 0000000..4b56371 --- /dev/null +++ b/Physicslib4/Spectral/Stone/Exponential.lean @@ -0,0 +1,329 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Stone.Basic +import Mathlib.Analysis.SpecialFunctions.Trigonometric.Bounds + +/-! +# Exponentiating a self-adjoint operator + +For a self-adjoint operator `A`, the functional calculus applied to the bounded functions +`λ ↦ e^{itλ}` gives a strongly continuous one-parameter unitary group `t ↦ e^{itA}` whose +infinitesimal generator is `A` (blueprint §10.4.3, Proposition `prpstn:hall-10.14`). + +## Main definitions + +* `expFun t` — the function `λ ↦ e^{itλ}` on `ℝ`. +* `expUnitary hA t` — the unitary `e^{itA}`, the bounded integral of `expFun t` against the + spectral measure of `A`. + +## Main statements + +* `isOneParameterUnitaryGroup_expUnitary`, `isStronglyContinuous_expUnitary`. +* `tendsto_generatorQuotient_expUnitary` — the derivative of `e^{itA}` at `0` on `Dom(A)`. +* `generator_expUnitary` — the generator of `t ↦ e^{itA}` is `A`. +-/ + +namespace Physicslib4 +namespace Spectral +namespace Stone + +open scoped InnerProductSpace LinearPMap Topology +open Filter MeasureTheory Unbounded + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] + {A : H →ₗ.[ℂ] H} + +/-- +The function `f_t(λ) = e^{itλ}` on `ℝ`. + +Blueprint reference: `def:exp-unitary-group`. +-/ +noncomputable def expFun (t : ℝ) (x : ℝ) : ℂ := + Complex.exp (Complex.I * ((t * x : ℝ) : ℂ)) + +/-- `‖e^{isλ}‖ = 1`. -/ +private theorem norm_expFun (s x : ℝ) : ‖expFun s x‖ = 1 := + Complex.norm_exp_I_mul_ofReal _ + +/-- `f_t` is bounded and measurable. -/ +theorem expFun_mem_bddMeasurable (t : ℝ) : expFun t ∈ BddMeasurable ℝ := + ⟨by unfold expFun; fun_prop, 1, fun x => (norm_expFun t x).le⟩ + +/-- +For a projection-valued measure `μ` on `ℝ` (in particular the spectral measure of a +self-adjoint operator), the bounded integral of `f_t(λ) = e^{itλ}` is unitary. + +Blueprint reference: `lmm:exp-unitary`. +-/ +theorem integral_expFun_mem_unitary (μ : ProjectionValuedMeasure ℝ H) (t : ℝ) : + μ.integral (expFun t) ∈ unitary (H →L[ℂ] H) := by + have hf := expFun_mem_bddMeasurable t + have hn := norm_expFun t + have hg : (fun x => (starRingEnd ℂ) (expFun t x)) ∈ BddMeasurable ℝ := + ⟨Complex.continuous_conj.measurable.comp hf.1, 1, fun x => by simp [hn]⟩ + have h1 : (fun x => (starRingEnd ℂ) (expFun t x)) * expFun t = 1 := funext fun x => by + simp [Complex.conj_mul', hn] + have h2 : expFun t * (fun x => (starRingEnd ℂ) (expFun t x)) = 1 := funext fun x => by + simp [Complex.mul_conj', hn] + rw [Unitary.mem_iff, ContinuousLinearMap.star_eq_adjoint, + ← ProjectionValuedMeasure.integral_conj μ hf, ← ProjectionValuedMeasure.integral_mul μ hg hf, + ← ProjectionValuedMeasure.integral_mul μ hf hg, h1, h2, ProjectionValuedMeasure.integral_one] + exact ⟨rfl, rfl⟩ + +/-- +The unitary `e^{itA} = f_t(A) = ∫ e^{itλ} dμ^A(λ)`, the bounded integral of `f_t` against the +spectral measure of `A`, packaged as a linear isometry equivalence. That it is the functional +calculus `f_t(A)` is `functionalCalculus_expFun`. + +Blueprint reference: `def:exp-unitary-group`. +-/ +noncomputable def expUnitary (hA : IsSelfAdjoint A) (t : ℝ) : H ≃ₗᵢ[ℂ] H := + Unitary.linearIsometryEquiv + ⟨(Unbounded.spectralMeasure hA).integral (expFun t), integral_expFun_mem_unitary _ t⟩ + +theorem expUnitary_apply (hA : IsSelfAdjoint A) (t : ℝ) (ψ : H) : + expUnitary hA t ψ = (Unbounded.spectralMeasure hA).integral (expFun t) ψ := + rfl + +/-- +`e^{itA}` is the functional calculus `f_t(A)`, defined on all of `H`. + +Blueprint reference: `def:exp-unitary-group`. +-/ +theorem functionalCalculus_expFun (hA : IsSelfAdjoint A) (t : ℝ) : + Unbounded.functionalCalculus hA (expFun t) = + ((expUnitary hA t).toLinearIsometry.toLinearMap.toPMap ⊤) := + (functionalCalculus_of_bddMeasurable hA (expFun_mem_bddMeasurable t)).2 + +/-- +The group law: `e^{i0A} = 1` and `e^{i(s+t)A} = e^{isA} e^{itA}`. + +Blueprint reference: `lmm:exp-group-law`. +-/ +theorem isOneParameterUnitaryGroup_expUnitary (hA : IsSelfAdjoint A) : + IsOneParameterUnitaryGroup (expUnitary hA) := by + have h0 : expFun 0 = 1 := funext fun x => by simp [expFun] + have hadd : ∀ s t, expFun (s + t) = expFun s * expFun t := fun s t => funext fun x => by + simp only [expFun, Pi.mul_apply, ← Complex.exp_add] + congr 1; push_cast; ring + refine ⟨fun ψ => ?_, fun s t ψ => ?_⟩ + · rw [expUnitary_apply, h0, ProjectionValuedMeasure.integral_one]; rfl + · rw [expUnitary_apply, expUnitary_apply, expUnitary_apply, hadd, + ProjectionValuedMeasure.integral_mul _ (expFun_mem_bddMeasurable s) + (expFun_mem_bddMeasurable t)] + rfl + +/-- For bounded measurable `f, g`, `∫ (f - g) dμ = ∫ f dμ - ∫ g dμ`. -/ +private theorem integral_sub_of_mem_bddMeasurable (μ : ProjectionValuedMeasure ℝ H) + {f g : ℝ → ℂ} (hf : f ∈ BddMeasurable ℝ) (hg : g ∈ BddMeasurable ℝ) : + μ.integral (f - g) = μ.integral f - μ.integral g := by + rw [sub_eq_add_neg, ← neg_one_smul ℂ g, μ.integral_add hf ((BddMeasurable ℝ).smul_mem _ hg), + μ.integral_smul _ hg, neg_one_smul, ← sub_eq_add_neg] + +/-- If `‖f t - a‖² → 0` then `f t → a`. -/ +private theorem tendsto_of_norm_sub_sq_tendsto_zero {α E : Type*} [SeminormedAddCommGroup E] + {l : Filter α} {f : α → E} {a : E} (h : Tendsto (fun t => ‖f t - a‖ ^ 2) l (𝓝 0)) : + Tendsto f l (𝓝 a) := by + rw [tendsto_iff_norm_sub_tendsto_zero] + simpa [Real.sqrt_sq (norm_nonneg _)] using h.sqrt + +/-- +Dominated convergence in the form used for `e^{itA}`: if `G t → g` pointwise with +`‖G t - g‖ ≤ b` and `b²` integrable, then `∫ ‖G t - g‖² → 0`. +-/ +private theorem tendsto_integral_norm_sub_sq {α : Type*} {l : Filter α} [l.IsCountablyGenerated] + {ν : Measure ℝ} {G : α → ℝ → ℂ} {g : ℝ → ℂ} {b : ℝ → ℝ} (hG : ∀ t, Continuous (G t)) + (hg : Continuous g) (hb : Integrable (fun x => b x ^ 2) ν) (hle : ∀ t x, ‖G t x - g x‖ ≤ b x) + (hlim : ∀ x, Tendsto (fun t => G t x) l (𝓝 (g x))) : + Tendsto (fun t => ∫ x, ‖G t x - g x‖ ^ 2 ∂ν) l (𝓝 0) := by + have hm (t : α) : Continuous fun x => ‖G t x - g x‖ ^ 2 := ((hG t).sub hg).norm.pow 2 + have := tendsto_integral_filter_of_dominated_convergence (l := l) (μ := ν) + (F := fun t x => ‖G t x - g x‖ ^ 2) (f := fun x => ‖g x - g x‖ ^ 2) _ + (.of_forall fun t => (hm t).aestronglyMeasurable) + (.of_forall fun t => ae_of_all _ fun x => ?_) hb + (ae_of_all _ fun x => ((hlim x).sub_const (g x)).norm.pow 2) + · simpa only [sub_self, norm_zero, ne_eq, OfNat.ofNat_ne_zero, not_false_eq_true, zero_pow, + integral_zero] using this + · rw [norm_pow, norm_norm] + exact pow_le_pow_left₀ (norm_nonneg _) (hle t x) 2 + +/-- The norm identity `‖e^{isA}ψ - e^{itA}ψ‖² = ∫ |e^{isλ} - e^{itλ}|² dμ^A_ψ(λ)`. -/ +private theorem norm_sq_expUnitary_sub (hA : IsSelfAdjoint A) (ψ : H) (s t : ℝ) : + ‖expUnitary hA s ψ - expUnitary hA t ψ‖ ^ 2 = + ∫ x, ‖expFun s x - expFun t x‖ ^ 2 ∂((Unbounded.spectralMeasure hA).assoc ψ) := by + have hs := expFun_mem_bddMeasurable s + have ht := expFun_mem_bddMeasurable t + rw [expUnitary_apply, expUnitary_apply, ← sub_apply, + ← integral_sub_of_mem_bddMeasurable _ hs ht, + norm_sq_integral_apply _ ((BddMeasurable ℝ).sub_mem hs ht)] + rfl + +/-- +`t ↦ e^{itA}` is strongly continuous. + +Blueprint reference: `lmm:exp-strongly-continuous`. +-/ +theorem isStronglyContinuous_expUnitary (hA : IsSelfAdjoint A) : + IsStronglyContinuous (expUnitary hA) := fun ψ => + continuous_iff_continuousAt.2 fun t => tendsto_of_norm_sub_sq_tendsto_zero <| by + simp_rw [norm_sq_expUnitary_sub] + refine tendsto_integral_norm_sub_sq (b := fun _ => 2) (fun s => by fun_prop [expFun]) + (by fun_prop [expFun]) (integrable_const _) (fun s x => ?_) + (fun x => (by fun_prop [expFun] : Continuous fun s => expFun s x).tendsto t) + linarith [norm_sub_le (expFun s x) (expFun t x), norm_expFun s x, norm_expFun t x] + +/-- For bounded measurable `g`, `W_{g - f} = W_f`. -/ +private theorem integralDomain_sub_of_bddMeasurable (μ : ProjectionValuedMeasure ℝ H) + {f g : ℝ → ℂ} (hg : g ∈ BddMeasurable ℝ) : + integralDomain μ (g - f) = integralDomain μ f := by + have hg' : ∀ ψ : H, MemLp g 2 (μ.assoc ψ) := fun ψ => by + rw [← mem_integralDomain, integralDomain_eq_top_of_bddMeasurable μ hg]; trivial + ext ψ + refine ⟨fun h => ?_, fun h => (hg' ψ).sub h⟩ + simpa using (hg' ψ).sub h + +/-- For an arbitrary PVM, `∫ (g - f) dμ = ∫ g dμ - ∫ f dμ` when `g` is bounded. -/ +private theorem pmapIntegral_sub_of_bddMeasurable (μ : ProjectionValuedMeasure ℝ H) + {f g : ℝ → ℂ} (hf : Measurable f) (hg : g ∈ BddMeasurable ℝ) : + pmapIntegral μ (g - f) = pmapIntegral μ g - pmapIntegral μ f := by + have hgm := measurable_of_mem_bddMeasurable hg + refine (eq_pmapIntegral_of_inner_self μ (hgm.sub hf) _ ?_ fun ψ => ?_).symm + · rw [LinearPMap.sub_domain, pmapIntegral_domain, pmapIntegral_domain, + integralDomain_eq_top_of_bddMeasurable μ hg, top_inf_eq, + integralDomain_sub_of_bddMeasurable μ hg] + · have h1 : MemLp g 2 (μ.assoc ψ) := ψ.2.1 + have h2 : MemLp f 2 (μ.assoc ψ) := ψ.2.2 + rw [LinearPMap.sub_apply, inner_sub_right] + refine (congrArg₂ _ (inner_self_pmapIntegral μ hgm ⟨ψ, ψ.2.1⟩) + (inner_self_pmapIntegral μ hf ⟨ψ, ψ.2.2⟩)).trans ?_ + rw [Pi.sub_def, integral_sub (h1.integrable one_le_two) (h2.integrable one_le_two)] + +/-- +Subtracting an unbounded function from a bounded one: for measurable `f` and bounded +measurable `g`, `(g - f)(A) = g(A) - f(A)` as unbounded operators. The domain of the right +side is `H ⊓ W_f = W_f`, so this says both `W_{g - f} = W_f` and +`(g - f)(A) ψ = g(A) ψ - f(A) ψ` on `W_f`. + +Blueprint reference: `lmm:functional-calculus-sub-bounded`. +-/ +theorem functionalCalculus_sub_of_bddMeasurable (hA : IsSelfAdjoint A) {f g : ℝ → ℂ} + (hf : Measurable f) (hg : g ∈ BddMeasurable ℝ) : + Unbounded.functionalCalculus hA (g - f) = + Unbounded.functionalCalculus hA g - Unbounded.functionalCalculus hA f := + pmapIntegral_sub_of_bddMeasurable _ hf hg + +/-- +For bounded measurable `g` and `ψ ∈ Dom(A)`, `‖g(A)ψ - Aψ‖² = ∫ |g(λ) - λ|² dμ^A_ψ(λ)`. +-/ +private theorem norm_sq_integral_apply_sub (hA : IsSelfAdjoint A) {g : ℝ → ℂ} + (hg : g ∈ BddMeasurable ℝ) (ψ : A.domain) : + ‖(Unbounded.spectralMeasure hA).integral g ψ - A ψ‖ ^ 2 = + ∫ x, ‖g x - x‖ ^ 2 ∂((Unbounded.spectralMeasure hA).assoc (ψ : H)) := by + have hsub := functionalCalculus_sub_of_bddMeasurable hA Complex.measurable_ofReal hg + have hψg : (ψ : H) ∈ (Unbounded.functionalCalculus hA g).domain := by + rw [(functionalCalculus_of_bddMeasurable hA hg).1]; trivial + have hψι : (ψ : H) ∈ (Unbounded.functionalCalculus hA fun x : ℝ => (x : ℂ)).domain := by + rw [functionalCalculus_id]; exact ψ.2 + have hψ : (ψ : H) ∈ integralDomain (Unbounded.spectralMeasure hA) (g - (↑)) := by + rw [← Unbounded.functionalCalculus_domain, hsub]; exact ⟨hψg, hψι⟩ + have e1 := (LinearPMap.ext_iff.mp hsub).2 (x := (ψ : H)) (hf := hψ) (hg := ⟨hψg, hψι⟩) + have e2 := (LinearPMap.ext_iff.mp (functionalCalculus_of_bddMeasurable hA hg).2).2 + (x := (ψ : H)) (hf := hψg) (hg := Submodule.mem_top) + have e3 := (LinearPMap.ext_iff.mp (functionalCalculus_id hA)).2 + (x := (ψ : H)) (hf := hψι) (hg := ψ.2) + rw [LinearPMap.sub_apply, e2, e3] at e1 + have hn := norm_sq_pmapIntegral _ (hg.1.sub Complex.measurable_ofReal) + (⟨ψ, hψ⟩ : integralDomain (Unbounded.spectralMeasure hA) (g - (↑))) + exact (congrArg (‖·‖ ^ 2) e1).symm.trans hn + +/-- +The norm identity for the difference quotient: for `ψ ∈ Dom(A)` and every `t`, with +`g_t(λ) = (1/i)(e^{itλ} - 1)/t`, +`‖(1/i)(e^{itA}ψ - ψ)/t - Aψ‖² = ∫ |g_t(λ) - λ|² dμ^A_ψ(λ)`. +The blueprint states it for `t ≠ 0`; it also holds at `t = 0`, where both sides are `‖Aψ‖²` +by the convention `0⁻¹ = 0`, so no hypothesis on `t` is needed. + +Blueprint reference: `lmm:exp-quotient-norm-identity`. +-/ +theorem norm_sq_generatorQuotient_expUnitary_sub (hA : IsSelfAdjoint A) (ψ : A.domain) + (t : ℝ) : + ‖generatorQuotient (expUnitary hA) ψ t - A ψ‖ ^ 2 = + ∫ x, ‖(Complex.I * (t : ℂ))⁻¹ * (expFun t x - 1) - (x : ℂ)‖ ^ 2 + ∂((Unbounded.spectralMeasure hA).assoc (ψ : H)) := by + have hexp := expFun_mem_bddMeasurable t + have h1 : (1 : ℝ → ℂ) ∈ BddMeasurable ℝ := ⟨measurable_const, 1, fun _ => by simp⟩ + have hd := (BddMeasurable ℝ).sub_mem hexp h1 + have := norm_sq_integral_apply_sub hA ((BddMeasurable ℝ).smul_mem (Complex.I * t)⁻¹ hd) ψ + rwa [ProjectionValuedMeasure.integral_smul _ _ hd, integral_sub_of_mem_bddMeasurable _ hexp h1, + ProjectionValuedMeasure.integral_one] at this + +/-- The pointwise limit `(it)⁻¹(e^{itλ} - 1) → λ` as `t → 0`, `t ≠ 0`. -/ +private theorem tendsto_expFun_quotient (x : ℝ) : + Tendsto (fun t : ℝ => (Complex.I * (t : ℂ))⁻¹ * (expFun t x - 1)) (𝓝[≠] 0) (𝓝 (x : ℂ)) := by + have h1 : HasDerivAt (fun s : ℝ => Complex.I * ((s * x : ℝ) : ℂ)) (Complex.I * x) 0 := by + simpa using (((hasDerivAt_id (0 : ℝ)).mul_const x).ofReal_comp).const_mul Complex.I + have h2 := (h1.cexp).tendsto_slope_zero.const_mul Complex.I⁻¹ + simp only [zero_add, zero_mul, Complex.ofReal_zero, mul_zero, Complex.exp_zero, one_mul] at h2 + rw [← mul_assoc, inv_mul_cancel₀ Complex.I_ne_zero, one_mul] at h2 + refine h2.congr fun t => ?_ + simp [expFun, Complex.real_smul, mul_assoc] + ring + +/-- The bound `|(it)⁻¹(e^{itλ} - 1)| ≤ |λ|`. -/ +private theorem norm_expFun_quotient_le (t x : ℝ) : + ‖(Complex.I * (t : ℂ))⁻¹ * (expFun t x - 1)‖ ≤ ‖(x : ℂ)‖ := by + rcases eq_or_ne t 0 with rfl | ht + · simp + rw [norm_mul, norm_inv, norm_mul, Complex.norm_I, one_mul, + inv_mul_le_iff₀ (norm_pos_iff.2 (Complex.ofReal_ne_zero.2 ht)), Complex.norm_real, + Complex.norm_real, ← norm_mul] + exact Real.norm_exp_I_mul_ofReal_sub_one_le + +/-- +The derivative of `e^{itA}` at `0`: for `ψ ∈ Dom(A)`, `(1/i)(e^{itA}ψ - ψ)/t → Aψ` as +`t → 0`, `t ≠ 0`. + +Blueprint reference: `lmm:exp-derivative-at-zero`. +-/ +theorem tendsto_generatorQuotient_expUnitary (hA : IsSelfAdjoint A) (ψ : A.domain) : + Tendsto (generatorQuotient (expUnitary hA) ψ) (𝓝[≠] 0) (𝓝 (A ψ)) := by + have hmem : MemLp (fun x : ℝ => (x : ℂ)) 2 ((Unbounded.spectralMeasure hA).assoc (ψ : H)) := + (mem_integralDomain _).1 (domain_eq_integralDomain_spectralMeasure hA ▸ ψ.2) + refine tendsto_of_norm_sub_sq_tendsto_zero ?_ + simp_rw [norm_sq_generatorQuotient_expUnitary_sub hA ψ] + refine tendsto_integral_norm_sub_sq (b := fun x => 2 * ‖(x : ℂ)‖) (fun t => by fun_prop [expFun]) + (by fun_prop) ?_ (fun t x => ?_) tendsto_expFun_quotient + · simpa [mul_pow] using (hmem.integrable_norm_pow two_ne_zero).const_mul (2 ^ 2) + · linarith [norm_sub_le ((Complex.I * (t : ℂ))⁻¹ * (expFun t x - 1)) (x : ℂ), + norm_expFun_quotient_le t x] + +/-- +**Exponentiating a self-adjoint operator.** For self-adjoint `A`, `t ↦ e^{itA}` is a strongly +continuous one-parameter unitary group whose infinitesimal generator is `A`, with equality of +domains. The last conjunct is points 2 and 3 of the blueprint proposition together. + +Blueprint reference: `prpstn:hall-10.14`. +-/ +theorem generator_expUnitary (hA : IsSelfAdjoint A) : + IsOneParameterUnitaryGroup (expUnitary hA) ∧ IsStronglyContinuous (expUnitary hA) ∧ + generator (expUnitary hA) = A := by + have hU := isOneParameterUnitaryGroup_expUnitary hA + have key (ψ : A.domain) : + ∃ h : (ψ : H) ∈ (generator (expUnitary hA)).domain, + generator (expUnitary hA) ⟨ψ, h⟩ = A ψ := + (exists_generator_eq_iff _ _ _).2 (tendsto_generatorQuotient_expUnitary hA ψ) + have hle : A ≤ generator (expUnitary hA) := by + refine ⟨fun ψ hψ => (key ⟨ψ, hψ⟩).1, fun x y hxy => ?_⟩ + obtain ⟨h, hx⟩ := key x + rw [← hx] + congr 1 + exact Subtype.ext hxy + exact ⟨hU, isStronglyContinuous_expUnitary hA, + (eq_of_isSelfAdjoint_of_isSymmetric_of_le hA (isSymmetric_generator hU) hle).symm⟩ + +end Stone +end Spectral +end Physicslib4 diff --git a/Physicslib4/Spectral/Stone/Theorem.lean b/Physicslib4/Spectral/Stone/Theorem.lean new file mode 100644 index 0000000..e3cdfcf --- /dev/null +++ b/Physicslib4/Spectral/Stone/Theorem.lean @@ -0,0 +1,235 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Stone.Density +import Physicslib4.Spectral.Stone.Exponential + +/-! +# Stone's theorem + +Every strongly continuous one-parameter unitary group `U` on a Hilbert space is `e^{itA}` for +a unique self-adjoint operator `A`, its infinitesimal generator (blueprint §10.4.5, +Theorem `thrm:hall-10.15`). + +The generator is essentially self-adjoint (its deficiency subspaces are trivial, by an ODE +argument along orbits); the orbits of `U` and of `e^{itA^cl}` agree on the generator's domain +(their difference has constant norm); so `U(t) = e^{itA^cl}` by density, and the generator of +`e^{itA^cl}` is `A^cl` (Proposition `prpstn:hall-10.14`), whence `A = A^cl`. + +## Main statements + +* `isEssentiallySelfAdjoint_generator` — the generator is essentially self-adjoint. +* `stone` — **Stone's theorem**. +-/ + +namespace Physicslib4 +namespace Spectral +namespace Stone + +open scoped InnerProductSpace LinearPMap Topology +open Filter Unbounded + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] + +/-- +An ODE along orbits: if `A* ψ = (ε i) ψ` and `φ ∈ Dom(A)`, then `y(t) = ⟪U(t) φ, ψ⟫` satisfies +`y' = ε y`. The blueprint takes `ε = ±1`; the computation holds for every `ε ∈ ℂ`. + +Blueprint reference: `lmm:orbit-inner-ode`. +-/ +theorem hasDerivAt_inner_orbit {U : ℝ → (H ≃ₗᵢ[ℂ] H)} (hU : IsOneParameterUnitaryGroup U) + (hc : IsStronglyContinuous U) (ε : ℂ) {ψ : H} (hψ : ψ ∈ (generator U)†.domain) + (hAψ : (generator U)† ⟨ψ, hψ⟩ = (ε * Complex.I) • ψ) (φ : (generator U).domain) (t : ℝ) : + HasDerivAt (fun s : ℝ => ⟪U s φ, ψ⟫_ℂ) (ε * ⟪U t φ, ψ⟫_ℂ) t := by + obtain ⟨h, hd, -⟩ := hU.hasDerivAt_orbit_generator φ t + have hadj := LinearPMap.adjoint_isFormalAdjoint (hasDenseDomain_generator hU hc) ⟨ψ, hψ⟩ + ⟨U t φ, h⟩ + rw [hAψ] at hadj + have key : ⟪generator U ⟨U t φ, h⟩, ψ⟫_ℂ = ε * Complex.I * ⟪U t φ, ψ⟫_ℂ := by + rw [← inner_conj_symm, ← hadj, inner_smul_left, map_mul, inner_conj_symm] + simp [Complex.conj_I] + convert hd.inner ℂ (hasDerivAt_const t ψ) using 1 + simp only [inner_zero_right, zero_add, inner_smul_left, key, Complex.conj_I] + ring_nf + rw [Complex.I_sq] + ring + +/-- +Bounded solutions of `y' = ε y` vanish at `0`. The blueprint takes `ε = ±1`; any nonzero real +`ε` will do. + +Blueprint reference: `lmm:bounded-exp-solution-zero`. +-/ +theorem eq_zero_of_hasDerivAt_of_bounded {y : ℝ → ℂ} {ε : ℝ} (hε : ε ≠ 0) + (hy : ∀ t, HasDerivAt y ((ε : ℂ) * y t) t) (hb : ∃ C, ∀ t, ‖y t‖ ≤ C) : y 0 = 0 := by + obtain ⟨C, hC⟩ := hb + by_contra h0 + have hn : 0 < ‖y 0‖ := norm_pos_iff.2 h0 + have key : ∀ s, ‖y 0‖ * Real.exp s ≤ C := fun s => by + have := hC (s / ε) + rw [eq_mul_exp_of_hasDerivAt hy, norm_mul, Complex.norm_exp] at this + convert this using 3 + rw [← Complex.ofReal_mul, Complex.ofReal_re, mul_div_cancel₀ _ hε] + have h1 := key (C / ‖y 0‖) + have h2 := Real.add_one_le_exp (C / ‖y 0‖) + have h3 : ‖y 0‖ * (C / ‖y 0‖ + 1) = C + ‖y 0‖ := by field_simp + nlinarith + +/-- +The deficiency subspaces of the generator are trivial: `Ker(A* - i 1) = {0}` and +`Ker(A* + i 1) = {0}`. + +Blueprint reference: `lmm:generator-ker-adjoint-trivial`. +-/ +theorem ker_adjoint_generator_subSmul_eq_bot {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (hc : IsStronglyContinuous U) : + ker (subSmul (generator U)† Complex.I) = ⊥ ∧ ker (subSmul (generator U)† (-Complex.I)) = ⊥ := by + have key : ∀ ε : ℝ, ε ≠ 0 → ker (subSmul (generator U)† ((ε : ℂ) * Complex.I)) = ⊥ := by + intro ε hε + rw [Submodule.eq_bot_iff] + intro ψ hψ + obtain ⟨hd, h0⟩ := mem_ker.1 hψ + have hAψ : (generator U)† ⟨ψ, hd⟩ = ((ε : ℂ) * Complex.I) • ψ := + sub_eq_zero.1 (by rw [subSmul_apply] at h0; exact h0) + have horth : ψ ∈ (generator U).domainᗮ := by + rw [Submodule.mem_orthogonal] + intro φ hφ + have := eq_zero_of_hasDerivAt_of_bounded hε + (fun t => hasDerivAt_inner_orbit hU hc ε hd hAψ ⟨φ, hφ⟩ t) + ⟨‖φ‖ * ‖ψ‖, fun t => (norm_inner_le_norm _ _).trans (by rw [LinearIsometryEquiv.norm_map])⟩ + simpa [hU.map_zero] using this + rwa [dense_iff_orthogonal_eq_bot.1 (hasDenseDomain_generator hU hc)] at horth + refine ⟨?_, ?_⟩ + · simpa using key 1 one_ne_zero + · simpa using key (-1) (by norm_num) + +/-- +The generator of a strongly continuous one-parameter unitary group is essentially self-adjoint: +symmetric, closable, with self-adjoint closure. Its density is `hasDenseDomain_generator`. + +Blueprint reference: `lmm:generator-essentially-self-adjoint`. +-/ +theorem isEssentiallySelfAdjoint_generator {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (hc : IsStronglyContinuous U) : + IsEssentiallySelfAdjoint (generator U) := by + have hT := hasDenseDomain_generator hU hc + obtain ⟨h1, h2⟩ := ker_adjoint_generator_subSmul_eq_bot hU hc + rw [isEssentiallySelfAdjoint_iff_dense_range hT (isSymmetric_generator hU), + dense_iff_orthogonal_eq_bot, dense_iff_orthogonal_eq_bot, + orthogonal_range_subSmul hT, orthogonal_range_subSmul hT, map_neg, Complex.conj_I, neg_neg] + exact ⟨h2, h1⟩ + +/-- +The difference `w(t) = U(t) ψ - e^{itA^cl} ψ` of the orbits of `ψ ∈ Dom(A)` lies in +`Dom(A^cl)` and has derivative `i A^cl w(t)`. + +Blueprint reference: `lmm:orbit-difference-hasDerivAt`. +-/ +theorem hasDerivAt_orbit_sub_expUnitary {U : ℝ → (H ≃ₗᵢ[ℂ] H)} + (hU : IsOneParameterUnitaryGroup U) (hc : IsStronglyContinuous U) + (ψ : (generator U).domain) (t : ℝ) : + ∃ h : U t ψ - expUnitary (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure t ψ ∈ + (generator U).closure.domain, + HasDerivAt (fun s : ℝ => U s ψ - + expUnitary (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure s ψ) + (Complex.I • (generator U).closure ⟨_, h⟩) t := by + have aux : ∀ {W : ℝ → (H ≃ₗᵢ[ℂ] H)} {B : H →ₗ.[ℂ] H}, IsOneParameterUnitaryGroup W → + generator W = B → ∀ (φ : H) (hφ : φ ∈ B.domain), ∃ h : W t φ ∈ B.domain, + HasDerivAt (fun s : ℝ => W s φ) (Complex.I • B ⟨W t φ, h⟩) t := by + intro W B hW hB φ hφ + subst hB + obtain ⟨h, d, -⟩ := hW.hasDerivAt_orbit_generator ⟨φ, hφ⟩ t + exact ⟨h, d⟩ + set hcl := (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure + obtain ⟨hV, -, hgen⟩ := generator_expUnitary hcl + have hle := (generator U).le_closure + obtain ⟨h1, d1, -⟩ := hU.hasDerivAt_orbit_generator ψ t + obtain ⟨h2, d2⟩ := aux hV hgen ψ (hle.1 ψ.2) + have e1 : generator U ⟨U t ψ, h1⟩ = (generator U).closure ⟨U t ψ, hle.1 h1⟩ := hle.2 rfl + refine ⟨Submodule.sub_mem _ (hle.1 h1) h2, ?_⟩ + convert d1.sub d2 using 1 + rw [e1, ← smul_sub, ← LinearPMap.map_sub] + rfl + +omit [CompleteSpace H] in +/-- +A solution of `w' = i C w` with `C` symmetric and `w(0) = 0` vanishes identically, since +`‖w(t)‖²` is constant. + +Blueprint reference: `lmm:norm-const-of-symmetric-derivative`. +-/ +theorem eq_zero_of_hasDerivAt_of_isSymmetric {C : H →ₗ.[ℂ] H} (hC : IsSymmetric C) {w : ℝ → H} + (hw : ∀ t, ∃ h : w t ∈ C.domain, HasDerivAt w (Complex.I • C ⟨w t, h⟩) t) (h0 : w 0 = 0) + (t : ℝ) : w t = 0 := by + have hd : ∀ s, HasDerivAt (fun s => ⟪w s, w s⟫_ℂ) 0 s := by + intro s + obtain ⟨h, hs⟩ := hw s + convert hs.inner ℂ hs using 1 + rw [inner_smul_left, inner_smul_right, hC ⟨w s, h⟩ ⟨w s, h⟩, Complex.conj_I] + ring + have hconst := is_const_of_deriv_eq_zero (fun s => (hd s).differentiableAt) + (fun s => (hd s).deriv) t 0 + simp only [h0, inner_zero_left] at hconst + exact inner_self_eq_zero.mp hconst + +/-- +The orbits of `U` and of `e^{itA^cl}` agree on the generator's domain. + +Blueprint reference: `lmm:orbits-agree-on-domain`. +-/ +theorem orbit_eq_expUnitary_closure {U : ℝ → (H ≃ₗᵢ[ℂ] H)} (hU : IsOneParameterUnitaryGroup U) + (hc : IsStronglyContinuous U) (ψ : (generator U).domain) (t : ℝ) : + U t ψ = expUnitary (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure t ψ := by + have hsa := (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure + have hC : IsSymmetric (generator U).closure := + (isSymmetric_iff_le_adjoint hsa.dense_domain).mpr (LinearPMap.isSelfAdjoint_def.mp hsa).ge + refine sub_eq_zero.mp (eq_zero_of_hasDerivAt_of_isSymmetric hC + (hasDerivAt_orbit_sub_expUnitary hU hc ψ) ?_ t) + simp only [hU.map_zero, (isOneParameterUnitaryGroup_expUnitary hsa).map_zero, sub_self] + +omit [CompleteSpace H] in +/-- +Bounded operators agreeing on a dense subspace are equal. + +Blueprint reference: `lmm:agree-on-dense-subspace`. +-/ +theorem eq_of_eqOn_dense {S T : H →L[ℂ] H} {D : Submodule ℂ H} (hD : Dense (D : Set H)) + (h : ∀ ψ ∈ D, S ψ = T ψ) : S = T := + DFunLike.coe_injective (Continuous.ext_on hD S.continuous T.continuous h) + +/-- +**Stone's theorem.** The infinitesimal generator `A` of a strongly continuous one-parameter +unitary group `U` is densely defined and self-adjoint, and `U(t) = e^{itA}` for all `t`. +Moreover `A` is the only self-adjoint operator with this property. + +Blueprint reference: `thrm:hall-10.15`. +-/ +theorem stone {U : ℝ → (H ≃ₗᵢ[ℂ] H)} (hU : IsOneParameterUnitaryGroup U) + (hc : IsStronglyContinuous U) : + ∃ hA : IsSelfAdjoint (generator U), HasDenseDomain (generator U) ∧ + (∀ t, U t = expUnitary hA t) ∧ + ∀ (B : H →ₗ.[ℂ] H) (hB : IsSelfAdjoint B), (∀ t, U t = expUnitary hB t) → + B = generator U := by + have hcl := (isEssentiallySelfAdjoint_generator hU hc).isSelfAdjoint_closure + have hUV : U = expUnitary hcl := by + funext t + have h := eq_of_eqOn_dense (S := (U t).toContinuousLinearEquiv.toContinuousLinearMap) + (T := (expUnitary hcl t).toContinuousLinearEquiv.toContinuousLinearMap) + (hasDenseDomain_generator hU hc) fun ψ hψ => orbit_eq_expUnitary_closure hU hc ⟨ψ, hψ⟩ t + exact LinearIsometryEquiv.ext fun x => congrArg (fun f => f x) h + have hgen := (generator_expUnitary hcl).2.2 + rw [← hUV] at hgen + have hcongr : ∀ {A B : H →ₗ.[ℂ] H} (hA : IsSelfAdjoint A) (hB : IsSelfAdjoint B), A = B → + expUnitary hA = expUnitary hB := by + rintro A B hA hB rfl; rfl + have hA : IsSelfAdjoint (generator U) := by rw [hgen]; exact hcl + refine ⟨hA, hasDenseDomain_generator hU hc, fun t => ?_, fun B hB hUB => ?_⟩ + · rw [hcongr hA hcl hgen, ← hUV] + · rw [show U = expUnitary hB from funext hUB] + exact ((generator_expUnitary hB).2.2).symm + +end Stone +end Spectral +end Physicslib4 diff --git a/Physicslib4/Spectral/Unbounded/Basic.lean b/Physicslib4/Spectral/Unbounded/Basic.lean index bd1c62e..42a4c42 100644 --- a/Physicslib4/Spectral/Unbounded/Basic.lean +++ b/Physicslib4/Spectral/Unbounded/Basic.lean @@ -192,6 +192,63 @@ theorem isSymmetric_iff_le_adjoint {T : H →ₗ.[ℂ] H} (hT : HasDenseDomain T rw [LinearPMap.apply_comp_inclusion hle φ] exact (LinearPMap.adjoint_isFormalAdjoint hT (Submodule.inclusion hle.1 φ) ψ).symm +/-- +An unbounded operator `A` is *positive* if it is symmetric (in the density-free sense of +`IsSymmetric`) and `0 ≤ Re ⟪ψ, A ψ⟫` for every `ψ ∈ Dom(A)`. For symmetric `A` the number +`⟪ψ, A ψ⟫` is real, so this is `⟪ψ, A ψ⟫ ≥ 0`. This mirrors Mathlib's +`ContinuousLinearMap.IsPositive` (`isPositive_toPMap_iff`). + +Blueprint reference: `def:positive-unbounded-operator`. +-/ +def IsPositive (A : H →ₗ.[ℂ] H) : Prop := + IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ (⟪(ψ : H), A ψ⟫_ℂ).re + +omit [CompleteSpace H] in +/-- +A bounded operator, regarded as an unbounded operator with domain `H`, is positive exactly +when it is positive as a bounded operator. + +Blueprint reference: `lmm:positive-bounded-agrees`. +-/ +theorem isPositive_toPMap_iff (P : H →L[ℂ] H) : + IsPositive ((P : H →ₗ[ℂ] H).toPMap ⊤) ↔ P.IsPositive := by + rw [ContinuousLinearMap.isPositive_def] + refine ⟨fun ⟨hs, hp⟩ => ⟨fun x y => (hs ⟨x, trivial⟩ ⟨y, trivial⟩).symm, fun x => ?_⟩, + fun ⟨hs, hp⟩ => ⟨fun φ ψ => (hs φ ψ).symm, fun ψ => ?_⟩⟩ + · rw [ContinuousLinearMap.reApplyInnerSelf_apply, ← inner_re_symm] + exact hp ⟨x, trivial⟩ + · have := hp ψ + rw [ContinuousLinearMap.reApplyInnerSelf_apply, ← inner_re_symm] at this + exact this + +omit [CompleteSpace H] in +/-- +Unitary conjugation preserves positivity: if `A` is positive, `W` is unitary, and `B` has +domain `W · Dom(A)` with `B ψ = W A W⁻¹ ψ` there, then `B` is positive. Stated through the +domain and the formula rather than by building `W A W⁻¹`, which is the form in which +`Stone.mem_generator_conj_domain_iff` and `Stone.generator_conj_apply` supply it. + +Blueprint reference: `lmm:positive-conj`. +-/ +theorem IsPositive.of_conj {A B : H →ₗ.[ℂ] H} (hA : IsPositive A) (W : H ≃ₗᵢ[ℂ] H) + (hdom : ∀ ψ : H, ψ ∈ B.domain ↔ W.symm ψ ∈ A.domain) + (happ : ∀ (ψ : H) (h : ψ ∈ B.domain) (h' : W.symm ψ ∈ A.domain), + B ⟨ψ, h⟩ = W (A ⟨W.symm ψ, h'⟩)) : + IsPositive B := by + have key : ∀ φ ψ : B.domain, ⟪(φ : H), B ψ⟫_ℂ = + ⟪(W.symm φ : H), A ⟨W.symm ψ, (hdom ψ).1 ψ.2⟩⟫_ℂ := by + intro φ ψ + rw [happ ψ ψ.2 ((hdom ψ).1 ψ.2), ← W.inner_map_map (W.symm φ), W.apply_symm_apply] + have key' : ∀ φ ψ : B.domain, ⟪B φ, (ψ : H)⟫_ℂ = + ⟪A ⟨W.symm φ, (hdom φ).1 φ.2⟩, (W.symm ψ : H)⟫_ℂ := by + intro φ ψ + rw [happ φ φ.2 ((hdom φ).1 φ.2), ← W.inner_map_map _ (W.symm ψ), W.apply_symm_apply] + refine ⟨fun φ ψ => ?_, fun ψ => ?_⟩ + · rw [key, key'] + exact hA.1 ⟨_, (hdom φ).1 φ.2⟩ ⟨_, (hdom ψ).1 ψ.2⟩ + · rw [key] + exact hA.2 ⟨_, (hdom ψ).1 ψ.2⟩ + /-! ### The closure of an unbounded operator @@ -405,6 +462,21 @@ theorem adjoint_le_adjoint_of_le {C₁ C₂ : H →ₗ.[ℂ] H} (hC₂ : HasDens rw [← e] exact congrArg _ (Subtype.ext hxy) +/-- +A self-adjoint operator has no proper symmetric extension: if `B` is symmetric and extends +the self-adjoint `A`, then `A = B`. + +`B` need not be assumed densely defined: its domain contains the dense domain of `A`. + +Blueprint reference: `lmm:self-adjoint-maximally-symmetric`. +-/ +theorem eq_of_isSelfAdjoint_of_isSymmetric_of_le {A B : H →ₗ.[ℂ] H} (hA : IsSelfAdjoint A) + (hB : IsSymmetric B) (hAB : A ≤ B) : A = B := by + have hBd : HasDenseDomain B := Dense.mono (SetLike.coe_subset_coe.mpr hAB.1) hA.dense_domain + have hadj := adjoint_le_adjoint_of_le hA.dense_domain hAB + rw [LinearPMap.isSelfAdjoint_def.mp hA] at hadj + exact le_antisymm hAB (((isSymmetric_iff_le_adjoint hBd).mp hB).trans hadj) + /-- Every self-adjoint extension of an essentially self-adjoint operator `T` is `T^cl`. diff --git a/Physicslib4/Spectral/Unbounded/FunctionalCalculus.lean b/Physicslib4/Spectral/Unbounded/FunctionalCalculus.lean new file mode 100644 index 0000000..250be91 --- /dev/null +++ b/Physicslib4/Spectral/Unbounded/FunctionalCalculus.lean @@ -0,0 +1,122 @@ +/- +Copyright (c) 2026 Lean Community. All rights reserved. +Released under Apache 2.0 license as described in the file LICENSE. +Authors: Lean Community +-/ +import Physicslib4.Spectral.Unbounded.Cayley + +/-! +# The functional calculus of an unbounded self-adjoint operator + +The spectral theorem for unbounded self-adjoint operators +(`existsUnique_spectralMeasure_unbounded`) supplies, for a self-adjoint `A`, a unique +projection-valued measure `μ^A` on `ℝ` with `∫ λ dμ^A(λ) = A`. This file names that measure +and defines `f(A) := ∫ f dμ^A` for measurable `f : ℝ → ℂ`, with domain `W_f`. + +## Main definitions + +* `spectralMeasure hA` — the spectral measure `μ^A` of a self-adjoint operator `A`. +* `functionalCalculus hA f` — the (possibly unbounded) operator `f(A)`. + +## Main statements + +* `pmapIntegral_spectralMeasure` — `∫ λ dμ^A = A`. +* `eq_spectralMeasure_of_pmapIntegral` — uniqueness of `μ^A`. +* `functionalCalculus_of_bddMeasurable` — for bounded measurable `f`, `W_f = H` and `f(A)` + is the bounded integral of `f` against `μ^A`. +-/ + +namespace Physicslib4 +namespace Spectral +namespace Unbounded + +open scoped InnerProductSpace LinearPMap + +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] + {A : H →ₗ.[ℂ] H} + +/-- +The *spectral measure* `μ^A` of a self-adjoint operator `A`: the unique projection-valued +measure on the Borel sets of `ℝ` with `∫ λ dμ^A(λ) = A`, supplied by +`existsUnique_spectralMeasure_unbounded`. + +Blueprint reference: `def:spectral-measure`. +-/ +noncomputable def spectralMeasure (hA : IsSelfAdjoint A) : ProjectionValuedMeasure ℝ H := + (existsUnique_spectralMeasure_unbounded hA).exists.choose + +/-- +The spectral measure integrates the identity function to `A`. + +Blueprint reference: `def:spectral-measure`. +-/ +theorem pmapIntegral_spectralMeasure (hA : IsSelfAdjoint A) : + pmapIntegral (spectralMeasure hA) (fun x : ℝ => (x : ℂ)) = A := + (existsUnique_spectralMeasure_unbounded hA).exists.choose_spec + +/-- +The spectral measure is the only projection-valued measure on `ℝ` integrating the identity +function to `A`. + +Blueprint reference: `def:spectral-measure`. +-/ +theorem eq_spectralMeasure_of_pmapIntegral (hA : IsSelfAdjoint A) + {μ : ProjectionValuedMeasure ℝ H} (hμ : pmapIntegral μ (fun x : ℝ => (x : ℂ)) = A) : + μ = spectralMeasure hA := + (existsUnique_spectralMeasure_unbounded hA).unique hμ (pmapIntegral_spectralMeasure hA) + +/-- +`Dom(A) = W_ι` for the identity function `ι(λ) = λ`: the vectors `ψ` with +`∫ λ² dμ^A_ψ(λ) < ∞`. + +Blueprint reference: `def:spectral-measure`. +-/ +theorem domain_eq_integralDomain_spectralMeasure (hA : IsSelfAdjoint A) : + A.domain = integralDomain (spectralMeasure hA) (fun x : ℝ => (x : ℂ)) := by + conv_lhs => rw [← pmapIntegral_spectralMeasure hA] + rfl + +/-- +The *functional calculus* of a self-adjoint operator `A`: for measurable `f : ℝ → ℂ`, +`f(A) := ∫ f dμ^A`, a possibly unbounded operator with domain `W_f` +(`functionalCalculus_domain`). Measurability of `f` is not part of the definition; the +results about `f(A)` assume it where they need it. + +Blueprint reference: `def:hall-10.5`. +-/ +noncomputable def functionalCalculus (hA : IsSelfAdjoint A) (f : ℝ → ℂ) : H →ₗ.[ℂ] H := + pmapIntegral (spectralMeasure hA) f + +/-- +The domain of `f(A)` is `W_f`, the vectors `ψ` with `∫ |f|² dμ^A_ψ < ∞`. + +Blueprint reference: `def:hall-10.5`. +-/ +theorem functionalCalculus_domain (hA : IsSelfAdjoint A) (f : ℝ → ℂ) : + (functionalCalculus hA f).domain = integralDomain (spectralMeasure hA) f := + rfl + +/-- +For the identity function, the functional calculus recovers `A`. + +Blueprint reference: `def:hall-10.5`. +-/ +theorem functionalCalculus_id (hA : IsSelfAdjoint A) : + functionalCalculus hA (fun x : ℝ => (x : ℂ)) = A := + pmapIntegral_spectralMeasure hA + +/-- +For bounded measurable `f`, `W_f = H` and `f(A)` is the bounded integral `∫ f dμ^A` of +`f` against the spectral measure; in particular `f(A)` is bounded and everywhere defined. + +Blueprint reference: `lmm:functional-calculus-bounded`. +-/ +theorem functionalCalculus_of_bddMeasurable (hA : IsSelfAdjoint A) {f : ℝ → ℂ} + (hf : f ∈ BddMeasurable ℝ) : + (functionalCalculus hA f).domain = ⊤ ∧ + functionalCalculus hA f = (((spectralMeasure hA).integral f : H →ₗ[ℂ] H).toPMap ⊤) := + ⟨integralDomain_eq_top_of_bddMeasurable _ hf, pmapIntegral_of_bddMeasurable _ hf⟩ + +end Unbounded +end Spectral +end Physicslib4 diff --git a/blueprint/src/content.tex b/blueprint/src/content.tex index 4735b08..ea6fa18 100644 --- a/blueprint/src/content.tex +++ b/blueprint/src/content.tex @@ -61,6 +61,7 @@ \chapter{Haag Kastler Axioms Blueprint}\label{chptr:haag-kastler-axioms-blueprin \input{sections/sec10/gns-construction-details} \input{sections/sec10/spectral-theorems} \input{sections/sec10/unbounded-spectral-theorems} +\input{sections/sec10/stones-theorem} \input{sections/sec10/spacetime} \input{sections/sec10/haag-kastler-axioms} \input{sections/sec10/haag-kastler-axioms-in-curved-spacetime} diff --git a/blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex b/blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex index 519dc2b..ab51f97 100644 --- a/blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex +++ b/blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex @@ -688,8 +688,7 @@ \subsection{KMS States for a Killing Flow} \begin{definition}[Ground State for a Killing Flow] \label{def:ground-state-for-flow-in-curved-spacetime} \lean{Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsGroundStateForFlow, Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsGroundStateForFlow.invariant, Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsGroundStateForFlow.exists_strongContinuous_unitary} - \leanfile{Physicslib4/AQFT/HaagKastlerCurved/StabilizerKMS.lean} \leanok - \uses{def:kms-state-for-flow-in-curved-spacetime, def:positive-energy, def:stabilizer-action-in-curved-spacetime} - A state $\omega$ on $\mathfrak{U}(\mathbf{B})$ is a \emph{ground state} for a one-parameter Killing flow $t \mapsto \varphi_t$ into $\mathrm{Stab}(\mathbf{B})$ when it is invariant under the flow and, in a GNS representation reproducing $\omega$ and implementing the flow by unitaries $U(t)$ fixing $\Omega$, the one-parameter unitary group $t \mapsto U(t)$ has positive energy (\ref{def:positive-energy}). This is the ground-state ($\beta \to \infty$, spectrum-condition) counterpart of the Killing-flow KMS state \ref{def:kms-state-for-flow-in-curved-spacetime}: it selects the stationary state whose Killing-flow generator, the local Hamiltonian, is positive. Two Stone-free consequences: a ground state is flow-invariant, and its implementing unitary group is strongly continuous. The positive-energy condition is the bounded-generator scaffold; the faithful unbounded form is Stone-gated. + \uses{def:kms-state-for-flow-in-curved-spacetime, def:positive-energy, def:stabilizer-action-in-curved-spacetime, lmm:positive-energy-strong-continuous} + A state $\omega$ on $\mathfrak{U}(\mathbf{B})$ is a \emph{ground state} for a one-parameter Killing flow $t \mapsto \varphi_t$ into $\mathrm{Stab}(\mathbf{B})$ when it is invariant under the flow and, in a GNS representation reproducing $\omega$ and implementing the flow by unitaries $U(t)$ fixing $\Omega$, the one-parameter unitary group $t \mapsto U(t)$ has positive energy (\ref{def:positive-energy}). This is the ground-state ($\beta \to \infty$, spectrum-condition) counterpart of the Killing-flow KMS state \ref{def:kms-state-for-flow-in-curved-spacetime}: it selects the stationary state whose Killing-flow generator, the local Hamiltonian, is positive. Two consequences that do not use the positivity of the generator: a ground state is flow-invariant, and its implementing unitary group is strongly continuous. \end{definition} diff --git a/blueprint/src/sections/sec10/haag-kastler-axioms.tex b/blueprint/src/sections/sec10/haag-kastler-axioms.tex index fa9bc45..8b4dd67 100644 --- a/blueprint/src/sections/sec10/haag-kastler-axioms.tex +++ b/blueprint/src/sections/sec10/haag-kastler-axioms.tex @@ -1880,7 +1880,7 @@ \subsection{Covariant States and the Covariance Action} The unitaries are obtained by extending the densely-defined isometry $\pi(a)\Omega \mapsto \pi(\beta_L a)\Omega$ - isometric because $\omega$ preserves the GNS inner product $\langle \pi(a)\Omega, \pi(b)\Omega\rangle = \omega(a^* b)$ - to the whole GNS space. \end{proof} -Combining invariance with purity makes the GNS representation both covariant and irreducible. We emphasise that this is a \emph{precursor} to a vacuum representation, not a vacuum itself: a genuine vacuum additionally requires the spectrum condition (positivity of the energy-momentum spectrum), which is not imposed - and indeed not expressible - here. +Combining invariance with purity makes the GNS representation both covariant and irreducible. We emphasise that this is a \emph{precursor} to a vacuum representation, not a vacuum itself: a genuine vacuum additionally requires the spectrum condition (positivity of the energy-momentum spectrum), which is not imposed at this point. It is expressed below through the positive-energy condition \ref{def:positive-energy}, imposed on the translation subgroups in the definition of a vacuum state \ref{def:vacuum-state}. \begin{theorem}[Irreducible Covariant Representation of a Pure Invariant State] \label{thrm:irreducible-covariant-representation} @@ -1896,44 +1896,151 @@ \subsection{Covariant States and the Covariance Action} This combines the covariant GNS triple of \ref{thrm:invariant-state-gns-unitary} with purity $\Rightarrow$ irreducibility (\ref{thrm:pure-iff-irreducible}). \end{proof} -\begin{definition}[Positive Energy (bounded-generator scaffold)] +\begin{definition}[Positive Energy] \label{def:positive-energy} \lean{Physicslib4.AQFT.IsPositiveEnergy} - \leanfile{Physicslib4/AQFT/HaagKastler/VacuumState.lean} + \uses{def:hall-10.11, def:hall-10.13, def:positive-unbounded-operator} \leanok - A strongly continuous one-parameter unitary group $V : \mathbb{R} \to \mathcal{U}(H)$ has \emph{positive energy} when its generator is a positive operator: there exists a positive bounded operator $P$ (hence self-adjoint, with non-negative spectrum) such that $V(t) = e^{i t P}$ for all $t$. The positivity of $P$ is the energy-positivity asserted by the spectrum condition. The generator of a physical translation is unbounded, so requiring $P$ bounded is a genuine restriction; the faithful unbounded form requires Stone's theorem and the theory of unbounded self-adjoint operators, which Mathlib does not yet provide. This is the bounded-generator scaffold. + A family $V(t)$, $t \in \mathbb{R}$, of unitary operators on $H$ has \emph{positive energy} when $V$ is a strongly continuous one-parameter unitary group (\ref{def:hall-10.11}) whose infinitesimal generator $A$ (\ref{def:hall-10.13}) is a positive operator (\ref{def:positive-unbounded-operator}): $A$ is symmetric and $\left< \psi, A\psi \right> \ge 0$ for every $\psi \in \text{Dom}(A)$. By Stone's Theorem (\ref{thrm:hall-10.15}) the generator $A$ is then densely defined and self-adjoint, and $V(t) = e^{itA}$ for all $t$; so the condition says exactly that $V(t) = e^{itP}$ with $P$ a positive self-adjoint operator, which is Theorem~\ref{thrm:positive-energy-iff-exp}. The positivity of the generator is the energy-positivity asserted by the spectrum condition. \end{definition} -\begin{theorem}[Positive-Energy API] - \label{thrm:positive-energy-api} - \lean{Physicslib4.AQFT.isPositiveEnergy_const_refl, Physicslib4.AQFT.exp_generator_unique, Physicslib4.AQFT.IsPositiveEnergy.conj, Physicslib4.AQFT.IsPositiveEnergy.strongContinuous} - \leanfile{Physicslib4/AQFT/HaagKastler/VacuumState.lean} +\begin{lemma}[The Trivial Group has Positive Energy] + \label{lmm:positive-energy-const} + \lean{Physicslib4.AQFT.isPositiveEnergy_const_refl} \uses{def:positive-energy} \leanok - Structural properties of the positive-energy condition, all Stone-free. (i) \emph{Trivial subgroup}: the constant group $t \mapsto \mathrm{id}$ has positive energy, with zero generator. (ii) \emph{Uniqueness of the generator}: if two bounded generators induce the same one-parameter group, $e^{i t P} = e^{i t Q}$ for all $t$, then $P = Q$. Hence the generator witnessing positive energy is unique. (iii) \emph{Unitary invariance}: if $V$ has positive energy, so does its conjugate $t \mapsto W \circ V(t) \circ W^{-1}$ by a unitary $W$, with generator $W P W^{-1}$. Physically, the spectrum condition does not depend on the choice of unitary frame. (iv) \emph{Strong continuity}: a positive-energy group is strongly continuous --- $t \mapsto V(t) x$ is continuous for every $x$. This justifies calling it a strongly continuous one-parameter unitary group. -\end{theorem} + The constant group $t \mapsto \mathbf{1}$ has positive energy, with generator $0$ on domain $H$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:generator-const, def:positive-unbounded-operator} + By Lemma~\ref{lmm:generator-const} the constant group is a strongly continuous one-parameter unitary group with generator $0$ on domain $H$. The operator $0$ is positive~(\ref{def:positive-unbounded-operator}): $\left< \phi, 0\psi \right> = 0 = \left< 0\phi, \psi \right>$ and $\left< \psi, 0\psi \right> = 0 \ge 0$. +\end{proof} + +\begin{lemma}[Uniqueness of the Generator] + \label{lmm:exp-generator-unique} + \lean{Physicslib4.AQFT.generator_eq_of_eq_expUnitary, Physicslib4.AQFT.exp_generator_unique} + \uses{def:hall-10.13, def:exp-unitary-group, def:hall-9.5} + \leanok + Let $V(t)$, $t \in \mathbb{R}$, be a family of unitary operators on $H$, and let $B$ be a self-adjoint operator with $V(t) = e^{itB}$ (\ref{def:exp-unitary-group}) for all $t$. Then $B$ is the infinitesimal generator of $V$, with equality of domains. In particular the positive operator witnessing positive energy is unique. +\end{lemma} +\begin{proof} + \leanok + \uses{prpstn:hall-10.14} + By Points 2 and 3 of Proposition~\ref{prpstn:hall-10.14}, the infinitesimal generator of $t \mapsto e^{itB}$ is $B$, with equality of domains; and $V$ is this group. Positivity is not used. +\end{proof} + +\begin{lemma}[Unitary Conjugation Preserves Positivity] + \label{lmm:positive-conj} + \lean{Physicslib4.Spectral.Unbounded.IsPositive.of_conj} + \uses{def:positive-unbounded-operator, def:unitary-operator} + \leanok + Let $A$ be a positive operator on $H$~(\ref{def:positive-unbounded-operator}) and $W$ a unitary operator on $H$. Then the operator $WAW^{-1}$ with domain $W\,\text{Dom}(A)$ is positive. +\end{lemma} +\begin{proof} + \leanok + \uses{def:positive-unbounded-operator, def:unitary-operator} + Since $W$ is unitary it preserves inner products, so $\left< \phi, W\chi \right> = \left< W^{-1}\phi, \chi \right>$ for all $\phi, \chi$~(\ref{def:unitary-operator}). For $\phi, \psi \in W\,\text{Dom}(A)$, the vectors $W^{-1}\phi, W^{-1}\psi$ lie in $\text{Dom}(A)$, and symmetry of $A$ gives + \begin{align} + \left< \phi, WAW^{-1}\psi \right> = \left< W^{-1}\phi, AW^{-1}\psi \right> = \left< AW^{-1}\phi, W^{-1}\psi \right> = \left< WAW^{-1}\phi, \psi \right>. + \end{align} + Taking $\phi = \psi$ in the first equality, $\text{Re}\left< \psi, WAW^{-1}\psi \right> = \text{Re}\left< W^{-1}\psi, AW^{-1}\psi \right> \ge 0$. +\end{proof} + +\begin{lemma}[Positive Energy is Unitarily Invariant] + \label{lmm:positive-energy-conj} + \lean{Physicslib4.AQFT.IsPositiveEnergy.conj} + \uses{def:positive-energy, def:unitary-operator} + \leanok + If $V$ has positive energy, with generator $A$, and $W$ is unitary, then $t \mapsto WV(t)W^{-1}$ has positive energy, with generator $WAW^{-1}$ on domain $W\,\text{Dom}(A)$. Physically, the spectrum condition does not depend on the choice of unitary frame. +\end{lemma} \begin{proof} \leanok + \uses{lmm:conj-unitary-group, lmm:generator-conj, lmm:positive-conj} + By Lemma~\ref{lmm:conj-unitary-group}, $t \mapsto WV(t)W^{-1}$ is a strongly continuous one-parameter unitary group; by Lemma~\ref{lmm:generator-conj} its generator is $WAW^{-1}$ on $W\,\text{Dom}(A)$; and this is positive by Lemma~\ref{lmm:positive-conj}. +\end{proof} + +\begin{lemma}[A Positive-Energy Group is Strongly Continuous] + \label{lmm:positive-energy-strong-continuous} + \lean{Physicslib4.AQFT.IsPositiveEnergy.strongContinuous} \uses{def:positive-energy} - (ii) Differentiating at $t = 0$ gives $i P = i Q$; positivity is not needed. (iii) The generator $W P W^{-1}$ is positive, being the unitary conjugate of $P$; the energy exponential transports via $e^{W A W^{-1}} = W e^{A} W^{-1}$. (iv) $t \mapsto (i t) P$ is continuous and the operator exponential is continuous. + \leanok + If $V$ has positive energy, then $V$ is strongly continuous: $t \mapsto V(t)x$ is continuous for every $x \in H$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:positive-energy, def:hall-10.11} + Strong continuity is a clause of Definition~\ref{def:positive-energy}, and it is the continuity of $t \mapsto V(t)x$ by Definition~\ref{def:hall-10.11}. +\end{proof} + +\begin{lemma}[The Bounded Case] + \label{lmm:positive-energy-exp-bounded} + \lean{Physicslib4.AQFT.isPositiveEnergy_exp} + \uses{def:positive-energy, def:non-negative-operator} + \leanok + If $P \in \mathcal{B}(H)$ is a bounded positive operator, then $t \mapsto \exp(itP)$, the norm-convergent exponential series, has positive energy, with generator $P$ on domain $H$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:generator-exp-bounded, lmm:positive-bounded-agrees} + A bounded positive operator is self-adjoint (in Mathlib, \texttt{ContinuousLinearMap.IsPositive.isSelfAdjoint}). So Lemma~\ref{lmm:generator-exp-bounded} gives a strongly continuous one-parameter unitary group with generator $P$ on domain $H$, which is positive by Lemma~\ref{lmm:positive-bounded-agrees}. \end{proof} -\begin{definition}[Vacuum State (generator-parameterized scaffold)] +\begin{theorem}[Positive Energy in Exponential Form] + \label{thrm:positive-energy-iff-exp} + \lean{Physicslib4.AQFT.isPositiveEnergy_iff_exists_exp} + \uses{def:positive-energy, def:exp-unitary-group, def:positive-unbounded-operator, def:hall-9.5} + \leanok + A family $V(t)$, $t \in \mathbb{R}$, of unitary operators on $H$ has positive energy if and only if there is a positive self-adjoint operator $A$ with $V(t) = e^{itA}$ for all $t$. +\end{theorem} +\begin{proof} + \leanok + \uses{thrm:hall-10.15, prpstn:hall-10.14} + Forward: Stone's Theorem (\ref{thrm:hall-10.15}) gives $V(t) = e^{itA}$ with the generator $A$ self-adjoint, and $A$ is positive by hypothesis. Backward: by Proposition~\ref{prpstn:hall-10.14}, $V$ is a strongly continuous one-parameter unitary group whose generator is $A$, which is positive. +\end{proof} + +\begin{theorem}[Properties of Positive Energy] + \label{thrm:positive-energy-api} + \lean{Physicslib4.AQFT.isPositiveEnergy_const_refl, Physicslib4.AQFT.generator_eq_of_eq_expUnitary, Physicslib4.AQFT.IsPositiveEnergy.conj, Physicslib4.AQFT.IsPositiveEnergy.strongContinuous, Physicslib4.AQFT.isPositiveEnergy_exp, Physicslib4.AQFT.isPositiveEnergy_iff_exists_exp} + \uses{def:positive-energy, def:exp-unitary-group, def:positive-unbounded-operator} + \leanok + Let $V$ be a family of unitary operators on $H$ indexed by $\mathbb{R}$. + \begin{enumerate} + \item[(i)] \emph{Trivial group}: the constant group $t \mapsto \mathbf{1}$ has positive energy, with generator $0$. + \item[(ii)] \emph{Uniqueness of the generator}: if $B$ is self-adjoint and $V(t) = e^{itB}$ (\ref{def:exp-unitary-group}) for all $t$, then $B$ is the infinitesimal generator of $V$. Hence the positive operator witnessing positive energy is unique. + \item[(iii)] \emph{Unitary invariance}: if $V$ has positive energy and $W$ is unitary, then $t \mapsto WV(t)W^{-1}$ has positive energy, with generator $WAW^{-1}$, where $A$ is the generator of $V$. Physically, the spectrum condition does not depend on the choice of unitary frame. + \item[(iv)] \emph{Strong continuity}: a positive-energy group is strongly continuous, i.e. $t \mapsto V(t)x$ is continuous for every $x$. + \item[(v)] \emph{Bounded case}: if $P$ is a bounded positive operator, then $t \mapsto \exp(itP)$, the norm-convergent exponential series, has positive energy, with generator $P$. + \item[(vi)] \emph{Exponential form}: $V$ has positive energy if and only if there is a positive self-adjoint operator $A$ with $V(t) = e^{itA}$ for all $t$. + \end{enumerate} +\end{theorem} +\begin{proof} + \leanok + \uses{lmm:positive-energy-const, lmm:exp-generator-unique, lmm:positive-conj, lmm:positive-energy-conj, lmm:positive-energy-strong-continuous, lmm:positive-energy-exp-bounded, thrm:positive-energy-iff-exp} + (i) Lemma~\ref{lmm:positive-energy-const}. + (ii) Lemma~\ref{lmm:exp-generator-unique}. + (iii) Lemma~\ref{lmm:positive-energy-conj}, whose positivity step is Lemma~\ref{lmm:positive-conj}. + (iv) Lemma~\ref{lmm:positive-energy-strong-continuous}. + (v) Lemma~\ref{lmm:positive-energy-exp-bounded}. + (vi) Theorem~\ref{thrm:positive-energy-iff-exp}. +\end{proof} + +\begin{definition}[Vacuum State] \label{def:vacuum-state} \lean{Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState} - \leanfile{Physicslib4/AQFT/HaagKastler/VacuumState.lean} \leanok \uses{def:invariant-state, def:positive-energy, def:covariant-quasilocal-algebra, thrm:invariant-state-gns-unitary} - A state $\omega$ on the quasilocal algebra is a \emph{vacuum state} (relative to a future-timelike-translation predicate) when it is invariant under the covariance action (\ref{def:invariant-state}) and, in a GNS representation reproducing $\omega$ and implementing the action by unitaries $U(L)$, every future-timelike translation one-parameter subgroup $\gamma$ has positive energy: $t \mapsto U(\gamma(t))$ satisfies \ref{def:positive-energy}. This packages the two \emph{necessary} vacuum conditions --- invariance and the spectrum condition --- with the spectrum condition entering as the positive-energy hypothesis on the implementing unitaries. The future-timelike-translation predicate is a parameter, to be instantiated once the translation subgroup of the Lorentz group and its causal structure are wired in; the positive-energy condition is the bounded-generator scaffold. Constructing/discharging the spectrum condition for a concrete net is the Stone-gated next layer. + A state $\omega$ on the quasilocal algebra is a \emph{vacuum state} (relative to a future-timelike-translation predicate) when it is invariant under the covariance action (\ref{def:invariant-state}) and, in a GNS representation reproducing $\omega$ and implementing the action by unitaries $U(L)$, every future-timelike translation one-parameter subgroup $\gamma$ has positive energy: $t \mapsto U(\gamma(t))$ satisfies \ref{def:positive-energy}. This packages the two \emph{necessary} vacuum conditions --- invariance and the spectrum condition --- with the spectrum condition entering as the positive-energy hypothesis on the implementing unitaries. The future-timelike-translation predicate is a parameter, instantiated by the concrete predicate of \ref{def:future-timelike-translation} in \ref{def:vacuum-state-concrete}. + + \emph{Remark.} Positive energy along every future-timelike translation subgroup is equivalent to the textbook form of the spectrum condition, that the joint spectrum of the energy--momentum operators (the generators of the translation subgroups) lies in the closed forward light cone. The textbook form is not used here: stating it requires a joint spectral measure for a family of commuting unbounded self-adjoint operators. \end{definition} -\begin{theorem}[No-Stone Consequences of a Vacuum State] - \label{thrm:vacuum-no-stone} +\begin{theorem}[Consequences of Invariance for a Vacuum State] + \label{thrm:vacuum-invariance-consequences} \lean{Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState.invariant, Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState.exists_gns_irreducible_covariant} - \leanfile{Physicslib4/AQFT/HaagKastler/VacuumState.lean} \uses{def:vacuum-state, thrm:irreducible-covariant-representation} \leanok - The conditions a vacuum state satisfies that need neither the spectrum condition nor Stone's theorem. First, a vacuum state is \emph{invariant} (the first conjunct of the definition). Second, a \emph{pure} vacuum state yields the irreducible covariant GNS representation of \ref{thrm:irreducible-covariant-representation}: a covariant GNS triple with implementing unitaries $U(L)$ fixing $\Omega$ and operator covariance $U(L)\pi(a)U(L)^{-1} = \pi(\beta_L a)$, whose representation is irreducible and generates all of $\mathcal{B}(H)$. + The conditions a vacuum state satisfies that do not use the spectrum condition. First, a vacuum state is \emph{invariant} (the first conjunct of the definition). Second, a \emph{pure} vacuum state yields the irreducible covariant GNS representation of \ref{thrm:irreducible-covariant-representation}: a covariant GNS triple with implementing unitaries $U(L)$ fixing $\Omega$ and operator covariance $U(L)\pi(a)U(L)^{-1} = \pi(\beta_L a)$, whose representation is irreducible and generates all of $\mathcal{B}(H)$. \end{theorem} \begin{proof} \leanok @@ -1953,10 +2060,9 @@ \subsection{Covariant States and the Covariance Action} \begin{definition}[Vacuum State with the Concrete Spectrum Condition] \label{def:vacuum-state-concrete} \lean{Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumStateConcrete} - \leanfile{Physicslib4/AQFT/HaagKastler/VacuumState.lean} \leanok \uses{def:vacuum-state, def:future-timelike-translation} - The vacuum-state condition of \ref{def:vacuum-state} with its future-timelike-translation parameter fixed to the concrete predicate \ref{def:future-timelike-translation}: the spectrum condition is imposed on exactly the one-parameter translation subgroups $t \mapsto (\mathrm{id}, t \cdot n)$ with $n$ future-pointing timelike. The vacuum definition then depends on no free predicate. Invariance and (for a pure state) the irreducible covariant representation follow as in \ref{thrm:vacuum-no-stone}, since the concrete form unfolds to the parameterized one. + The vacuum-state condition of \ref{def:vacuum-state} with its future-timelike-translation parameter fixed to the concrete predicate \ref{def:future-timelike-translation}: the spectrum condition is imposed on exactly the one-parameter translation subgroups $t \mapsto (\mathrm{id}, t \cdot n)$ with $n$ future-pointing timelike. The vacuum definition then depends on no free predicate. Invariance and (for a pure state) the irreducible covariant representation follow as in \ref{thrm:vacuum-invariance-consequences}, since the concrete form unfolds to the parameterized one. \end{definition} \begin{theorem}[Purity is Covariance-Invariant] @@ -2181,8 +2287,7 @@ \subsection{KMS States for the Covariance Flow} \begin{definition}[Ground State for a Covariance Flow] \label{def:ground-state-for-flow-covariance} \lean{Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsGroundStateForFlow, Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsGroundStateForFlow.invariant, Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsGroundStateForFlow.exists_strongContinuous_unitary} - \leanfile{Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean} \leanok - \uses{def:kms-state-for-flow-covariance, def:positive-energy, def:covariant-quasilocal-algebra} - A state $\omega$ on the quasilocal algebra $\mathfrak{U}$ is a \emph{ground state} for a one-parameter subgroup $t \mapsto L_t$ of the inhomogeneous Lorentz group (e.g.\ a translation or boost flow) when it is invariant under the flow and, in a GNS representation reproducing $\omega$ and implementing the flow by unitaries $U(t)$ fixing $\Omega$, the one-parameter unitary group $t \mapsto U(t)$ has positive energy (\ref{def:positive-energy}). This is the ground-state ($\beta \to \infty$, spectrum-condition) counterpart of the covariance-flow KMS state \ref{def:kms-state-for-flow-covariance}: the stationary state whose flow generator, the Hamiltonian for a timelike flow, is positive. Two Stone-free consequences: a ground state is flow-invariant, and its implementing unitary group is strongly continuous. It is the Minkowski analogue of the curved Killing-flow ground state \ref{def:ground-state-for-flow-in-curved-spacetime}. + \uses{def:kms-state-for-flow-covariance, def:positive-energy, def:covariant-quasilocal-algebra, lmm:positive-energy-strong-continuous} + A state $\omega$ on the quasilocal algebra $\mathfrak{U}$ is a \emph{ground state} for a one-parameter subgroup $t \mapsto L_t$ of the inhomogeneous Lorentz group (e.g.\ a translation or boost flow) when it is invariant under the flow and, in a GNS representation reproducing $\omega$ and implementing the flow by unitaries $U(t)$ fixing $\Omega$, the one-parameter unitary group $t \mapsto U(t)$ has positive energy (\ref{def:positive-energy}). This is the ground-state ($\beta \to \infty$, spectrum-condition) counterpart of the covariance-flow KMS state \ref{def:kms-state-for-flow-covariance}: the stationary state whose flow generator, the Hamiltonian for a timelike flow, is positive. Two consequences that do not use the positivity of the generator: a ground state is flow-invariant, and its implementing unitary group is strongly continuous. It is the Minkowski analogue of the curved Killing-flow ground state \ref{def:ground-state-for-flow-in-curved-spacetime}. \end{definition} diff --git a/blueprint/src/sections/sec10/stones-theorem.tex b/blueprint/src/sections/sec10/stones-theorem.tex new file mode 100644 index 0000000..38a3b13 --- /dev/null +++ b/blueprint/src/sections/sec10/stones-theorem.tex @@ -0,0 +1,781 @@ +\section{Stone's Theorem}\label{sctn:stones-theorem} +Here we will state and prove \textbf{Stone's Theorem}~(\ref{thrm:hall-10.15}), which together with Proposition~\ref{prpstn:hall-10.14} establishes a one-to-one correspondence between strongly continuous one-parameter unitary groups on $\mathbf{H}$ and self-adjoint operators on $\mathbf{H}$, as recorded in the Summary at the end of this section. In quantum mechanics this is how observables arise as generators of symmetries and of dynamics: the source text uses it to identify angular momentum as the infinitesimal generator of the one-parameter group of unitary rotation operators (source text, Section 17.1), and, together with Lemma~\ref{lmm:hall-10.17}, to show that the time evolution $\psi(t) = e^{-it\hat{H}/\hbar}\psi_0$ satisfies the Schrödinger equation, in the natural Hilbert-space sense, exactly when $\psi_0$ lies in the domain of the Hamiltonian $\hat{H}$ (source text, Section 19.4). + +Here, as in Section~\ref{sctn:spectral-theorems} and Section~\ref{sctn:unbounded-spectral-theorems}, we follow the presentation of \href{https://doi.org/10.1007/978-1-4614-7116-5}{Quantum Theory for Mathematicians}. + +This section builds on the two preceding sections: chiefly on the \textbf{Spectral Theorem for Unbounded Self-Adjoint Operators}~(\ref{thrm:hall-10.4}) and the functional calculus it supplies~(\ref{def:hall-10.5}), and also on the theory of unbounded operators — adjoints, symmetric and self-adjoint operators, closures, and the criterion for essential self-adjointness — developed in Section~\ref{sctn:unbounded-spectral-theorems}, together with the properties of the integral against a projection-valued measure established in Section~\ref{sctn:spectral-theorems}. Nothing proved in those sections depends on anything proved here, so there is no circularity. + +A note on conventions. As in the preceding sections, results that are standard and whose proofs lie outside the scope of this development are stated in full but not proven, and are marked as such by the absence of an accompanying proof. In this section those results are the ones concerning the Bochner integral of a Hilbert-space-valued function~(\ref{thrm:bochner-integral}), the existence of smooth approximate identities~(\ref{lmm:smooth-approximate-identity}), the elementary facts about differentiation recorded in Proposition~\ref{prpstn:calculus-facts}, and the differentiation and approximation properties of convolutions recorded in Lemma~\ref{lmm:convolution-facts}. Each is available in Mathlib, and the corresponding declarations are named where the result is stated. Every other result stated here is proven in full, including the solution of the equation $y' = cy$~(\ref{lmm:linear-ode-scalar}), which is derived from Proposition~\ref{prpstn:calculus-facts}. + +\subsection{One-Parameter Unitary Groups} +We begin with the objects the theorem is about. + +\begin{definition}[One-Parameter Unitary Group] + \label{def:hall-10.11} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup, Physicslib4.Spectral.Stone.IsStronglyContinuous} + \uses{def:bounded-operator-notation, def:unitary-operator, def:identity-operator, def:adjoint-bounded, def:induced-norm, lmm:unitary-is-normal} + \leanok + A \textit{one-parameter unitary group} on $\mathbf{H}$ is a family $U(t)$, $t \in \mathbb{R}$, of unitary operators on $\mathbf{H}$ such that + \begin{align} + U(0) &= \mathbf{1}, \\ + U(s + t) &= U(s)U(t) \qquad \text{for all } s,t \in \mathbb{R}. + \end{align} + A one-parameter unitary group is \textit{strongly continuous} if + \begin{align} + \lim\limits_{s \rightarrow t} \left\| U(t)\psi - U(s)\psi \right\| = 0 + \end{align} + for all $\psi \in \mathbf{H}$ and all $t \in \mathbb{R}$. + + Two remarks on the definition. First, the group law forces $U(t)^* = U(-t)$; this is Lemma~\ref{lmm:unitary-group-inner-adjoint} below, used in the proof of Lemma~\ref{lmm:generator-symmetry-identity}. Second, strong continuity is here required at every $t \in \mathbb{R}$, following the source text, but continuity at $0$ alone would suffice; this is Lemma~\ref{lmm:strongly-continuous-iff-at-zero} below. +\end{definition} + +\begin{lemma}[Strong Continuity is Strong Continuity at $0$] + \label{lmm:strongly-continuous-iff-at-zero} + \lean{Physicslib4.Spectral.Stone.isStronglyContinuous_iff_tendsto_zero} + \uses{def:hall-10.11} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$. Then $U(\cdot)$ is strongly continuous if and only if $\lim_{s \to 0} \left\| U(s)\psi - \psi \right\| = 0$ for every $\psi \in \mathbf{H}$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, def:unitary-operator} +The forward implication is the case $t = 0$ of the definition, since $U(0) = \mathbf{1}$. Conversely, for any $t$ and $s$, by the group law and because $U(s)$ is unitary and hence isometric by Definition~\ref{def:unitary-operator}, +\begin{align} + \left\| U(t)\psi - U(s)\psi \right\| = \left\| U(s) \left( U(t-s)\psi - \psi \right) \right\| = \left\| U(t-s)\psi - \psi \right\|, +\end{align} +and the right-hand side tends to $0$ as $s \to t$, since $t - s \to 0$, by continuity at $0$. +\end{proof} + +\begin{lemma}[The Adjoint of $U(t)$ is $U(-t)$] + \label{lmm:unitary-group-inner-adjoint} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.adjoint_eq, Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.inner_apply} + \uses{def:hall-10.11, def:adjoint-bounded} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$. Then $U(t)^* = U(-t)$ for every $t \in \mathbb{R}$; equivalently, + \begin{align} + \left< \phi, U(t)\psi \right> = \left< U(-t)\phi, \psi \right> \qquad \text{for all } \phi, \psi \in \mathbf{H}. + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, def:adjoint-bounded, def:unitary-operator, lmm:unitary-is-normal} +The group law forces $U(t)^{-1} = U(-t)$, since $U(t)U(-t) = U(0) = \mathbf{1} = U(-t)U(t)$. By Lemma~\ref{lmm:unitary-is-normal} a unitary operator satisfies $U(t)^*U(t) = \mathbf{1}$, so $U(t)^* = U(t)^*\left( U(t)U(t)^{-1} \right) = \left( U(t)^*U(t) \right)U(t)^{-1} = U(t)^{-1} = U(-t)$. The inner-product form is the definition of the adjoint~(\ref{def:adjoint-bounded}). +\end{proof} + +\begin{definition}[Infinitesimal Generator] + \label{def:hall-10.13} + \lean{Physicslib4.Spectral.Stone.generator, Physicslib4.Spectral.Stone.generatorDomain, Physicslib4.Spectral.Stone.generatorQuotient} + \uses{def:hall-10.11, def:hall-3.1, def:unitary-operator, def:induced-norm} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$. The \textit{infinitesimal generator} of $U(\cdot)$ is the operator $A$ given by + \begin{align} + A\psi = \lim\limits_{t \rightarrow 0,\ t \ne 0} \frac{1}{i} \frac{U(t)\psi - \psi}{t}, + \end{align} + with $\text{Dom}(A)$ consisting of those $\psi \in \mathbf{H}$ for which the limit exists in the norm topology on $\mathbf{H}$. The limit is the \textit{punctured} one, over $t \to 0$ with $t \ne 0$, the quotient being undefined at $t = 0$. + + That $A$ so defined is linear on $\text{Dom}(A)$, and that $\text{Dom}(A)$ is a subspace, are immediate from the linearity of each $U(t)$ and of limits: if the defining limit exists for $\psi$ and $\phi$ then it exists for $c\psi + \phi$ and takes the value $cA\psi + A\phi$. The definition requires neither strong continuity of $U(\cdot)$ nor density of $\text{Dom}(A)$: the generator, a linear operator on the subspace $\text{Dom}(A)$, is defined for any one-parameter unitary group. That $\text{Dom}(A)$ is \textit{dense} when $U(\cdot)$ is strongly continuous, so that $A$ is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}, is not immediate; it is the content of Lemma~\ref{lmm:hall-10.18}. +\end{definition} + +\begin{lemma}[Characterization of the Generator] + \label{lmm:generator-spec} + \lean{Physicslib4.Spectral.Stone.exists_generator_eq_iff} + \uses{def:hall-10.13} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$, and let $\psi, \chi \in \mathbf{H}$. Then $\psi \in \text{Dom}(A)$ and $A\psi = \chi$ if and only if + \begin{align} + \frac{1}{i} \frac{U(t)\psi - \psi}{t} \longrightarrow \chi \qquad \text{as } t \rightarrow 0,\ t \ne 0, + \end{align} + in the norm topology on $\mathbf{H}$. In particular $\psi \in \text{Dom}(A)$ exactly when this punctured limit exists, and then the limit is $A\psi$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.13} +This is Definition~\ref{def:hall-10.13} unfolded, together with uniqueness of limits: $\mathbf{H}$ is Hausdorff and the punctured filter at $0$ in $\mathbb{R}$ is non-trivial, $0$ not being an isolated point, so a limit along it, when it exists, is unique. +\end{proof} + +The generator of any such group satisfies the symmetry identity. We record this once, since it is used both in Proposition~\ref{prpstn:hall-10.14} and in the proof of Stone's Theorem, and of the properties of the group it uses only the group law and unitarity. + +\begin{lemma}[The Generator Satisfies the Symmetry Identity] + \label{lmm:generator-symmetry-identity} + \lean{Physicslib4.Spectral.Stone.isSymmetric_generator} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.2, def:hall-3.1} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $B$. Then + \begin{align} + \left< \phi, B\psi \right> = \left< B\phi, \psi \right> \qquad \text{for all } \phi, \psi \in \text{Dom}(B). + \end{align} + In particular, if $\text{Dom}(B)$ is dense in $\mathbf{H}$, then $B$ is symmetric. In the Lean formalization, where symmetry of an operator is the identity above and does not presuppose a dense domain, the identity is itself the statement that $B$ is symmetric. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.2, def:hall-3.1, lmm:unitary-group-inner-adjoint, lmm:generator-spec, def:inner-product, def:induced-norm, prpstn:hall-a.43} +For fixed $\phi, \psi \in \mathbf{H}$, both maps $\chi \mapsto \left< \phi, \chi \right>$ and $\chi \mapsto \left< \chi, \psi \right>$ are Lipschitz, by \textbf{Cauchy–Schwarz}~(\ref{prpstn:hall-a.43}): +\begin{align} + \lvert \left< \phi, \chi \right> - \left< \phi, \chi' \right> \rvert &\le \left\| \phi \right\| \left\| \chi - \chi' \right\|, \\ + \lvert \left< \chi, \psi \right> - \left< \chi', \psi \right> \rvert &\le \left\| \chi - \chi' \right\| \left\| \psi \right\|. +\end{align} +So each commutes with limits taken along the continuous parameter $t$. + +Let $\phi, \psi \in \text{Dom}(B)$. By Lemma~\ref{lmm:unitary-group-inner-adjoint}, $\left< \phi, U(t)\psi \right> = \left< U(-t)\phi, \psi \right>$. Hence, all limits being punctured ($t \ne 0$), +\begin{align} + \left< \phi, B\psi \right> &= \lim\limits_{t \rightarrow 0} \left< \phi, \frac{1}{i}\frac{U(t)\psi - \psi}{t} \right> \\ + &= \lim\limits_{t \rightarrow 0} \left< -\frac{1}{i}\frac{U(-t)\phi - \phi}{t}, \psi \right> \\ + &= \lim\limits_{t \rightarrow 0} \left< \frac{1}{i}\frac{U(-t)\phi - \phi}{(-t)}, \psi \right> \\ + &= \left< B\phi, \psi \right>. +\end{align} +The first line is the characterization of $B$ at $\psi$ in Lemma~\ref{lmm:generator-spec}, passed through the Lipschitz map $\chi \mapsto \left< \phi, \chi \right>$. The second uses $\left< \phi, U(t)\psi \right> = \left< U(-t)\phi, \psi \right>$ and conjugate-linearity in the first argument~(\ref{def:inner-product}): the scalar $1/(it)$ moves into the first slot as its conjugate, $\overline{1/(it)} = -1/(it)$, since $t$ is real. The third is algebra. The fourth is Lemma~\ref{lmm:generator-spec} at $\phi$, since $t \mapsto -t$ maps the punctured neighbourhoods of $0$ to themselves, passed through the Lipschitz map $\chi \mapsto \left< \chi, \psi \right>$. + +If moreover $\text{Dom}(B)$ is dense, then $B$ — linear on the subspace $\text{Dom}(B)$ by Definition~\ref{def:hall-10.13} — is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}, and the identity just proved is exactly the condition for symmetry in Definition~\ref{def:hall-9.2}. In the density-free sense of symmetry used in the Lean formalization, the identity is the symmetry of $B$ directly. +\end{proof} + +Three examples of generators are used in the positive-energy condition of the Haag–Kastler axioms: the trivial group, a conjugated group, and the exponential of a bounded operator. + +\begin{lemma}[The Generator of the Trivial Group] + \label{lmm:generator-const} + \lean{Physicslib4.Spectral.Stone.generator_refl} + \uses{def:hall-10.11, def:hall-10.13} + \leanok + The constant family $U(t) = \mathbf{1}$, $t \in \mathbb{R}$, is a strongly continuous one-parameter unitary group, and its infinitesimal generator is the operator $0$ with domain $\mathbf{H}$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, lmm:generator-spec, def:identity-operator} + The identity operator is unitary, $U(0) = \mathbf{1}$ and $U(s+t) = \mathbf{1} = \mathbf{1}\mathbf{1} = U(s)U(t)$, and $\left\| U(t)\psi - U(s)\psi \right\| = 0$ for all $s, t$, so $U(\cdot)$ is a strongly continuous one-parameter unitary group~(\ref{def:hall-10.11}). For every $\psi \in \mathbf{H}$ and $t \ne 0$ the quotient $\frac{1}{i}\frac{U(t)\psi - \psi}{t}$ is $0$, so it tends to $0$; by Lemma~\ref{lmm:generator-spec}, every $\psi$ lies in the domain of the generator, which sends it to $0$. +\end{proof} + +\begin{lemma}[Conjugating a Unitary Group] + \label{lmm:conj-unitary-group} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.conj, Physicslib4.Spectral.Stone.IsStronglyContinuous.conj} + \uses{def:hall-10.11, def:unitary-operator} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$ and let $W$ be a unitary operator on $\mathbf{H}$. Then $V(t) \equiv WU(t)W^{-1}$ is a one-parameter unitary group, and it is strongly continuous if $U(\cdot)$ is. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, def:unitary-operator} + Each $V(t)$ is a product of unitaries, hence unitary; $V(0) = WW^{-1} = \mathbf{1}$ and $V(s)V(t) = WU(s)W^{-1}WU(t)W^{-1} = WU(s+t)W^{-1} = V(s+t)$. Strong continuity transfers because $\left\| V(t)\psi - V(s)\psi \right\| = \left\| U(t)W^{-1}\psi - U(s)W^{-1}\psi \right\|$, $W$ being isometric~(\ref{def:unitary-operator}). +\end{proof} + +\begin{lemma}[Conjugating a Group Conjugates its Generator] + \label{lmm:generator-conj} + \lean{Physicslib4.Spectral.Stone.mem_generator_conj_domain_iff, Physicslib4.Spectral.Stone.generator_conj_apply} + \uses{lmm:conj-unitary-group, def:hall-10.13, def:unitary-operator} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$, let $W$ be a unitary operator on $\mathbf{H}$, and let $B$ be the infinitesimal generator of the one-parameter unitary group $V(t) = WU(t)W^{-1}$ of Lemma~\ref{lmm:conj-unitary-group}. Then $\text{Dom}(B) = W\,\text{Dom}(A)$ and $B = WAW^{-1}$, that is, + \begin{align} + \psi \in \text{Dom}(B) \iff W^{-1}\psi \in \text{Dom}(A), \qquad B\psi = WAW^{-1}\psi. + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:conj-unitary-group, lmm:generator-spec, def:bounded-operator-notation} + By linearity of $W$, for $t \ne 0$, + \begin{align} + \frac{1}{i}\frac{V(t)\psi - \psi}{t} = W\left( \frac{1}{i}\frac{U(t)W^{-1}\psi - W^{-1}\psi}{t} \right). + \end{align} + The operators $W$ and $W^{-1}$ are bounded, hence continuous~(\ref{def:bounded-operator-notation}), so the left side converges if and only if the bracket does, the limits being related by $W$. By Lemma~\ref{lmm:generator-spec} applied to $V(\cdot)$ at $\psi$ and to $U(\cdot)$ at $W^{-1}\psi$, this is the stated description of $B$. +\end{proof} + +In the next three lemmas $P \in \mathcal{B}(\mathbf{H})$ is self-adjoint, $P^* = P$, and for $t \in \mathbb{R}$ +\begin{align} + \exp(itP) \equiv \sum_{n=0}^{\infty} \frac{(itP)^n}{n!}, +\end{align} +the exponential series, convergent in the operator norm of the Banach algebra $\mathcal{B}(\mathbf{H})$ (in Mathlib, \texttt{NormedSpace.exp}, applied to $t \cdot (iP)$). + +\begin{lemma}[$\exp(itP)$ is a One-Parameter Unitary Group] + \label{lmm:exp-bounded-unitary-group} + \lean{Physicslib4.Spectral.Stone.exists_isOneParameterUnitaryGroup_exp} + \uses{def:hall-10.11, def:bounded-operator-notation, def:adjoint-bounded} + \leanok + Let $P \in \mathcal{B}(\mathbf{H})$ be self-adjoint. Then $V(t) \equiv \exp(itP)$ is a one-parameter unitary group. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, def:unitary-operator, def:adjoint-bounded, def:identity-operator} + $V(0) = \exp(0) = \mathbf{1}$ (\texttt{NormedSpace.exp\_zero}). The operators $isP$ and $itP$ commute, so $V(s+t) = V(s)V(t)$ (\texttt{NormedSpace.exp\_add\_of\_commute}). Since $P^* = P$, $(itP)^* = -itP$, so $itP$ is skew-adjoint and $V(t)$ lies in Mathlib's \texttt{unitary} submonoid (\texttt{NormedSpace.exp\_mem\_unitary\_of\_mem\_skewAdjoint}), i.e. $V(t)^*V(t) = V(t)V(t)^* = \mathbf{1}$. As in the proof of Lemma~\ref{lmm:exp-unitary}, this makes $V(t)$ unitary in the sense of Definition~\ref{def:unitary-operator}: it is bijective with inverse $V(t)^*$, and $\left< V(t)\phi, V(t)\psi \right> = \left< \phi, V(t)^*V(t)\psi \right> = \left< \phi, \psi \right>$ by the definition of the adjoint~(\ref{def:adjoint-bounded}). +\end{proof} + +\begin{lemma}[The Derivative of $\exp(itP)$ at $0$] + \label{lmm:exp-bounded-hasDerivAt} + \lean{Physicslib4.Spectral.Stone.hasDerivAt_exp_smul_I} + \uses{def:bounded-operator-notation} + \leanok + Let $P \in \mathcal{B}(\mathbf{H})$. The map $\mathbb{R} \to \mathcal{B}(\mathbf{H})$, $t \mapsto \exp(t \cdot iP)$, is differentiable at $t = 0$ in the operator norm, with derivative $iP$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:bounded-operator-notation} + Mathlib's \texttt{hasDerivAt\_exp\_smul\_const}, with scalar field $\mathbb{K} = \mathbb{R}$ and Banach algebra $\mathcal{B}(\mathbf{H})$ (\texttt{H →L[ℂ] H}), $x = iP$ and $t = 0$, gives the derivative $\exp(0 \cdot iP)\,iP = \exp(0)\,iP = iP$, using \texttt{NormedSpace.exp\_zero}. This is the instantiation used in the existing Lean proof of \texttt{Physicslib4.AQFT.exp\_generator\_unique} (\texttt{Physicslib4/AQFT/PositiveEnergy.lean}). +\end{proof} + +\begin{lemma}[The Generator of $\exp(itP)$] + \label{lmm:generator-exp-bounded} + \lean{Physicslib4.Spectral.Stone.generator_eq_of_eq_exp} + \uses{lmm:exp-bounded-unitary-group, def:hall-10.13} + \leanok + Let $P \in \mathcal{B}(\mathbf{H})$ be self-adjoint. Then the one-parameter unitary group $V(t) = \exp(itP)$ of Lemma~\ref{lmm:exp-bounded-unitary-group} is strongly continuous, and its infinitesimal generator is $P$, with domain $\mathbf{H}$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:exp-bounded-unitary-group, lmm:exp-bounded-hasDerivAt, lmm:strongly-continuous-iff-at-zero, lmm:generator-spec, def:bounded-operator-notation} + By Lemma~\ref{lmm:exp-bounded-hasDerivAt}, $t \mapsto V(t)$ is differentiable, hence continuous, at $0$ in the operator norm; since $\left\| V(t)\psi - \psi \right\| \le \left\| V(t) - \mathbf{1} \right\| \left\| \psi \right\|$, Lemma~\ref{lmm:strongly-continuous-iff-at-zero} gives strong continuity. By \texttt{hasDerivAt\_iff\_tendsto\_slope\_zero}, the same derivative says $t^{-1}(V(t) - \mathbf{1}) \to iP$ in operator norm along $t \to 0$, $t \ne 0$. Applying this to $\psi \in \mathbf{H}$ (evaluation at $\psi$ is a bounded linear map~(\ref{def:bounded-operator-notation})) and multiplying by $1/i$ gives $\frac{1}{i}\frac{V(t)\psi - \psi}{t} \to P\psi$; so by Lemma~\ref{lmm:generator-spec} every $\psi$ lies in the domain of the generator, which sends it to $P\psi$. +\end{proof} + +\subsection{Imported Results} +Four standard results are used below whose proofs lie outside the scope of this development. We state them here in the forms in which they are used. + +The first is the Bochner integral: the extension of the Lebesgue integral to functions taking values in a Banach space. It is used only in the proof of Lemma~\ref{lmm:hall-10.18}, through Lemma~\ref{lmm:averaging-translate}. + +\begin{theorem}[Bochner Integral] + \label{thrm:bochner-integral} + \lean{ContinuousLinearMap.integral_comp_comm, Continuous.integrable_of_hasCompactSupport} + \uses{def:bounded-operator-notation, def:induced-norm} + \leanok + Let $(X,\Omega,\nu)$ be a measure space and $V$ a Banach space. A strongly measurable function $g : X \rightarrow V$ — one that is an almost-everywhere limit of simple functions — with $\int_X \left\| g \right\| \, d\nu < \infty$ is said to be \textit{integrable}, and such a $g$ has a well-defined integral $\int_X g \, d\nu \in V$ with the following properties. + \begin{enumerate} + \item \textit{(Commutation with bounded linear maps.)} If $W$ is a Banach space, $T : V \rightarrow W$ is bounded and linear, and $g : X \rightarrow V$ is integrable, then $T \int_X g \, d\nu = \int_X T g \, d\nu$. In particular this applies to $T \in \mathcal{B}(\mathbf{H})$. + \item \textit{(Continuous compactly supported integrands.)} If $X = \mathbb{R}$ with Lebesgue measure and $g : \mathbb{R} \rightarrow V$ is continuous with compact support, then $g$ is integrable. + \end{enumerate} + In Mathlib the integrable functions are those satisfying \texttt{MeasureTheory.Integrable}, defined as \texttt{MeasureTheory.AEStronglyMeasurable} — strong measurability up to a null set — together with finiteness of $\int_X \left\| g \right\| \, d\nu$, and the integral is \texttt{MeasureTheory.integral}. Point 1 is \texttt{ContinuousLinearMap.integral\_comp\_comm}, and point 2 is \texttt{Continuous.integrable\_of\_hasCompactSupport}. +\end{theorem} +\begin{proof} +\leanok +\end{proof} + +The second supplies the mollifiers used in the same proof. + +\begin{lemma}[Smooth Approximate Identity] + \label{lmm:smooth-approximate-identity} + \lean{ContDiffBump.normed, ContDiffBump.contDiff_normed, ContDiffBump.nonneg_normed, ContDiffBump.integral_normed, ContDiffBump.tsupport_normed_eq} + \leanok + For each $n \ge 1$ there is a function $f_n : \mathbb{R} \rightarrow \mathbb{R}$ that is smooth, non-negative, supported in $[-1/n, 1/n]$, and satisfies $\int_{-\infty}^{\infty} f_n(\tau) \, d\tau = 1$. + In Mathlib such functions are supplied by the normalized bump function \texttt{ContDiffBump.normed} with respect to Lebesgue measure, centred at $0$ with inner radius $1/(2n)$ and outer radius $1/n$: it is smooth by \texttt{ContDiffBump.contDiff\_normed}, non-negative by \texttt{ContDiffBump.nonneg\_normed}, has integral $1$ by \texttt{ContDiffBump.integral\_normed}, and has support in the closed ball of radius $1/n$ by \texttt{ContDiffBump.tsupport\_normed\_eq}, which is compact. These $f_n$ are bump functions whose outer radius $1/n$ tends to $0$, which is the form in which Lemma~\ref{lmm:convolution-facts} takes them. +\end{lemma} +\begin{proof} +\leanok +\end{proof} + +The third collects elementary facts about differentiation of Hilbert-space-valued and vector-valued functions of a real variable. + +\begin{proposition}[Facts about Differentiation] + \label{prpstn:calculus-facts} + \lean{HasDerivAt.inner, is_const_of_deriv_eq_zero} + \uses{def:inner-product} + \leanok + \begin{enumerate} + \item \textit{(Product rule for the inner product.)} Let $t \in \mathbb{R}$ and let $v, w : \mathbb{R} \rightarrow \mathbf{H}$ be differentiable at $t$ in the norm topology, with derivatives $v'(t), w'(t)$. Then $t \mapsto \left< v(t), w(t) \right>$ is differentiable at $t$ with derivative $\left< v'(t), w(t) \right> + \left< v(t), w'(t) \right>$. + \item \textit{(Vanishing derivative.)} Let $V$ be a normed space and let $g : \mathbb{R} \rightarrow V$ be differentiable at every point, with $g'(t) = 0$ for all $t \in \mathbb{R}$. Then $g$ is constant. The differentiability hypothesis is stated explicitly because in Mathlib the derivative of a function at a point where it is not differentiable is defined to be $0$ (\texttt{deriv\_zero\_of\_not\_differentiableAt}), so the vanishing of the derivative does not by itself imply differentiability. + \end{enumerate} + In Mathlib, point 1 is \texttt{HasDerivAt.inner}, whose conclusion $\left< f(x), g' \right> + \left< f', g(x) \right>$ is the formula above with the summands exchanged; and point 2 is \texttt{is\_const\_of\_deriv\_eq\_zero}, which states that a differentiable function with $\text{deriv}\, f\, x = 0$ for all $x$ satisfies $f(x) = f(y)$ for all $x, y$, for any normed codomain. +\end{proposition} +\begin{proof} +\leanok +\end{proof} + +The equation $y' = cy$ follows from point 2 directly. + +\begin{lemma}[The Equation $y' = cy$] + \label{lmm:linear-ode-scalar} + \lean{Physicslib4.Spectral.Stone.eq_mul_exp_of_hasDerivAt} + \uses{prpstn:calculus-facts} + \leanok + Let $c \in \mathbb{C}$. A differentiable function $y : \mathbb{R} \rightarrow \mathbb{C}$ satisfying $y'(t) = cy(t)$ for all $t$ is given by $y(t) = y(0)e^{ct}$. +\end{lemma} +\begin{proof} + \leanok + \uses{prpstn:calculus-facts} +The function $z(t) \equiv y(t)e^{-ct}$ is differentiable everywhere, as a product of differentiable functions, with derivative $y'(t)e^{-ct} - cy(t)e^{-ct} = 0$. By point 2 of Proposition~\ref{prpstn:calculus-facts}, with $V = \mathbb{C}$, $z$ is constant, equal to its value $z(0) = y(0)$; multiplying by $e^{ct}$ gives $y(t) = y(0)e^{ct}$. +\end{proof} + +The fourth is the calculus of convolutions, used in the proof of Lemma~\ref{lmm:hall-10.18}. For $f : \mathbb{R} \rightarrow \mathbb{R}$ and $g : \mathbb{R} \rightarrow \mathbf{H}$ the \textit{convolution} is +\begin{align} + (f \star g)(x) \equiv \int_{-\infty}^{\infty} f(\tau)\, g(x - \tau) \, d\tau, +\end{align} +a Bochner integral~(\ref{thrm:bochner-integral}) with respect to Lebesgue measure; in Mathlib it is \texttt{MeasureTheory.convolution} with the bilinear map \texttt{ContinuousLinearMap.lsmul}, the formula being \texttt{MeasureTheory.convolution\_lsmul}. + +\begin{lemma}[Facts about Convolution] + \label{lmm:convolution-facts} + \lean{HasCompactSupport.hasDerivAt_convolution_left, ContDiffBump.convolution_tendsto_right_of_continuous} + \uses{thrm:bochner-integral, lmm:smooth-approximate-identity} + \leanok + Let $g : \mathbb{R} \rightarrow \mathbf{H}$ be continuous. + \begin{enumerate} + \item \textit{(Differentiation.)} If $f : \mathbb{R} \rightarrow \mathbb{R}$ is continuously differentiable with compact support, then $f \star g$ is differentiable at every $x_0 \in \mathbb{R}$, with derivative $(f' \star g)(x_0)$. + \item \textit{(Approximation.)} If $\{f_n\}$ is the smooth approximate identity of Lemma~\ref{lmm:smooth-approximate-identity}, then $(f_n \star g)(x_0) \to g(x_0)$ as $n \to \infty$, for every $x_0 \in \mathbb{R}$. + \end{enumerate} + In Mathlib, point 1 is \texttt{HasCompactSupport.hasDerivAt\_convolution\_left}, whose hypothesis that $g$ be locally integrable holds for continuous $g$ by \texttt{Continuous.locallyIntegrable}, and whose measure-theoretic side conditions \texttt{IsAddLeftInvariant}, \texttt{IsNegInvariant} and \texttt{SFinite} hold for Lebesgue measure \texttt{volume} on $\mathbb{R}$, which is invariant under translation and negation and $\sigma$-finite (in Mathlib these are found by instance search); the convolution is taken with $L = \texttt{ContinuousLinearMap.lsmul}\ \mathbb{R}\ \mathbb{R}$, so $\mathbf{H}$ is regarded as a real normed space; and point 2 is \texttt{ContDiffBump.convolution\_tendsto\_right\_of\_continuous}, applied to the bump functions of Lemma~\ref{lmm:smooth-approximate-identity}, whose outer radii $1/n$ tend to $0$. +\end{lemma} +\begin{proof} +\leanok +\end{proof} + +\subsection{From a Self-Adjoint Operator to a Unitary Group} +One direction of the correspondence follows from the spectral theorem: every self-adjoint operator generates a strongly continuous one-parameter unitary group, and is recovered as its generator. This is the easier direction, and the proof of Stone's Theorem will use all three of its parts. Throughout this subsection $A$ is a self-adjoint operator on $\mathbf{H}$, $\mu^A$ is its spectral measure~(\ref{def:spectral-measure}) and $\mu^A_\psi$ the associated scalar measure, which is finite with total mass $\left\| \psi \right\|^2$ by Lemma~\ref{lmm:associated-measure-total-mass}; and $f_t(\lambda) \equiv e^{it\lambda}$ for $t \in \mathbb{R}$. Since $\lvert f_t(\lambda) \rvert = 1$ for every real $\lambda$, each $f_t$ is bounded, and it is measurable, being continuous. + +\begin{lemma}[The Bounded Integral of $e^{it\lambda}$ is Unitary] + \label{lmm:exp-unitary} + \lean{Physicslib4.Spectral.Stone.integral_expFun_mem_unitary} + \uses{def:hall-9.5, def:spectral-measure, thrm:operator-valued-integration, def:unitary-operator} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and $t \in \mathbb{R}$. Then the bounded integral $\int_{\mathbb{R}} f_t \, d\mu^A \in \mathcal{B}(\mathbf{H})$, where $f_t(\lambda) = e^{it\lambda}$, is unitary. +\end{lemma} +\begin{proof} + \leanok + \uses{def:spectral-measure, thrm:operator-valued-integration, prpstn:integral-multiplicative, prpstn:integral-conjugation, def:projection-valued-measure, def:unitary-operator, def:identity-operator, def:adjoint-bounded} +Write $V \equiv \int_{\mathbb{R}} f_t \, d\mu^A$. The integral against a projection-valued measure is multiplicative and intertwines complex conjugation with the adjoint on bounded measurable functions: by Proposition~\ref{prpstn:integral-multiplicative} and Proposition~\ref{prpstn:integral-conjugation}, $\int fg \, d\mu^A = \left( \int f \, d\mu^A \right)\left( \int g \, d\mu^A \right)$ and $\int \overline{f} \, d\mu^A = \left( \int f \, d\mu^A \right)^*$ for bounded measurable $f,g$. Since $\overline{f_t}f_t = f_t\overline{f_t} = 1$ pointwise and the constant function $1$ integrates to $\mathbf{1}$ — because $\mu^A(\mathbb{R}) = \mathbf{1}$ by the definition of a projection-valued measure~(\ref{def:projection-valued-measure}) — we obtain +\begin{align} + V^*V = VV^* = \mathbf{1}. +\end{align} +From this $V$ is unitary in the sense of Definition~\ref{def:unitary-operator}: it is injective, since $V\psi = 0$ gives $\psi = V^*V\psi = 0$, and surjective, since $\chi = V\left( V^*\chi \right)$ for any $\chi$; and it preserves the inner product, $\left< V\phi, V\psi \right> = \left< \phi, V^*V\psi \right> = \left< \phi, \psi \right>$, by the definition of the adjoint~(\ref{def:adjoint-bounded}). +\end{proof} + +\begin{definition}[The Unitary Group $e^{itA}$] + \label{def:exp-unitary-group} + \lean{Physicslib4.Spectral.Stone.expFun, Physicslib4.Spectral.Stone.expUnitary, Physicslib4.Spectral.Stone.functionalCalculus_expFun} + \uses{def:hall-9.5, def:hall-10.5, def:spectral-measure, lmm:functional-calculus-bounded, lmm:exp-unitary} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$. For each $t \in \mathbb{R}$ let + \begin{align} + e^{itA} \equiv f_t(A) = \int_{\mathbb{R}} e^{it\lambda} \, d\mu^A(\lambda), + \end{align} + the functional calculus~(\ref{def:hall-10.5}) applied to the bounded measurable function $f_t(\lambda) = e^{it\lambda}$. By Lemma~\ref{lmm:functional-calculus-bounded}, $e^{itA}$ is a bounded operator defined on all of $\mathbf{H}$ and coincides with the bounded integral $\int_{\mathbb{R}} f_t \, d\mu^A$ of Section~\ref{sctn:spectral-theorems}, which is unitary by Lemma~\ref{lmm:exp-unitary}. So $t \mapsto e^{itA}$ is a family of unitary operators indexed by $\mathbb{R}$; Lemma~\ref{lmm:exp-group-law} below shows that it is a one-parameter unitary group in the sense of Definition~\ref{def:hall-10.11}. The identification with the bounded integral is what licenses the use, below, of the results proved in Section~\ref{sctn:spectral-theorems} for the bounded integral. +\end{definition} + +\begin{lemma}[The Group Law for $e^{itA}$] + \label{lmm:exp-group-law} + \lean{Physicslib4.Spectral.Stone.isOneParameterUnitaryGroup_expUnitary} + \uses{def:exp-unitary-group, def:hall-10.11} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$. Then $e^{i0A} = \mathbf{1}$ and $e^{i(s+t)A} = e^{isA}e^{itA}$ for all $s, t \in \mathbb{R}$; so $t \mapsto e^{itA}$ is a one-parameter unitary group. +\end{lemma} +\begin{proof} + \leanok + \uses{def:exp-unitary-group, prpstn:integral-multiplicative, def:projection-valued-measure, def:identity-operator} +The constant function $f_0 = 1$ gives $e^{i0A} = \mu^A(\mathbb{R}) = \mathbf{1}$, by the definition of a projection-valued measure~(\ref{def:projection-valued-measure}). And $f_{s+t} = f_sf_t$ pointwise, so multiplicativity of the bounded integral, Proposition~\ref{prpstn:integral-multiplicative}, gives $e^{i(s+t)A} = e^{isA}e^{itA}$. Each $e^{itA}$ is unitary by Definition~\ref{def:exp-unitary-group}. +\end{proof} + +\begin{lemma}[$e^{itA}$ is Strongly Continuous] + \label{lmm:exp-strongly-continuous} + \lean{Physicslib4.Spectral.Stone.isStronglyContinuous_expUnitary} + \uses{def:exp-unitary-group, def:hall-10.11} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$. Then the one-parameter unitary group $t \mapsto e^{itA}$ is strongly continuous. +\end{lemma} +\begin{proof} + \leanok + \uses{def:exp-unitary-group, lmm:exp-group-law, thrm:operator-valued-integration, lmm:norm-identity-bounded-integral, lmm:associated-measure-total-mass, thrm:dominated-convergence-theorem} +Write $U(t) = e^{itA}$, and fix $\psi \in \mathbf{H}$ and $t \in \mathbb{R}$. The map $f \mapsto \int_{\mathbb{R}} f \, d\mu^A$ is linear on bounded measurable functions by Theorem~\ref{thrm:operator-valued-integration}, so $U(t) - U(s) = \int_{\mathbb{R}} (f_t - f_s) \, d\mu^A$; since $f_t - f_s$ is bounded and measurable, Lemma~\ref{lmm:norm-identity-bounded-integral} gives +\begin{align} + \left\| U(t)\psi - U(s)\psi \right\|^2 = \int_{\mathbb{R}} \left\lvert e^{it\lambda} - e^{is\lambda} \right\rvert^2 \, d\mu^A_\psi(\lambda). +\end{align} +We show the right-hand side tends to $0$ as $s \to t$, by the \textbf{Dominated Convergence Theorem}~(\ref{thrm:dominated-convergence-theorem}) in its filter form, along the countably generated filter of neighbourhoods of $t$ (in Mathlib, \texttt{MeasureTheory.tendsto\_integral\_filter\_of\_dominated\_convergence}). The integrands are measurable, being continuous; they converge pointwise to $0$ as $s \to t$, since $s \mapsto e^{is\lambda}$ is continuous for each fixed $\lambda$; and they are dominated by the constant function $4$, because $\lvert e^{it\lambda} - e^{is\lambda} \rvert \le \lvert e^{it\lambda} \rvert + \lvert e^{is\lambda} \rvert = 2$. The constant $4$ is $\mu^A_\psi$-integrable precisely because $\mu^A_\psi$ is a \textit{finite} measure, of total mass $\left\| \psi \right\|^2$, by Lemma~\ref{lmm:associated-measure-total-mass}. Hence $\left\| U(t)\psi - U(s)\psi \right\| \to 0$ as $s \to t$. +\end{proof} + +The derivative of $e^{itA}$ at $t = 0$ involves the unbounded function $\iota(\lambda) = \lambda$ alongside bounded ones. The following lemma handles the difference of a bounded and an unbounded function. + +\begin{lemma}[Subtracting from a Bounded Function] + \label{lmm:functional-calculus-sub-bounded} + \lean{Physicslib4.Spectral.Stone.functionalCalculus_sub_of_bddMeasurable} + \uses{def:hall-9.5, def:hall-10.5, lmm:functional-calculus-bounded} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$, let $f : \mathbb{R} \to \mathbb{C}$ be measurable, and let $g : \mathbb{R} \to \mathbb{C}$ be bounded and measurable. Then $W_{g - f} = W_f$, and + \begin{align} + (g - f)(A)\psi = g(A)\psi - f(A)\psi \qquad \text{for all } \psi \in W_f. + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.5, lmm:functional-calculus-bounded, prpstn:hall-10.1, prpstn:hall-10.2, lmm:associated-measure-total-mass, def:hall-quadratic-form-on-a-subspace} +Write $h \equiv g - f$, and let $M$ bound $\lvert g \rvert$. + +\textit{The two domains coincide.} For any $\xi \in \mathbf{H}$ the pointwise inequalities +\begin{align} + \lvert h \rvert^2 \le 2\lvert g \rvert^2 + 2\lvert f \rvert^2, \qquad \lvert f \rvert^2 \le 2\lvert g \rvert^2 + 2\lvert h \rvert^2 +\end{align} +hold — each is $\lvert a + b \rvert^2 \le 2\lvert a \rvert^2 + 2\lvert b \rvert^2$ — and $\int \lvert g \rvert^2 \, d\mu^A_\xi \le M^2\left\| \xi \right\|^2 < \infty$ because $\mu^A_\xi$ has total mass $\left\| \xi \right\|^2$ by Lemma~\ref{lmm:associated-measure-total-mass}. Integrating the first inequality against $\mu^A_\xi$ shows $W_f \subset W_h$, and the second shows $W_h \subset W_f$. + +\textit{The identity.} By Part 1 of Proposition~\ref{prpstn:hall-10.2}, for each measurable $k$ the map $Q_k(\xi) = \int_{\mathbb{R}} k \, d\mu^A_\xi$ is a quadratic form on $W_k$, finite there. On the common domain $W_f = W_h \subset W_g = \mathbf{H}$ (Lemma~\ref{lmm:functional-calculus-bounded}), linearity of the scalar integral gives $Q_h = Q_g - Q_f$; since the polarization formula of Definition~\ref{def:hall-quadratic-form-on-a-subspace} expresses the associated sesquilinear form as a fixed linear combination of values of $Q$, it follows that $L_h(\phi,\psi) = L_g(\phi,\psi) - L_f(\phi,\psi)$ for all $\phi,\psi \in W_f$. By the defining property in Proposition~\ref{prpstn:hall-10.1}, applied to $g$ and to $f$, the vector $\chi \equiv g(A)\psi - f(A)\psi$ therefore satisfies +\begin{align} + \left< \phi, \chi \right> = L_g(\phi,\psi) - L_f(\phi,\psi) = L_h(\phi,\psi) \qquad \text{for all } \phi \in W_f = W_h. +\end{align} +By the uniqueness in Part 3 of Proposition~\ref{prpstn:hall-10.2}, applied to $h$, the representing vector is unique, so $\chi = h(A)\psi$. +\end{proof} + +\begin{lemma}[Norm Identity for the Difference Quotient] + \label{lmm:exp-quotient-norm-identity} + \lean{Physicslib4.Spectral.Stone.norm_sq_generatorQuotient_expUnitary_sub} + \uses{def:exp-unitary-group, def:spectral-measure} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and $U(t) = e^{itA}$. For $t \ne 0$ write + \begin{align} + g_t(\lambda) \equiv \frac{1}{i}\frac{e^{it\lambda} - 1}{t}. + \end{align} + Then for every $\psi \in \text{Dom}(A)$ and every $t \ne 0$, + \begin{align} + \left\| \frac{1}{i}\frac{U(t)\psi - \psi}{t} - A\psi \right\|^2 = \int_{\mathbb{R}} \left\lvert g_t(\lambda) - \lambda \right\rvert^2 \, d\mu^A_\psi(\lambda). + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{def:exp-unitary-group, def:spectral-measure, thrm:hall-10.4, thrm:operator-valued-integration, def:projection-valued-measure, lmm:functional-calculus-bounded, lmm:functional-calculus-sub-bounded, prpstn:hall-10.2} +The function $g_t$ is measurable, being continuous, and bounded, with $\lvert g_t(\lambda) \rvert \le 2/\lvert t \rvert$ since $\lvert e^{it\lambda} \rvert = 1$. The map $f \mapsto \int_{\mathbb{R}} f \, d\mu^A$ is linear on bounded measurable functions by Theorem~\ref{thrm:operator-valued-integration}, and the constant function $1$ gives $\mathbf{1}$, so by Lemma~\ref{lmm:functional-calculus-bounded} +\begin{align} + g_t(A) = \frac{1}{i}\frac{U(t) - \mathbf{1}}{t}. +\end{align} +By Definition~\ref{def:spectral-measure}, $A = \iota(A)$ with $\text{Dom}(A) = W_\iota$, for $\iota(\lambda) = \lambda$. So Lemma~\ref{lmm:functional-calculus-sub-bounded}, applied with $g = g_t$ and $f = \iota$, gives +\begin{align} + \frac{1}{i}\frac{U(t)\psi - \psi}{t} - A\psi = (g_t - \iota)(A)\psi, +\end{align} +and Part 3 of Proposition~\ref{prpstn:hall-10.2}, applied to the measurable function $g_t - \iota$, gives $\left\| (g_t - \iota)(A)\psi \right\|^2 = \int_{\mathbb{R}} \lvert g_t - \iota \rvert^2 \, d\mu^A_\psi$. +\end{proof} + +\begin{lemma}[The Derivative of $e^{itA}$ at $0$] + \label{lmm:exp-derivative-at-zero} + \lean{Physicslib4.Spectral.Stone.tendsto_generatorQuotient_expUnitary} + \uses{def:exp-unitary-group} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and $U(t) = e^{itA}$. Then for all $\psi \in \text{Dom}(A)$, + \begin{align} + \frac{1}{i} \frac{U(t)\psi - \psi}{t} \longrightarrow A\psi \qquad \text{as } t \rightarrow 0,\ t \ne 0, + \end{align} + in the norm topology on $\mathbf{H}$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:exp-quotient-norm-identity, def:spectral-measure, thrm:dominated-convergence-theorem} +By Lemma~\ref{lmm:exp-quotient-norm-identity} it suffices to show that $\int_{\mathbb{R}} \lvert g_t(\lambda) - \lambda \rvert^2 \, d\mu^A_\psi(\lambda) \to 0$ along the punctured filter $t \to 0$, $t \ne 0$, which is countably generated; we apply the \textbf{Dominated Convergence Theorem}~(\ref{thrm:dominated-convergence-theorem}) in its filter form (in Mathlib, \texttt{MeasureTheory.tendsto\_integral\_filter\_of\_dominated\_convergence}). The integrands are measurable, being continuous. They are dominated by $4\lambda^2$: the bound $\lvert e^{ix} - 1 \rvert \le \lvert x \rvert$ for real $x$ (in Mathlib, \texttt{Real.norm\_exp\_I\_mul\_ofReal\_sub\_one\_le}), applied with $x = t\lambda$, gives $\lvert g_t(\lambda) \rvert \le \lvert \lambda \rvert$, so $\lvert g_t(\lambda) - \lambda \rvert \le 2\lvert \lambda \rvert$; and $4\lambda^2$ is $\mu^A_\psi$-integrable because $\psi \in \text{Dom}(A) = W_\iota$ by Definition~\ref{def:spectral-measure}. Finally, the integrands tend to $0$ pointwise, since $s \mapsto e^{is\lambda}$ has derivative $i\lambda$ at $s = 0$, so that $g_t(\lambda) \to \lambda$. +\end{proof} + +\begin{proposition}[Exponentiating a Self-Adjoint Operator] + \label{prpstn:hall-10.14} + \lean{Physicslib4.Spectral.Stone.generator_expUnitary} + \uses{def:hall-9.5, def:hall-10.11, def:hall-10.13, def:exp-unitary-group, def:unitary-operator} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and, for each $t \in \mathbb{R}$, define + \begin{align} + U(t) \equiv e^{itA}, + \end{align} + where $e^{itA}$ is the operator of Definition~\ref{def:exp-unitary-group}, given by the functional calculus~(\ref{def:hall-10.5}) applied to the function $\lambda \mapsto e^{it\lambda}$. Then the following hold. + \begin{enumerate} + \item $U(\cdot)$ is a strongly continuous one-parameter unitary group. + \item For all $\psi \in \text{Dom}(A)$, + \begin{align} + A\psi = \lim\limits_{t \rightarrow 0,\ t \ne 0} \frac{1}{i} \frac{U(t)\psi - \psi}{t}, + \end{align} + the limit being in the norm topology on $\mathbf{H}$. + \item For all $\psi \in \mathbf{H}$, if the limit + \begin{align} + \lim\limits_{t \rightarrow 0,\ t \ne 0} \frac{1}{i} \frac{U(t)\psi - \psi}{t} + \end{align} + exists in the norm topology on $\mathbf{H}$, then $\psi \in \text{Dom}(A)$ and the limit equals $A\psi$. + \end{enumerate} + Points 2 and 3 together say exactly that the infinitesimal generator of $U(\cdot)$, in the sense of Definition~\ref{def:hall-10.13}, is $A$ itself, with equality of domains. +\end{proposition} +\begin{proof} + \leanok + \uses{def:exp-unitary-group, lmm:exp-group-law, lmm:exp-strongly-continuous, lmm:exp-derivative-at-zero, lmm:generator-spec, lmm:generator-symmetry-identity, lmm:self-adjoint-maximally-symmetric, def:hall-9.3} +\textbf{Point 1.} Each $U(t)$ is unitary by Definition~\ref{def:exp-unitary-group}; the group law is Lemma~\ref{lmm:exp-group-law}; and strong continuity is Lemma~\ref{lmm:exp-strongly-continuous}. + +\textbf{Point 2} is Lemma~\ref{lmm:exp-derivative-at-zero}. + +\textbf{Point 3.} Let $B$ denote the infinitesimal generator of $U(\cdot)$, as in Definition~\ref{def:hall-10.13}. By Point 2 and Lemma~\ref{lmm:generator-spec}, $B$ is an extension of $A$~(\ref{def:hall-9.3}): every $\psi \in \text{Dom}(A)$ lies in $\text{Dom}(B)$, with $B\psi = A\psi$. By Lemma~\ref{lmm:generator-symmetry-identity}, $B$ satisfies the symmetry identity, so $B$ is symmetric in the density-free sense of the Lean formalization; the density of $\text{Dom}(B) \supset \text{Dom}(A)$, needed for symmetry in the sense of Definition~\ref{def:hall-9.2}, is supplied inside the proof of Lemma~\ref{lmm:self-adjoint-maximally-symmetric}. + +So $B$ is a symmetric extension of the self-adjoint operator $A$. By Lemma~\ref{lmm:self-adjoint-maximally-symmetric}, $B = A$ with equality of domains. That is exactly Point 3, by Lemma~\ref{lmm:generator-spec}: if the defining limit exists at $\psi$, then $\psi \in \text{Dom}(B) = \text{Dom}(A)$ and the limit is $B\psi = A\psi$. +\end{proof} + +\subsection{Two Intermediate Results} +Before proving Stone's Theorem we establish two facts about an arbitrary strongly continuous one-parameter unitary group and its generator: that the group preserves the generator's domain and differentiates to it, and that the generator is densely defined. + +\begin{lemma}[Differentiating an Orbit] + \label{lmm:orbit-hasDerivAt} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.hasDerivAt_orbit} + \uses{def:hall-10.11, def:hall-10.13} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group with infinitesimal generator $A$, and let $\psi \in \text{Dom}(A)$. Then for every $t \in \mathbb{R}$ the curve $s \mapsto U(s)\psi$ is differentiable at $t$ in the norm topology on $\mathbf{H}$, with derivative $iU(t)A\psi$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, lmm:generator-spec, def:bounded-operator-notation} +By the group law~(\ref{def:hall-10.11}), $U(t+h) = U(t)U(h)$, so for $h \ne 0$ +\begin{align} + \frac{U(t+h)\psi - U(t)\psi}{h} = U(t)\left( \frac{U(h)\psi - \psi}{h} \right). +\end{align} +By Lemma~\ref{lmm:generator-spec}, $\left( U(h)\psi - \psi \right)/h \to iA\psi$ as $h \to 0$, $h \ne 0$ — the defining limit multiplied by $i$. The operator $U(t)$ is bounded, hence continuous~(\ref{def:bounded-operator-notation}), so it may be passed through the limit, giving the limit $U(t)(iA\psi) = iU(t)A\psi$. +\end{proof} + +\begin{lemma}[The Group Commutes with its Generator] + \label{lmm:generator-commutes} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.generator_apply_comm} + \uses{def:hall-10.11, def:hall-10.13} + \leanok + Let $U(\cdot)$ be a one-parameter unitary group with infinitesimal generator $A$, and let $\psi \in \text{Dom}(A)$. Then for every $t \in \mathbb{R}$, $U(t)\psi \in \text{Dom}(A)$ and $AU(t)\psi = U(t)A\psi$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, lmm:generator-spec, def:bounded-operator-notation} +By the group law~(\ref{def:hall-10.11}), $U(h)U(t) = U(h+t) = U(t)U(h)$, so for $h \ne 0$ +\begin{align} + \frac{1}{i}\frac{U(h)\left( U(t)\psi \right) - U(t)\psi}{h} = U(t)\left( \frac{1}{i}\frac{U(h)\psi - \psi}{h} \right). +\end{align} +By Lemma~\ref{lmm:generator-spec} the bracket tends to $A\psi$ as $h \to 0$, $h \ne 0$, and $U(t)$, being bounded~(\ref{def:bounded-operator-notation}), passes through the limit; so the left-hand side tends to $U(t)A\psi$. By Lemma~\ref{lmm:generator-spec} applied to the vector $U(t)\psi$, this says exactly that $U(t)\psi \in \text{Dom}(A)$ with $AU(t)\psi = U(t)A\psi$. +\end{proof} + +\begin{lemma}[The Group Preserves the Generator's Domain] + \label{lmm:hall-10.17} + \lean{Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.hasDerivAt_orbit_generator} + \uses{def:hall-10.11, def:hall-10.13, def:unitary-operator, def:bounded-operator-notation} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group and let $A$ be its infinitesimal generator. If $\psi \in \text{Dom}(A)$, then for all $t \in \mathbb{R}$ the vector $U(t)\psi$ belongs to $\text{Dom}(A)$ and + \begin{align} + \lim\limits_{h \rightarrow 0} \frac{U(t+h)\psi - U(t)\psi}{h} = iU(t)A\psi = iAU(t)\psi. + \end{align} + In particular the curve $t \mapsto U(t)\psi$ is differentiable in the norm topology on $\mathbf{H}$, with derivative $iAU(t)\psi$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:orbit-hasDerivAt, lmm:generator-commutes} +Fix $\psi \in \text{Dom}(A)$ and $t \in \mathbb{R}$. By Lemma~\ref{lmm:orbit-hasDerivAt} the limit exists and equals $iU(t)A\psi$, which is the first equality. By Lemma~\ref{lmm:generator-commutes}, $U(t)\psi \in \text{Dom}(A)$ and $U(t)A\psi = AU(t)\psi$, which gives the second equality. +\end{proof} + +The density of the generator's domain is proved by smoothing: averaging the orbit of a vector against a smooth compactly supported function produces a vector in the domain, and averaging against a smooth approximate identity recovers the original vector in the limit. The averages are convolutions, so the calculus of convolutions~(\ref{lmm:convolution-facts}) does the analytic work. + +\begin{lemma}[Averages of an Orbit are Convolutions] + \label{lmm:averaging-translate} + \lean{Physicslib4.Spectral.Stone.average_eq_convolution, Physicslib4.Spectral.Stone.average} + \uses{def:hall-10.11, thrm:bochner-integral, lmm:convolution-facts} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$, let $\psi \in \mathbf{H}$, and let $f : \mathbb{R} \rightarrow \mathbb{R}$ be continuous with compact support. Write $g_\psi(x) \equiv U(-x)\psi$, a continuous function $\mathbb{R} \rightarrow \mathbf{H}$ by strong continuity of $U(\cdot)$, and define the \textit{average} + \begin{align} + B_f\psi \equiv \int_{-\infty}^{\infty} f(\tau)U(\tau)\psi \, d\tau. + \end{align} + Then for every $t \in \mathbb{R}$, + \begin{align} + U(t)B_f\psi = (f \star g_\psi)(-t); + \end{align} + in particular $B_f\psi = (f \star g_\psi)(0)$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.11, thrm:bochner-integral, def:bounded-operator-notation} +The map $\tau \mapsto f(\tau)U(\tau)\psi$ is continuous — by strong continuity of $U(\cdot)$~(\ref{def:hall-10.11}) and continuity of $f$ — and compactly supported, hence Bochner integrable by point 2 of Theorem~\ref{thrm:bochner-integral}. By point 1, applied to the bounded operator $U(t)$, and the group law $U(t)U(\tau) = U(t+\tau)$, +\begin{align} + U(t)B_f\psi = \int_{-\infty}^{\infty} f(\tau)U(t+\tau)\psi \, d\tau = \int_{-\infty}^{\infty} f(\tau)\, g_\psi(-t-\tau) \, d\tau = (f \star g_\psi)(-t). +\end{align} +The case $t = 0$ uses $U(0) = \mathbf{1}$. +\end{proof} + +\begin{lemma}[Averages Lie in the Generator's Domain] + \label{lmm:averaging-in-generator-domain} + \lean{Physicslib4.Spectral.Stone.average_mem_generator_domain} + \uses{def:hall-10.11, def:hall-10.13, lmm:averaging-translate} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$, let $\psi \in \mathbf{H}$, and let $f : \mathbb{R} \rightarrow \mathbb{R}$ be continuously differentiable with compact support. Then $B_f\psi \in \text{Dom}(A)$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:averaging-translate, lmm:convolution-facts, lmm:generator-spec} +Write $F \equiv f \star g_\psi$. By point 1 of Lemma~\ref{lmm:convolution-facts}, $F$ is differentiable at $0$, with derivative $F'(0) = (f' \star g_\psi)(0)$; composing with $t \mapsto -t$, the quotient $\left( F(-t) - F(0) \right)/t$ tends to $-F'(0)$ as $t \to 0$, $t \ne 0$. By Lemma~\ref{lmm:averaging-translate}, $F(-t) = U(t)B_f\psi$ and $F(0) = B_f\psi$, so +\begin{align} + \frac{1}{i}\frac{U(t)B_f\psi - B_f\psi}{t} \longrightarrow -\frac{1}{i}F'(0) = i\int_{-\infty}^{\infty} f'(\tau)U(\tau)\psi \, d\tau \qquad \text{as } t \rightarrow 0,\ t \ne 0. +\end{align} +By Lemma~\ref{lmm:generator-spec}, $B_f\psi \in \text{Dom}(A)$. +\end{proof} + +\begin{lemma}[Averages Approximate the Vector] + \label{lmm:averaging-approximates} + \lean{Physicslib4.Spectral.Stone.tendsto_average_bump} + \uses{def:hall-10.11, lmm:averaging-translate, lmm:smooth-approximate-identity} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$, let $\psi \in \mathbf{H}$, and let $\{f_n\}$ be the smooth approximate identity of Lemma~\ref{lmm:smooth-approximate-identity}. Then $B_{f_n}\psi \to \psi$ as $n \to \infty$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:averaging-translate, lmm:convolution-facts, lmm:smooth-approximate-identity, def:hall-10.11} +Each $f_n$ is continuous with compact support, so $B_{f_n}\psi = (f_n \star g_\psi)(0)$ by Lemma~\ref{lmm:averaging-translate}. Since $g_\psi$ is continuous, point 2 of Lemma~\ref{lmm:convolution-facts} gives $(f_n \star g_\psi)(0) \to g_\psi(0) = U(0)\psi = \psi$. +\end{proof} + +\begin{lemma}[The Generator is Densely Defined] + \label{lmm:hall-10.18} + \lean{Physicslib4.Spectral.Stone.hasDenseDomain_generator} + \uses{def:hall-10.11, def:hall-10.13, def:hall-3.1, def:unitary-operator} + \leanok + For any strongly continuous one-parameter unitary group $U(\cdot)$ on $\mathbf{H}$, the infinitesimal generator $A$ is densely defined; that is, $\text{Dom}(A)$ is dense in $\mathbf{H}$. In particular $A$ is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.13, def:hall-3.1, lmm:smooth-approximate-identity, lmm:averaging-in-generator-domain, lmm:averaging-approximates} +Fix $\psi \in \mathbf{H}$ and let $\{f_n\}$ be the smooth approximate identity of Lemma~\ref{lmm:smooth-approximate-identity}. Each $f_n$ is smooth with compact support, so $B_{f_n}\psi \in \text{Dom}(A)$ by Lemma~\ref{lmm:averaging-in-generator-domain}; and $B_{f_n}\psi \to \psi$ by Lemma~\ref{lmm:averaging-approximates}. + +Every $\psi \in \mathbf{H}$ is therefore a limit of vectors $B_{f_n}\psi$ lying in $\text{Dom}(A)$, so $\text{Dom}(A)$ is dense in $\mathbf{H}$. Being also a subspace, as noted in Definition~\ref{def:hall-10.13}, $A$ is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}. +\end{proof} + +\subsection{Stone's Theorem} +We can now prove the theorem. It is the converse of Proposition~\ref{prpstn:hall-10.14}: not only does every self-adjoint operator generate a strongly continuous one-parameter unitary group, but every such group arises this way, from a self-adjoint generator that is uniquely determined by the group. We first establish, in a sequence of lemmas, that the generator is essentially self-adjoint and that the group agrees with the unitary group generated by the closure of the generator. + +\begin{lemma}[An Ordinary Differential Equation along Orbits] + \label{lmm:orbit-inner-ode} + \lean{Physicslib4.Spectral.Stone.hasDerivAt_inner_orbit} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.1, lmm:hall-10.18} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$, densely defined by Lemma~\ref{lmm:hall-10.18}, so that its adjoint $A^*$ is defined~(\ref{def:hall-9.1}). Let $\varepsilon \in \{1, -1\}$, let $\psi \in \text{Dom}(A^*)$ with $A^*\psi = \varepsilon i\psi$, let $\phi \in \text{Dom}(A)$, and set + \begin{align} + y(t) \equiv \left< U(t)\phi, \psi \right>. + \end{align} + Then $y : \mathbb{R} \rightarrow \mathbb{C}$ is differentiable, with $y'(t) = \varepsilon y(t)$ for all $t \in \mathbb{R}$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:hall-10.17, prpstn:calculus-facts, lmm:characterizing-adjoint-domain-membership, def:inner-product} +By Lemma~\ref{lmm:hall-10.17}, $U(t)\phi \in \text{Dom}(A)$ for every $t$ and $t \mapsto U(t)\phi$ is differentiable with derivative $iAU(t)\phi$. Hence by part 1 of Proposition~\ref{prpstn:calculus-facts}, applied with the constant second argument $\psi$, $y$ is differentiable. The defining property of the adjoint~(\ref{lmm:characterizing-adjoint-domain-membership}) gives $\left< \psi, A\chi \right> = \left< A^*\psi, \chi \right>$ for $\chi \in \text{Dom}(A)$, and hence, on taking complex conjugates and applying conjugate symmetry~(\ref{def:inner-product}), $\left< A\chi, \psi \right> = \left< \chi, A^*\psi \right>$; applied with $\chi = U(t)\phi$, +\begin{align} + \frac{dy}{dt} = \left< iAU(t)\phi, \psi \right> = \left< iU(t)\phi, A^*\psi \right> = \left< iU(t)\phi, \varepsilon i\psi \right> = \varepsilon\left< U(t)\phi, \psi \right> = \varepsilon y(t), +\end{align} +the fourth equality because the inner product is conjugate-linear in its first argument and linear in its second, so the two factors of $i$ contribute $\overline{i}\,i = 1$. +\end{proof} + +\begin{lemma}[Bounded Solutions of $y' = \pm y$ Vanish] + \label{lmm:bounded-exp-solution-zero} + \lean{Physicslib4.Spectral.Stone.eq_zero_of_hasDerivAt_of_bounded} + \leanok + Let $\varepsilon \in \{1, -1\}$ and let $y : \mathbb{R} \rightarrow \mathbb{C}$ be differentiable and bounded, with $y'(t) = \varepsilon y(t)$ for all $t$. Then $y(0) = 0$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:linear-ode-scalar} +By Lemma~\ref{lmm:linear-ode-scalar} with $c = \varepsilon$, $y(t) = y(0)e^{\varepsilon t}$, so $\lvert y(t) \rvert = \lvert y(0) \rvert e^{\varepsilon t}$. As $t \to \varepsilon\infty$ — that is, $t \to \infty$ if $\varepsilon = 1$ and $t \to -\infty$ if $\varepsilon = -1$ — we have $e^{\varepsilon t} \to \infty$; since $y$ is bounded, $y(0) = 0$. +\end{proof} + +\begin{lemma}[The Deficiency Subspaces of the Generator are Trivial] + \label{lmm:generator-ker-adjoint-trivial} + \lean{Physicslib4.Spectral.Stone.ker_adjoint_generator_subSmul_eq_bot} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.1, def:kernel-of-an-unbounded-operator, def:identity-operator, lmm:hall-10.18} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$. Then $\text{Ker}(A^* - i\mathbf{1}) = \{0\}$ and $\text{Ker}(A^* + i\mathbf{1}) = \{0\}$. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:orbit-inner-ode, lmm:bounded-exp-solution-zero, lmm:hall-10.18, crllr:trivial-complement-characterizes-density, prpstn:hall-a.43, def:unitary-operator} +Let $\varepsilon \in \{1, -1\}$ and suppose $\psi \in \text{Ker}(A^* - \varepsilon i\mathbf{1})$, that is, $\psi \in \text{Dom}(A^*)$ with $A^*\psi = \varepsilon i\psi$. Fix $\phi \in \text{Dom}(A)$ and let $y(t) = \left< U(t)\phi, \psi \right>$. By \textbf{Cauchy–Schwarz}~(\ref{prpstn:hall-a.43}) and because each $U(t)$ is unitary, hence isometric~(\ref{def:unitary-operator}), $\lvert y(t) \rvert \le \left\| \phi \right\| \left\| \psi \right\|$, so $y$ is bounded. By Lemma~\ref{lmm:orbit-inner-ode}, $y' = \varepsilon y$, so Lemma~\ref{lmm:bounded-exp-solution-zero} gives $\left< \phi, \psi \right> = y(0) = 0$. This holds for every $\phi \in \text{Dom}(A)$, which is dense by Lemma~\ref{lmm:hall-10.18}; so $\psi \in \left( \text{Dom}(A) \right)^\perp = \{0\}$ by Corollary~\ref{crllr:trivial-complement-characterizes-density}. +\end{proof} + +\begin{lemma}[The Generator is Essentially Self-Adjoint] + \label{lmm:generator-essentially-self-adjoint} + \lean{Physicslib4.Spectral.Stone.isEssentiallySelfAdjoint_generator} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.2, def:hall-9.6, def:hall-9.7} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$. Then $A$ is densely defined, symmetric and essentially self-adjoint; in particular $A$ is closable and its closure $A^{\text{cl}}$ is self-adjoint. +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:hall-10.18, lmm:generator-symmetry-identity, thrm:hall-9.21, prpstn:hall-9.12, prpstn:hall-9.13, lmm:adjoint-of-scalar-multiple-of-identity, crllr:trivial-complement-characterizes-density, lmm:generator-ker-adjoint-trivial, def:hall-3.1} +Density is Lemma~\ref{lmm:hall-10.18}, so $A$ is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}; and since $\text{Dom}(A)$ is dense, Lemma~\ref{lmm:generator-symmetry-identity} shows that $A$ is symmetric~(\ref{def:hall-9.2}). + +By Theorem~\ref{thrm:hall-9.21} it suffices to show that $\text{Range}(A - i\mathbf{1})$ and $\text{Range}(A + i\mathbf{1})$ are dense in $\mathbf{H}$. By Corollary~\ref{crllr:trivial-complement-characterizes-density} a subspace is dense exactly when its orthogonal complement is $\{0\}$, and by Proposition~\ref{prpstn:hall-9.12} together with Proposition~\ref{prpstn:hall-9.13} — applied to the bounded operator $-i\mathbf{1}$, whose adjoint is $i\mathbf{1}$ by Lemma~\ref{lmm:adjoint-of-scalar-multiple-of-identity} — +\begin{align} + \left( \text{Range}(A - i\mathbf{1}) \right)^\perp = \text{Ker}\left( (A - i\mathbf{1})^* \right) = \text{Ker}(A^* + i\mathbf{1}), +\end{align} +and symmetrically $\left( \text{Range}(A + i\mathbf{1}) \right)^\perp = \text{Ker}(A^* - i\mathbf{1})$. Both kernels are $\{0\}$ by Lemma~\ref{lmm:generator-ker-adjoint-trivial}. So both ranges are dense and $A$ is essentially self-adjoint~(\ref{def:hall-9.7}). +\end{proof} + +\begin{lemma}[Differentiating the Difference of the Orbits] + \label{lmm:orbit-difference-hasDerivAt} + \lean{Physicslib4.Spectral.Stone.hasDerivAt_orbit_sub_expUnitary} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.6, def:exp-unitary-group, lmm:generator-essentially-self-adjoint} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$; by Lemma~\ref{lmm:generator-essentially-self-adjoint} the closure $A^{\text{cl}}$ is self-adjoint, and we let $V(t) \equiv e^{itA^{\text{cl}}}$ as in Definition~\ref{def:exp-unitary-group}. Let $\psi \in \text{Dom}(A)$ and $w(t) \equiv U(t)\psi - V(t)\psi$. Then for every $t \in \mathbb{R}$, $w(t) \in \text{Dom}(A^{\text{cl}})$, and $w$ is differentiable at $t$ in the norm topology on $\mathbf{H}$ with + \begin{align} + w'(t) = iA^{\text{cl}}w(t). + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{prpstn:hall-10.14, lmm:hall-10.17, prpstn:closure-linearity-and-sequential-description} +By Proposition~\ref{prpstn:hall-10.14}, $V(\cdot)$ is a strongly continuous one-parameter unitary group whose infinitesimal generator is $A^{\text{cl}}$. Since $A^{\text{cl}}$ extends $A$ — by Part 3 of Proposition~\ref{prpstn:closure-linearity-and-sequential-description} — we have $\psi \in \text{Dom}(A^{\text{cl}})$, so Lemma~\ref{lmm:hall-10.17} applies to $U(\cdot)$ with generator $A$ and to $V(\cdot)$ with generator $A^{\text{cl}}$. It gives that $U(t)\psi \in \text{Dom}(A) \subset \text{Dom}(A^{\text{cl}})$ and $V(t)\psi \in \text{Dom}(A^{\text{cl}})$, so $w(t) \in \text{Dom}(A^{\text{cl}})$, and, $A^{\text{cl}}$ agreeing with $A$ on $\text{Dom}(A)$ and being linear by Part 1 of Proposition~\ref{prpstn:closure-linearity-and-sequential-description}, +\begin{align} + w'(t) = iAU(t)\psi - iA^{\text{cl}}V(t)\psi = iA^{\text{cl}}w(t). +\end{align} +\end{proof} + +\begin{lemma}[A Solution of $w' = iCw$ with $C$ Symmetric Preserves the Norm] + \label{lmm:norm-const-of-symmetric-derivative} + \lean{Physicslib4.Spectral.Stone.eq_zero_of_hasDerivAt_of_isSymmetric} + \uses{def:hall-9.2} + \leanok + Let $C$ be a symmetric operator on $\mathbf{H}$, in the sense that $\left< C\chi, \chi' \right> = \left< \chi, C\chi' \right>$ for all $\chi, \chi' \in \text{Dom}(C)$~(\ref{def:hall-9.2}). Let $w : \mathbb{R} \rightarrow \mathbf{H}$ be differentiable, with $w(t) \in \text{Dom}(C)$ and $w'(t) = iCw(t)$ for every $t$, and $w(0) = 0$. Then $w(t) = 0$ for every $t \in \mathbb{R}$. +\end{lemma} +\begin{proof} + \leanok + \uses{prpstn:calculus-facts, def:inner-product} +By part 1 of Proposition~\ref{prpstn:calculus-facts}, the complex-valued function $t \mapsto \left< w(t), w(t) \right>$ is differentiable with derivative $\left< w'(t), w(t) \right> + \left< w(t), w'(t) \right> = 2\,\text{Re}\left< w(t), w'(t) \right>$. Composing with the bounded real-linear map $\text{Re} : \mathbb{C} \rightarrow \mathbb{R}$ (in Mathlib, \texttt{Complex.reCLM}), the real-valued function $\left\| w(t) \right\|^2 = \text{Re}\left< w(t), w(t) \right>$ is differentiable with derivative $2\,\text{Re}\left< w(t), w'(t) \right>$. Now +\begin{align} + \text{Re}\left< w(t), w'(t) \right> = \text{Re}\left( i\left< w(t), Cw(t) \right> \right) = 0, +\end{align} +because $\left< w, Cw \right>$ is real: by symmetry and conjugate symmetry of the inner product~(\ref{def:inner-product}), $\left< w, Cw \right> = \left< Cw, w \right> = \overline{\left< w, Cw \right>}$. By part 2 of Proposition~\ref{prpstn:calculus-facts}, with $V = \mathbb{R}$, $\left\| w(t) \right\|^2$ is constant, equal to $\left\| w(0) \right\|^2 = 0$. +\end{proof} + +\begin{lemma}[The Orbits Agree on the Generator's Domain] + \label{lmm:orbits-agree-on-domain} + \lean{Physicslib4.Spectral.Stone.orbit_eq_expUnitary_closure} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.6, def:exp-unitary-group, lmm:generator-essentially-self-adjoint} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$ with infinitesimal generator $A$; by Lemma~\ref{lmm:generator-essentially-self-adjoint} the closure $A^{\text{cl}}$ is self-adjoint, and we let $V(t) \equiv e^{itA^{\text{cl}}}$ as in Definition~\ref{def:exp-unitary-group}. Then + \begin{align} + U(t)\psi = V(t)\psi \qquad \text{for all } t \in \mathbb{R} \text{ and all } \psi \in \text{Dom}(A). + \end{align} +\end{lemma} +\begin{proof} + \leanok + \uses{lmm:orbit-difference-hasDerivAt, lmm:norm-const-of-symmetric-derivative, def:hall-9.5, prpstn:hall-9.4, lmm:exp-group-law} +Fix $\psi \in \text{Dom}(A)$ and set $w(t) \equiv U(t)\psi - V(t)\psi$. By Lemma~\ref{lmm:orbit-difference-hasDerivAt}, $w$ is differentiable with $w(t) \in \text{Dom}(A^{\text{cl}})$ and $w'(t) = iA^{\text{cl}}w(t)$. The operator $A^{\text{cl}}$ is self-adjoint, hence symmetric — by the definition of self-adjointness~(\ref{def:hall-9.5}), $(A^{\text{cl}})^* = A^{\text{cl}}$ is an extension of $A^{\text{cl}}$, which is symmetry by Proposition~\ref{prpstn:hall-9.4}. And $w(0) = U(0)\psi - V(0)\psi = \psi - \psi = 0$, using Lemma~\ref{lmm:exp-group-law} for $V(0) = \mathbf{1}$. So Lemma~\ref{lmm:norm-const-of-symmetric-derivative}, with $C = A^{\text{cl}}$, gives $w(t) = 0$ for every $t$. +\end{proof} + +\begin{lemma}[Bounded Operators Agreeing on a Dense Subspace are Equal] + \label{lmm:agree-on-dense-subspace} + \lean{Physicslib4.Spectral.Stone.eq_of_eqOn_dense} + \uses{def:bounded-operator-notation} + \leanok + Let $S, T \in \mathcal{B}(\mathbf{H})$ and let $D \subset \mathbf{H}$ be a dense subspace with $S\psi = T\psi$ for all $\psi \in D$. Then $S = T$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:bounded-operator-notation, def:induced-norm} +Given $\chi \in \mathbf{H}$, choose $\psi_n \in D$ with $\psi_n \to \chi$; then +\begin{align} + \left\| S\chi - T\chi \right\| &= \left\| \left( S - T \right)(\chi - \psi_n) \right\| \le \left( \left\| S \right\| + \left\| T \right\| \right) \left\| \chi - \psi_n \right\| \longrightarrow 0, +\end{align} +using $S\psi_n = T\psi_n$ in the first step and the operator-norm bound of Definition~\ref{def:bounded-operator-notation} in the second. So $S\chi = T\chi$ for every $\chi \in \mathbf{H}$. +\end{proof} + +\begin{theorem}[Stone's Theorem] + \label{thrm:hall-10.15} + \lean{Physicslib4.Spectral.Stone.stone} + \uses{def:hall-10.11, def:hall-10.13, def:hall-9.5, def:exp-unitary-group, def:unitary-operator} + \leanok + Let $U(\cdot)$ be a strongly continuous one-parameter unitary group on $\mathbf{H}$. Then the infinitesimal generator $A$ of $U(\cdot)$ is densely defined and self-adjoint, and + \begin{align} + U(t) = e^{itA} \qquad \text{for all } t \in \mathbb{R}. + \end{align} + Moreover $A$ is the only self-adjoint operator with this property: if $B$ is self-adjoint and $U(t) = e^{itB}$ for all $t$, then $B = A$. +\end{theorem} +\begin{proof} + \leanok + \uses{def:hall-10.13, def:hall-9.5, def:exp-unitary-group, prpstn:hall-10.14, lmm:hall-10.18, lmm:generator-essentially-self-adjoint, lmm:orbits-agree-on-domain, lmm:agree-on-dense-subspace} +Let $A$ be the infinitesimal generator of $U(\cdot)$. + +\textbf{Steps 1–3: $U(t) = e^{itA^{\text{cl}}}$.} By Lemma~\ref{lmm:generator-essentially-self-adjoint}, $A$ is densely defined and essentially self-adjoint, and $A^{\text{cl}}$ is self-adjoint. Let $V(t) \equiv e^{itA^{\text{cl}}}$~(\ref{def:exp-unitary-group}). By Lemma~\ref{lmm:orbits-agree-on-domain}, $U(t)$ and $V(t)$ agree on $\text{Dom}(A)$, which is a dense subspace by Lemma~\ref{lmm:hall-10.18}; both are bounded, so $U(t) = V(t)$ for every $t$ by Lemma~\ref{lmm:agree-on-dense-subspace}. + +\textbf{Step 4: $A$ is self-adjoint and $U(t) = e^{itA}$.} We now know $U(t) = e^{itA^{\text{cl}}}$. By Points 2 and 3 of Proposition~\ref{prpstn:hall-10.14} applied to the self-adjoint operator $A^{\text{cl}}$, the infinitesimal generator of $U(\cdot)$ is exactly $A^{\text{cl}}$, with equality of domains. But the infinitesimal generator of $U(\cdot)$ is $A$, by definition. Hence +\begin{align} + A = A^{\text{cl}}. +\end{align} +Since $A^{\text{cl}}$ is self-adjoint by Lemma~\ref{lmm:generator-essentially-self-adjoint}, so is $A$; and $U(t) = e^{itA^{\text{cl}}} = e^{itA}$. + +\textbf{Step 5: uniqueness.} Suppose $B$ is self-adjoint with $U(t) = e^{itB}$ for all $t$. By Points 2 and 3 of Proposition~\ref{prpstn:hall-10.14}, the infinitesimal generator of $U(\cdot)$ is $B$, with equality of domains. The generator is $A$ by definition, so $B = A$. +\end{proof} + +\subsection{Summary} +Combining Proposition~\ref{prpstn:hall-10.14} and Theorem~\ref{thrm:hall-10.15}, the assignments +\begin{align} + A \longmapsto \left( t \mapsto e^{itA} \right), \qquad U(\cdot) \longmapsto \text{the infinitesimal generator of } U(\cdot) +\end{align} +are mutually inverse bijections between the self-adjoint operators on $\mathbf{H}$ and the strongly continuous one-parameter unitary groups on $\mathbf{H}$. Proposition~\ref{prpstn:hall-10.14} shows the first assignment lands in the strongly continuous one-parameter unitary groups and that the second undoes it; Theorem~\ref{thrm:hall-10.15} shows the second assignment lands in the self-adjoint operators and that the first undoes it. diff --git a/blueprint/src/sections/sec10/unbounded-spectral-theorems.tex b/blueprint/src/sections/sec10/unbounded-spectral-theorems.tex index 1913a94..c539903 100644 --- a/blueprint/src/sections/sec10/unbounded-spectral-theorems.tex +++ b/blueprint/src/sections/sec10/unbounded-spectral-theorems.tex @@ -31,12 +31,13 @@ \subsubsection{Unbounded Operators} \begin{proposition}[Convergence Facts for Sequences and Series] \label{prpstn:convergence-facts} - \lean{tendsto_atTop_ciSup, Metric.isCompact_of_isClosed_isBounded, IsCompact.tendsto_subseq, Summable.of_norm_bounded, tendsto_nhds_unique, Filter.Tendsto.cauchySeq} + \lean{tendsto_atTop_ciSup, Metric.isCompact_of_isClosed_isBounded, IsCompact.tendsto_subseq, Summable.of_norm_bounded, tendsto_nhds_unique, Filter.Tendsto.cauchySeq, Filter.tendsto_iff_seq_tendsto} \leanok \begin{enumerate} \item \textit{(Monotone bounded sequences.)} A non-decreasing sequence $\{ t_n \}_{n\in\mathbb{N}}$ of real numbers that is bounded above converges, to $\sup_n t_n$. \item \textit{(Bolzano–Weierstrass.)} Every sequence in a closed, bounded subset $K \subset \mathbb{C}$ has a subsequence converging to a point of $K$. (Equivalently, such a $K$ is sequentially compact.) \item \textit{(Comparison test in a Banach space.)} Let $\{a_n\}$ be a sequence in a Banach space $V$ and $\{t_n\}$ non-negative reals with $\left\| a_n \right\| \le t_n$ for all $n$ and $\sum_n t_n < \infty$. Then $\sum_n a_n$ converges in $V$. + \item \textit{(Sequential characterization of limits.)} Let $M, N$ be metric spaces, $p \in M$, $g : M \setminus \{p\} \to N$, and $L \in N$. Then $g(x) \to L$ as $x \to p$ if and only if $g(x_n) \to L$ for every sequence $\{x_n\}$ in $M \setminus \{p\}$ with $x_n \to p$. The same holds for a limit taken along a one-sided or punctured parameter range, in particular for limits of the form $\lim_{t \to 0}$ over $t \in \mathbb{R}\setminus\{0\}$. \end{enumerate} We also use without further comment that limits in a metric space are unique, and that a convergent sequence is Cauchy. \end{proposition} @@ -226,6 +227,33 @@ \subsubsection{Unbounded Operators} Indeed, if $A$ is self-adjoint then $\text{Dom}(A^*) = \text{Dom}(A)$ and $A^* = A$ on this common domain, which is exactly Definition~\ref{def:hall-9.3} applied with $B = A$: $A^*$ is (trivially) an extension of $A$, so by Proposition~\ref{prpstn:hall-9.4}, $A$ is symmetric. Conversely, a symmetric operator $A$ is self-adjoint precisely when $\text{Dom}(A^*)$ is no bigger than $\text{Dom}(A)$, since symmetry already gives the reverse containment via Proposition~\ref{prpstn:hall-9.4}. This is usually the difficulty in showing a symmetric operator is self-adjoint: showing that the adjoint's domain does not overshoot. +Positivity of an unbounded operator is a condition on its expectation values, imposed on a symmetric operator so that those values are real. It is the notion in which the positive-energy condition of the Haag–Kastler axioms is phrased. + +\begin{definition}[Positive Operator] + \label{def:positive-unbounded-operator} + \lean{Physicslib4.Spectral.Unbounded.IsPositive} + \uses{def:hall-3.1, def:hall-9.2} + \leanok + An unbounded operator $A$ on $\mathbf{H}$ is \textit{positive} if it is symmetric~(\ref{def:hall-9.2}) and + \begin{align} + \text{Re}\left< \psi, A\psi \right> \ge 0 \qquad \text{for all } \psi \in \text{Dom}(A). + \end{align} + Symmetry here means only the identity $\left< \phi, A\psi \right> = \left< A\phi, \psi \right>$ for all $\phi, \psi \in \text{Dom}(A)$; density of $\text{Dom}(A)$ is not assumed, exactly as in the density-free sense of symmetry of Lemma~\ref{lmm:generator-symmetry-identity}. (For the generator of a strongly continuous group the domain is dense anyway, by Lemma~\ref{lmm:hall-10.18}.) For such an $A$ the number $\left< \psi, A\psi \right>$ is real, since $\left< \psi, A\psi \right> = \left< A\psi, \psi \right> = \overline{\left< \psi, A\psi \right>}$; so the condition says $\left< \psi, A\psi \right> \ge 0$ for every $\psi \in \text{Dom}(A)$. +\end{definition} + +\begin{lemma}[Positivity of a Bounded Operator] + \label{lmm:positive-bounded-agrees} + \lean{Physicslib4.Spectral.Unbounded.isPositive_toPMap_iff} + \uses{def:positive-unbounded-operator, def:bounded-operator-notation, def:non-negative-operator} + \leanok + Let $P \in \mathcal{B}(\mathbf{H})$, regarded as an unbounded operator with domain $\mathbf{H}$. Then $P$ is positive in the sense of Definition~\ref{def:positive-unbounded-operator} if and only if it is positive as a bounded operator, that is, symmetric with $\text{Re}\left< P\psi, \psi \right> \ge 0$ for all $\psi \in \mathbf{H}$ (in Mathlib, \texttt{ContinuousLinearMap.IsPositive}; for a symmetric bounded operator this is the non-negativity of Definition~\ref{def:non-negative-operator}). +\end{lemma} +\begin{proof} + \leanok + \uses{def:positive-unbounded-operator, def:non-negative-operator, def:bounded-operator-notation} + Both conditions require $P$ to be symmetric on $\text{Dom}(P) = \mathbf{H}$. Their second clauses agree because $\left< \psi, P\psi \right> = \overline{\left< P\psi, \psi \right>}$ by conjugate symmetry of the inner product, so $\text{Re}\left< \psi, P\psi \right> = \text{Re}\left< P\psi, \psi \right>$ for every $\psi$ (in Mathlib, \texttt{inner\_re\_symm}). +\end{proof} + The next two definitions let us make sense of the \textit{closure} of an unbounded operator, which we will need almost immediately. They refer to the topology on $\mathbf{H} \times \mathbf{H}$, so we fix that first — as a definition and two supporting facts rather than as a remark, since every closedness argument below rests on them. \begin{definition}[The Product Hilbert Space $\mathbf{H} \times \mathbf{H}$] @@ -428,6 +456,37 @@ \subsubsection{Unbounded Operators} Moreover, for such $\phi$, both $C_1^*\phi$ and $C_2^*\phi$ are, by the definition of the adjoint~(\ref{def:hall-9.1}), characterized as the unique vector $\chi$ with $\left< \phi, C_i\psi \right> = \left< \chi, \psi \right>$ for all $\psi \in \text{Dom}(C_i)$; since $C_1$ and $C_2$ agree on $\text{Dom}(C_2)$, the defining equation for $C_2^*\phi$ is the restriction, to $\text{Dom}(C_2) \subset \text{Dom}(C_1)$, of the defining equation for $C_1^*\phi$, so both are satisfied by $\chi = C_1^*\phi$; by uniqueness in the definition applied to $C_2$, $C_2^*\phi = C_1^*\phi$. \end{proof} +A self-adjoint operator admits no symmetric enlargement of its domain: any symmetric extension of it is equal to it. This is Exercise 9.11.7(c) of the source text. It is what allows a self-adjoint operator to be identified with the infinitesimal generator of the unitary group it generates, in the development of Stone's Theorem. + +\begin{lemma}[A Self-Adjoint Operator has no Proper Symmetric Extension] + \label{lmm:self-adjoint-maximally-symmetric} + \lean{Physicslib4.Spectral.Unbounded.eq_of_isSelfAdjoint_of_isSymmetric_of_le} + \uses{def:hall-9.2, def:hall-9.3, def:hall-9.5} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and let $B$ be a symmetric extension of $A$. Then $\text{Dom}(A) = \text{Dom}(B)$, and hence $A = B$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-9.1, def:hall-9.2, def:hall-9.3, def:hall-9.5, def:hall-3.1, prpstn:hall-9.4, lmm:extension-reverses-adjoint-domains} +First, $\text{Dom}(B)$ is dense: $B$ is an extension of $A$, so $\text{Dom}(B) \supset \text{Dom}(A)$ by the definition of extension~(\ref{def:hall-9.3}), and $\text{Dom}(A)$ is dense because $A$, being self-adjoint, is an unbounded operator in the sense of Definition~\ref{def:hall-3.1}. A set containing a dense set is dense. This step is recorded explicitly because in the Lean formalization symmetry of $B$ does not presuppose that $B$ is densely defined, whereas Proposition~\ref{prpstn:hall-9.4}, applied below, needs a dense domain for $B^*$ to be defined. + +Here $A^*$ and $B^*$ are adjoints of unbounded operators in the sense of Definition~\ref{def:hall-9.1}. Since $B$ is an extension of $A$, Lemma~\ref{lmm:extension-reverses-adjoint-domains} (applied with $C_1 = B$ and $C_2 = A$) gives $\text{Dom}(B^*) \subset \text{Dom}(A^*)$. + +Since $A$ is self-adjoint, $\text{Dom}(A^*) = \text{Dom}(A)$ by the definition of self-adjointness~(\ref{def:hall-9.5}), so +\begin{align} + \text{Dom}(B^*) \subset \text{Dom}(A). +\end{align} + +Since $B$ is symmetric, Proposition~\ref{prpstn:hall-9.4} says that $B^*$ is an extension of $B$, so by the definition of extension~(\ref{def:hall-9.3}), +\begin{align} + \text{Dom}(B) \subset \text{Dom}(B^*). +\end{align} + +Chaining the two containments gives $\text{Dom}(B) \subset \text{Dom}(A)$. The reverse containment $\text{Dom}(A) \subset \text{Dom}(B)$ holds because $B$ is an extension of $A$. Hence $\text{Dom}(A) = \text{Dom}(B)$. + +Finally, $B$ agrees with $A$ on $\text{Dom}(A)$, again because $B$ extends $A$; as the domains coincide, $A = B$ as operators. +\end{proof} + \begin{proposition}[Uniqueness of the Self-Adjoint Extension of an Essentially Self-Adjoint Operator] \label{prpstn:hall-9.11} \lean{Physicslib4.Spectral.Unbounded.existsUnique_isSelfAdjoint_extension, Physicslib4.Spectral.Unbounded.eq_closure_of_isSelfAdjoint_of_le} @@ -1214,10 +1273,10 @@ \subsubsection{Integration Against a Projection-Valued Measure} \begin{theorem}[Dominated Convergence Theorem] \label{thrm:dominated-convergence-theorem} - \lean{MeasureTheory.tendsto_integral_of_dominated_convergence, MeasureTheory.Integrable.mono', aestronglyMeasurable_of_tendsto_ae} + \lean{MeasureTheory.tendsto_integral_of_dominated_convergence, MeasureTheory.Integrable.mono', aestronglyMeasurable_of_tendsto_ae, MeasureTheory.tendsto_integral_filter_of_dominated_convergence} \uses{conv:section-integration} \leanok - Let $(X,\Omega,\nu)$ be a measure space and $\{g_n\}$ measurable complex-valued functions on $X$ converging pointwise to $g$, with $\lvert g_n \rvert \le G$ for all $n$ and some $\nu$-integrable $G$. Then $g$ and each $g_n$ are $\nu$-integrable and $\int_X g_n \, d\nu \to \int_X g \, d\nu$. + Let $(X,\Omega,\nu)$ be a measure space and $\{g_n\}$ measurable complex-valued functions on $X$ converging pointwise to $g$, with $\lvert g_n \rvert \le G$ for all $n$ and some $\nu$-integrable $G$. Then $g$ and each $g_n$ are $\nu$-integrable and $\int_X g_n \, d\nu \to \int_X g \, d\nu$. The same holds, in \textit{filter form}, for a family $g_s$ indexed by a parameter $s$ tending to a limit along any countably generated filter — for instance $s \to t$ in $\mathbb{R}$, or $s \to 0$ with $s \ne 0$ — with the bound $\lvert g_s \rvert \le G$ required eventually along the filter. \end{theorem} \begin{proof} \leanok @@ -3172,3 +3231,51 @@ \subsubsection{Proof of the Spectral Theorem for Unbounded Self-Adjoint Operator Finally, the restriction of $\mu^A$ to Borel subsets of $\sigma(A)$ is a projection-valued measure on $\sigma(A)$, by Part 1 of Lemma~\ref{lmm:borel-bijection-transports-pvm} applied with $Y = \mathbb{R}$ and $Y_0 = \sigma(A)$ (legitimate since $\mu^A(\mathbb{R}\setminus\sigma(A)) = 0$); and $\int_{\sigma(A)}\lambda\,d\mu^A(\lambda) = \int_{\mathbb{R}}\lambda\,d\mu^A(\lambda) = A$, the integrals agreeing because the two measures $\mu^A_\psi$ involved differ only on the $\mu^A_\psi$-null set $\mathbb{R}\setminus\sigma(A)$, so Lemma~\ref{lmm:integral-ignores-null-sets} applies. \end{proof} + +With the spectral theorem in hand, every measurable function of a self-adjoint operator can be defined by integrating that function against the operator's spectral measure. This is the functional calculus for unbounded self-adjoint operators, and it is what gives meaning to expressions such as $e^{itA}$, the one-parameter unitary groups of Stone's Theorem. We first give the projection-valued measure of Theorem~\ref{thrm:hall-10.4} a name, so that it can be referred to. + +\begin{definition}[Spectral Measure of a Self-Adjoint Operator] + \label{def:spectral-measure} + \lean{Physicslib4.Spectral.Unbounded.spectralMeasure, Physicslib4.Spectral.Unbounded.pmapIntegral_spectralMeasure, Physicslib4.Spectral.Unbounded.eq_spectralMeasure_of_pmapIntegral, Physicslib4.Spectral.Unbounded.domain_eq_integralDomain_spectralMeasure} + \uses{def:hall-9.5, def:projection-valued-measure, thrm:hall-10.4} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$. The \textit{spectral measure} of $A$ is the unique projection-valued measure $\mu^A$ on the Borel $\sigma$-algebra of $\mathbb{R}$ with + \begin{align} + \int_{\mathbb{R}} \lambda \, d\mu^A(\lambda) = A, + \end{align} + supplied by Theorem~\ref{thrm:hall-10.4}. For $\psi \in \mathbf{H}$ we write $\mu^A_\psi$ for the associated scalar measure $E \mapsto \left< \psi, \mu^A(E)\psi \right>$. In particular, writing $\iota(\lambda) = \lambda$, $\text{Dom}(A) = W_\iota$ is the set of $\psi$ with $\int_{\mathbb{R}} \lambda^2 \, d\mu^A_\psi(\lambda) < \infty$. +\end{definition} + +\begin{definition}[Functional Calculus for an Unbounded Self-Adjoint Operator] + \label{def:hall-10.5} + \lean{Physicslib4.Spectral.Unbounded.functionalCalculus, Physicslib4.Spectral.Unbounded.functionalCalculus_domain, Physicslib4.Spectral.Unbounded.functionalCalculus_id} + \uses{def:spectral-measure, def:hall-9.5, thrm:hall-9.17, thrm:hall-10.4, prpstn:hall-10.1, prpstn:hall-10.2, prpstn:coincidence-with-the-bounded-integral, def:projection-valued-measure, lmm:integral-ignores-null-sets, def:bounded-operator-resolvent-and-spectrum} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and let $\mu^A$ be its spectral measure~(\ref{def:spectral-measure}), the unique projection-valued measure on the Borel $\sigma$-algebra of $\mathbb{R}$ supplied by Theorem~\ref{thrm:hall-10.4}. For any measurable function $f : \mathbb{R} \to \mathbb{C}$, the \textit{functional calculus} defines a (possibly unbounded) operator $f(A)$ by + \begin{align} + f(A) \equiv \int_{\mathbb{R}} f(\lambda) \, d\mu^A(\lambda), + \end{align} + with domain + \begin{align} + \text{Dom}(f(A)) = W_f = \left\{ \psi \in \mathbf{H} \;\middle|\; \int_{\mathbb{R}} \lvert f(\lambda) \rvert^2 \, d\mu^A_\psi(\lambda) < \infty \right\}, + \end{align} + the operator and its domain being those supplied by Proposition~\ref{prpstn:hall-10.1} and Proposition~\ref{prpstn:hall-10.2} for the measure $\mu^A$. + + Three remarks. First, $f$ need not be bounded: taking $f(\lambda) = \lambda$ recovers $A$ itself, with $W_f = \text{Dom}(A)$, which is the content of Theorem~\ref{thrm:hall-10.4}. Second, when $f$ \textit{is} bounded, Proposition~\ref{prpstn:coincidence-with-the-bounded-integral} gives $W_f = \mathbf{H}$ — the measure $\mu^A_\psi$ being finite — so $f(A)$ is a bounded operator defined on all of $\mathbf{H}$, and it coincides with the bounded integral of Section~\ref{sctn:spectral-theorems}; this is the case of the operators $e^{itA}$ in the treatment of Stone's Theorem, where $f(\lambda) = e^{it\lambda}$, though the unbounded case enters there too, through $f(\lambda) = \lambda$ and related unbounded functions. Third, $f(A)$ depends only on the restriction of $f$ to $\sigma(A)$, which is a subset of $\mathbb{R}$ by Theorem~\ref{thrm:hall-9.17}. Indeed, if $f, g$ are measurable and agree on $\sigma(A)$, then $N \equiv \{ \lambda \in \mathbb{R} \mid f(\lambda) \ne g(\lambda) \}$ is a Borel set, $f$ and $g$ being measurable, with $N \cap \sigma(A) = \emptyset$; so $\mu^A(N) = \mu^A(N \cap \sigma(A)) = \mu^A(\emptyset) = 0$ by the concentration of $\mu^A$ on $\sigma(A)$ stated in Theorem~\ref{thrm:hall-10.4}. Since $f$ and $g$ agree off the null set $N$, Lemma~\ref{lmm:integral-ignores-null-sets} gives $W_f = W_g$ and $f(A) = g(A)$. In particular the definition agrees with the form in which it is often stated — for $f$ measurable on $\sigma(A)$, integrated over $\sigma(A)$ — under the correspondence between the two formulations noted in Theorem~\ref{thrm:hall-10.4}. +\end{definition} + +The second remark is the case used in Stone's Theorem, and we record it as a lemma. + +\begin{lemma}[Functional Calculus of a Bounded Function] + \label{lmm:functional-calculus-bounded} + \lean{Physicslib4.Spectral.Unbounded.functionalCalculus_of_bddMeasurable} + \uses{def:hall-10.5, def:spectral-measure, thrm:operator-valued-integration} + \leanok + Let $A$ be a self-adjoint operator on $\mathbf{H}$ and let $f : \mathbb{R} \to \mathbb{C}$ be bounded and measurable. Then $W_f = \mathbf{H}$, and $f(A)$ coincides with the bounded integral $\int_{\mathbb{R}} f \, d\mu^A \in \mathcal{B}(\mathbf{H})$ of Section~\ref{sctn:spectral-theorems}~(\ref{thrm:operator-valued-integration}). In particular $f(A)$ is a bounded operator defined on all of $\mathbf{H}$. +\end{lemma} +\begin{proof} + \leanok + \uses{def:hall-10.5, def:spectral-measure, prpstn:coincidence-with-the-bounded-integral} +By Definition~\ref{def:hall-10.5}, $f(A)$ is the operator $\int_{\mathbb{R}} f \, d\mu^A$ of Proposition~\ref{prpstn:hall-10.1} for the projection-valued measure $\mu^A$ of Definition~\ref{def:spectral-measure}, with domain $W_f$. Proposition~\ref{prpstn:coincidence-with-the-bounded-integral}, applied to $\mu^A$ and the bounded function $f$, gives both claims. +\end{proof} + diff --git a/home_page/axioms.md b/home_page/axioms.md index 507d48d..1a06504 100644 --- a/home_page/axioms.md +++ b/home_page/axioms.md @@ -3,39 +3,39 @@ title: "The Axioms at a Glance" usemathjax: true --- -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) # The axioms at a glance Axiom 6 (Primitivity) from the original 1964 Haag–Kastler paper is not carried into the sharpened axiom set — see Chapter 8 for the discussion of why it is dropped. The five sharpened axioms in each setting, bundled together as a `HaagKastlerNet`, are what is actually formalised. -**Minkowski spacetime** — bundled as `Physicslib4.AQFT.HaagKastler.HaagKastlerNet` (Definition 460): +**Minkowski spacetime** — bundled as `Physicslib4.AQFT.HaagKastler.HaagKastlerNet` (Definition 507): | Axiom | Node | Lean | |---|---|---| -| 1. Local Algebras | Definition 420 | `Physicslib4.AQFT.HaagKastler.LocalNet` | -| 2. Isotony | Definition 421 | `Physicslib4.AQFT.HaagKastler.Isotony` | -| 3. Local Commutativity | Definition 438 | `Physicslib4.AQFT.HaagKastler.LocalCommutativity` | -| 4. Quasilocal Completeness | Definition 441 | `Physicslib4.AQFT.HaagKastler.ObservableCorrespondence` | -| 5. Lorentz Covariance | Definition 459 | `Physicslib4.AQFT.HaagKastler.LorentzCovariance` | +| 1. Local Algebras | Definition 467 | `Physicslib4.AQFT.HaagKastler.LocalNet` | +| 2. Isotony | Definition 468 | `Physicslib4.AQFT.HaagKastler.Isotony` | +| 3. Local Commutativity | Definition 485 | `Physicslib4.AQFT.HaagKastler.LocalCommutativity` | +| 4. Quasilocal Completeness | Definition 488 | `Physicslib4.AQFT.HaagKastler.ObservableCorrespondence` | +| 5. Lorentz Covariance | Definition 506 | `Physicslib4.AQFT.HaagKastler.LorentzCovariance` | -**Curved spacetime** — bundled as `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet` (Definition 578): +**Curved spacetime** — bundled as `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet` (Definition 632): | Axiom | Node | Lean | |---|---|---| -| 1. Local Algebras | Definition 572 | `Physicslib4.AQFT.HaagKastlerCurved.LocalNet` | -| 2. Isotony | Definition 573 | `Physicslib4.AQFT.HaagKastlerCurved.Isotony` | -| 3. Local Commutativity | Definition 574 | `Physicslib4.AQFT.HaagKastlerCurved.LocalCommutativity` | -| 4. Local Completeness | Definition 576 | `Physicslib4.AQFT.HaagKastlerCurved.LocalAlgebra` | -| 5. Isometric Covariance | Definition 577 | `Physicslib4.AQFT.HaagKastlerCurved.IsometricCovariance` | +| 1. Local Algebras | Definition 626 | `Physicslib4.AQFT.HaagKastlerCurved.LocalNet` | +| 2. Isotony | Definition 627 | `Physicslib4.AQFT.HaagKastlerCurved.Isotony` | +| 3. Local Commutativity | Definition 628 | `Physicslib4.AQFT.HaagKastlerCurved.LocalCommutativity` | +| 4. Local Completeness | Definition 630 | `Physicslib4.AQFT.HaagKastlerCurved.LocalAlgebra` | +| 5. Isometric Covariance | Definition 631 | `Physicslib4.AQFT.HaagKastlerCurved.IsometricCovariance` | -**General Covariance (Definition 622, `Physicslib4.AQFT.HaagKastlerCurved.IsGenerallyCovariant`)** is deliberately *not* a sixth axiom. Axioms 1–5 each constrain a single net over a single fixed spacetime, whereas general covariance relates two nets over two spacetimes; it is therefore a property of the section $$L \mapsto \mathfrak{U}_L$$ assigning a net to every Lorentzian spacetime, not an extra field of the net structure. +**General Covariance (Definition 676, `Physicslib4.AQFT.HaagKastlerCurved.IsGenerallyCovariant`)** is deliberately *not* a sixth axiom. Axioms 1–5 each constrain a single net over a single fixed spacetime, whereas general covariance relates two nets over two spacetimes; it is therefore a property of the section $$L \mapsto \mathfrak{U}_L$$ assigning a net to every Lorentzian spacetime, not an extra field of the net structure. Two changes to the axioms are worth calling out for readers coming from an earlier version of this blueprint: -- **Isotony now supplies its embeddings as data.** Axiom 2 (Definitions 421 and 573) fixes the family $$i_{\mathbf{B}_1 \mathbf{B}_2}$$ together with identity and composition laws, making $$\mathbf{B} \mapsto \mathfrak{U}(\mathbf{B})$$ a functor on the inclusion order. Axiom 3 consumes that family rather than choosing witnesses of its own, and Axiom 5 (Definitions 459 and 577) now states its coherence condition for the same family, so that covariance-compatibility of a quasilocal algebra is a lemma (Lemma 540) rather than a hypothesis. This is what makes the quasilocal colimit well posed in Minkowski spacetime, and it removes the coherence side-hypotheses that curved-spacetime statements about nested regions previously had to carry. -- **Axiom 4 has been split.** The mathematical claim that a quasilocal algebra exists is now Theorem 442 (`Physicslib4.AQFT.HaagKastler.exists_quasilocalAlgebra`), proved from the colimit-and-completion chain; what remains as Axiom 4 (Definition 441) is the bridge principle relating physical observables to quasilocal ones, which has — by design — no mathematical consumers. +- **Isotony now supplies its embeddings as data.** Axiom 2 (Definitions 468 and 627) fixes the family $$i_{\mathbf{B}_1 \mathbf{B}_2}$$ together with identity and composition laws, making $$\mathbf{B} \mapsto \mathfrak{U}(\mathbf{B})$$ a functor on the inclusion order. Axiom 3 consumes that family rather than choosing witnesses of its own, and Axiom 5 (Definitions 506 and 631) now states its coherence condition for the same family, so that covariance-compatibility of a quasilocal algebra is a lemma (Lemma 587) rather than a hypothesis. This is what makes the quasilocal colimit well posed in Minkowski spacetime, and it removes the coherence side-hypotheses that curved-spacetime statements about nested regions previously had to carry. +- **Axiom 4 has been split.** The mathematical claim that a quasilocal algebra exists is now Theorem 489 (`Physicslib4.AQFT.HaagKastler.exists_quasilocalAlgebra`), proved from the colimit-and-completion chain; what remains as Axiom 4 (Definition 488) is the bridge principle relating physical observables to quasilocal ones, which has — by design — no mathematical consumers. -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) diff --git a/home_page/guide.md b/home_page/guide.md index 28a9393..4e7f268 100644 --- a/home_page/guide.md +++ b/home_page/guide.md @@ -3,17 +3,17 @@ title: "Guide to the Blueprint" usemathjax: true --- -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) # Guide to the blueprint ## How the blueprint is organised -The blueprint is 324 pages long and splits cleanly in two. +The blueprint is 341 pages long and splits cleanly in two. **Chapters 1–9 are mathematical background and are not formalised in Lean.** They motivate and analyse each of the original Haag–Kastler axioms in turn, and then generalise them to curved spacetime. Along the way they cite twelve supporting results, numbered 1 through 12 — Gelfand–Naimark, the Bounded Linear Transformation Theorem, the existence of a Lorentz metric, and so on. These are quoted from the literature where needed; none of them carries a Lean declaration. -**Chapter 10 collects the formalisation-ready content, and it is the content of Chapter 10 that is formalised in Lean.** Its items are numbered consecutively, running from Definition 13 through Definition 622, and comprise **607 declarations in total: 144 definitions, 153 theorems, 209 lemmas, 97 propositions, and 4 corollaries**, mapped onto **1,069 distinct Lean declarations** (where Mathlib already supplies a result, the blueprint names the Mathlib declaration directly). Three further numbered items — Conventions 22, 210 and 257, standing hypotheses of the two spectral-theory sections — share the numbering but are conventions rather than declarations, and are not counted. Chapter 10 is divided into seven top-level sections, §10.1 through §10.7. +**Chapter 10 collects the formalisation-ready content, and it is the content of Chapter 10 that is formalised in Lean.** Its items are numbered consecutively, running from Definition 13 through Definition 676, and comprise **661 declarations in total: 150 definitions, 156 theorems, 252 lemmas, 99 propositions, and 4 corollaries**, mapped onto **1,143 distinct Lean declarations** (where Mathlib already supplies a result, the blueprint names the Mathlib declaration directly). Three further numbered items — Conventions 22, 213 and 260, standing hypotheses of the two spectral-theory sections — share the numbering but are conventions rather than declarations, and are not counted. Chapter 10 is divided into eight top-level sections, §10.1 through §10.8. ## Chapters 1–9: unpacking the original axioms @@ -35,15 +35,16 @@ The lower numbers, 1 through 12, label supporting theorems and definitions intro ## The section pages -Only Chapter 10 is formalised in Lean. Its items are numbered consecutively from Definition 13 through Definition 622 — 607 declarations, plus the three standing conventions of §10.2 and §10.3. Each section page below summarises its section and lists **every** item, in numerical order, under the blueprint subsection in which it appears. Each entry links to the node in the web blueprint and names the principal Lean declaration that realises it; where a node maps onto several declarations, the count of the remainder is shown. The lists are derived mechanically from the blueprint's own `\lean` and `\leanok` annotations. +Only Chapter 10 is formalised in Lean. Its items are numbered consecutively from Definition 13 through Definition 676 — 661 declarations, plus the three standing conventions of §10.2 and §10.3. Each section page below summarises its section and lists **every** item, in numerical order, under the blueprint subsection in which it appears. Each entry links to the node in the web blueprint and names the principal Lean declaration that realises it; where a node maps onto several declarations, the count of the remainder is shown. The lists are derived mechanically from the blueprint's own `\lean` and `\leanok` annotations. - [§10.1 GNS Construction (pp. 29–38)](sec10-1-gns.html) - [§10.2 Spectral Theorems (pp. 38–155)](sec10-2-spectral.html) -- [§10.3 Unbounded Spectral Theorems (pp. 155–233)](sec10-3-unbounded.html) -- [§10.4 Spacetime and causal structure (pp. 233–270)](sec10-4-spacetime.html) -- [§10.5 Haag–Kastler Axioms in Minkowski spacetime (pp. 270–310)](sec10-5-haag-kastler.html) -- [§10.6 Haag–Kastler Axioms in curved spacetime (pp. 310–319)](sec10-6-curved.html) -- [§10.7 General Covariance: Nets on Pullback-Related Metrics (pp. 319–321)](sec10-7-general-covariance.html) +- [§10.3 Unbounded Spectral Theorems (pp. 155–235)](sec10-3-unbounded.html) +- [§10.4 Stone's Theorem (pp. 235–249)](sec10-4-stone.html) +- [§10.5 Spacetime and causal structure (pp. 249–286)](sec10-5-spacetime.html) +- [§10.6 Haag–Kastler Axioms in Minkowski spacetime (pp. 286–327)](sec10-6-haag-kastler.html) +- [§10.7 Haag–Kastler Axioms in curved spacetime (pp. 327–337)](sec10-7-curved.html) +- [§10.8 General Covariance: Nets on Pullback-Related Metrics (pp. 337–338)](sec10-8-general-covariance.html) ## Where the Lean lives @@ -54,9 +55,10 @@ Each blueprint section maps onto a compact set of Lean modules, which is the fas | §10.1 | `Physicslib4/GNS/` (`Basic`, `Construction`, `NullSpace`, `CauchySchwarz`) | | §10.2 | `Physicslib4/Spectral/` (`Basic`, `Spectrum`, `Forms`, `ProjectionValuedMeasure`, `OperatorIntegral`, `ContinuousCalculus`, `BorelClasses`, `BorelCalculus`, `SpectralTheorem`) | | §10.3 | `Physicslib4/Spectral/Unbounded/` (`Basic`, `Spectrum`, `DirectSum`, `Integral`, `Normal`, `AbstractCalculus`, `Cayley`) | -| §10.4 | `Physicslib4/Geometry/PseudoRiemannian/` (`Basic`, `LeviCivita`, `Flat`), `Physicslib4/Spacetime/` (`Causality`, `Curves`, `AlongPath`, `CausalComplement`, `CausalStructure`, `Minkowski`, `MinkowskiDirected`, `LorentzianSpacetime`, `IsometryCausality`, …) | -| §10.5 | `Physicslib4/AQFT/HaagKastler/`, `Physicslib4/GNS/` (`Irreducibility`, `Superselection`, `RadonNikodym`, `ExtremeState`, …), `Physicslib4/Operators/` (`ReducingSubspace`, `DensityTheorem`), `Physicslib4/AQFT/KMS.lean`, `Physicslib4/Analysis/StripPeriodicExtension.lean` | -| §10.6 | `Physicslib4/AQFT/HaagKastlerCurved/` (`LocalVonNeumann`, `StabilizerAction`, `StabilizerKMS`, `Purity`, `GeometricCovariance`, …) | -| §10.7 | `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` | +| §10.4 | `Physicslib4/Spectral/Stone/` (`Basic`, `Exponential`, `Density`, `Theorem`) | +| §10.5 | `Physicslib4/Geometry/PseudoRiemannian/` (`Basic`, `LeviCivita`, `Flat`), `Physicslib4/Spacetime/` (`Causality`, `Curves`, `AlongPath`, `CausalComplement`, `CausalStructure`, `Minkowski`, `MinkowskiDirected`, `LorentzianSpacetime`, `IsometryCausality`, …) | +| §10.6 | `Physicslib4/AQFT/HaagKastler/`, `Physicslib4/GNS/` (`Irreducibility`, `Superselection`, `RadonNikodym`, `ExtremeState`, …), `Physicslib4/Operators/` (`ReducingSubspace`, `DensityTheorem`), `Physicslib4/AQFT/KMS.lean`, `Physicslib4/Analysis/StripPeriodicExtension.lean` | +| §10.7 | `Physicslib4/AQFT/HaagKastlerCurved/` (`LocalVonNeumann`, `StabilizerAction`, `StabilizerKMS`, `Purity`, `GeometricCovariance`, …) | +| §10.8 | `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` | -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) diff --git a/home_page/index.md b/home_page/index.md index 57f84a4..92113cc 100644 --- a/home_page/index.md +++ b/home_page/index.md @@ -25,26 +25,27 @@ In 1964, Rudolf Haag and Daniel Kastler introduced a set of axioms for Algebraic ## Overview -The blueprint is 324 pages long and splits cleanly in two. +The blueprint is 341 pages long and splits cleanly in two. **Chapters 1–9 are mathematical background and are not formalised in Lean.** They motivate and analyse each of the original Haag–Kastler axioms in turn, and then generalise them to curved spacetime. Along the way they cite twelve supporting results, numbered 1 through 12 — Gelfand–Naimark, the Bounded Linear Transformation Theorem, the existence of a Lorentz metric, and so on. These are quoted from the literature where needed; none of them carries a Lean declaration. -**Chapter 10 collects the formalisation-ready content, and it is the content of Chapter 10 that is formalised in Lean.** Its items are numbered consecutively, running from Definition 13 through Definition 622, and comprise **607 declarations in total: 144 definitions, 153 theorems, 209 lemmas, 97 propositions, and 4 corollaries**, mapped onto **1,069 distinct Lean declarations** (where Mathlib already supplies a result, the blueprint names the Mathlib declaration directly). Three further numbered items — Conventions 22, 210 and 257, standing hypotheses of the two spectral-theory sections — share the numbering but are conventions rather than declarations, and are not counted. Chapter 10 is divided into seven top-level sections, §10.1 through §10.7. +**Chapter 10 collects the formalisation-ready content, and it is the content of Chapter 10 that is formalised in Lean.** Its items are numbered consecutively, running from Definition 13 through Definition 676, and comprise **661 declarations in total: 150 definitions, 156 theorems, 252 lemmas, 99 propositions, and 4 corollaries**, mapped onto **1,143 distinct Lean declarations** (where Mathlib already supplies a result, the blueprint names the Mathlib declaration directly). Three further numbered items — Conventions 22, 213 and 260, standing hypotheses of the two spectral-theory sections — share the numbering but are conventions rather than declarations, and are not counted. Chapter 10 is divided into eight top-level sections, §10.1 through §10.8. -**606 of the 607 are formalised, statements and proofs alike, and the Lean contains no `sorry`.** Of the 463 theorems, lemmas, propositions and corollaries in Chapter 10, 427 carry a written proof in the blueprint; the other 36, all in §10.2 and §10.3, are standard results quoted from the literature (Heine–Borel, Stone–Weierstrass, dominated convergence and the like) that the blueprint states in full but deliberately does not prove. 462 of the 463 proofs are formalised in Lean, including all 36 of the quoted results. The one exception, in both counts, is Lemma 311, which is not yet formalised at all; it is discussed under [Formalisation status](#formalisation-status) below. +**660 of the 661 are formalised, statements and proofs alike, and the Lean contains no `sorry`.** The one exception is Lemma 358, which is not yet formalised at all; it is discussed under [Formalisation status](#formalisation-status) below. Of the 511 theorems, lemmas, propositions and corollaries in Chapter 10, 471 carry a written proof in the blueprint; the other 40, in §10.2, §10.3 and §10.4, are standard results quoted from the literature (Heine–Borel, Stone–Weierstrass, dominated convergence, the Bochner integral and the like) that the blueprint states in full but deliberately does not prove. 510 of the 511 proofs are formalised in Lean, including all 40 of the quoted results, which are linked to the Mathlib declarations that supply them. -At a glance, the 607 declarations break down by top-level section as follows (click a section to see its items): +At a glance, the 661 declarations break down by top-level section as follows (click a section to see its items): | Section | Topic | Pages | Definitions | Theorems | Lemmas | Propositions | Corollaries | Total | Formalised | |---|---|---|---|---|---|---|---|---|---| | [§10.1](sec10-1-gns.html) | GNS Construction | 29–38 | 2 | 1 | 3 | 0 | 0 | 6 | 6 | | [§10.2](sec10-2-spectral.html) | Spectral Theorems (bounded) | 38–155 | 25 | 24 | 27 | 67 | 1 | 144 | 144 | -| [§10.3](sec10-3-unbounded.html) | Unbounded Spectral Theorems | 155–233 | 24 | 13 | 47 | 30 | 3 | 117 | 117 | -| [§10.4](sec10-4-spacetime.html) | Spacetime and causal structure | 233–270 | 34 | 17 | 86 | 0 | 0 | 137 | 136 | -| [§10.5](sec10-5-haag-kastler.html) | Haag–Kastler Axioms (Minkowski) | 270–310 | 40 | 69 | 43 | 0 | 0 | 152 | 152 | -| [§10.6](sec10-6-curved.html) | Haag–Kastler Axioms (curved spacetime) | 310–319 | 17 | 29 | 3 | 0 | 0 | 49 | 49 | -| [§10.7](sec10-7-general-covariance.html) | General Covariance | 319–321 | 2 | 0 | 0 | 0 | 0 | 2 | 2 | -| **Total** | | | **144** | **153** | **209** | **97** | **4** | **607** | **606** | +| [§10.3](sec10-3-unbounded.html) | Unbounded Spectral Theorems | 155–235 | 27 | 13 | 50 | 30 | 3 | 123 | 123 | +| [§10.4](sec10-4-stone.html) | Stone's Theorem | 235–249 | 3 | 2 | 34 | 2 | 0 | 41 | 41 | +| [§10.5](sec10-5-spacetime.html) | Spacetime and causal structure | 249–286 | 34 | 17 | 86 | 0 | 0 | 137 | 136 | +| [§10.6](sec10-6-haag-kastler.html) | Haag–Kastler Axioms (Minkowski) | 286–327 | 40 | 70 | 49 | 0 | 0 | 159 | 159 | +| [§10.7](sec10-7-curved.html) | Haag–Kastler Axioms (curved spacetime) | 327–337 | 17 | 29 | 3 | 0 | 0 | 49 | 49 | +| [§10.8](sec10-8-general-covariance.html) | General Covariance | 337–338 | 2 | 0 | 0 | 0 | 0 | 2 | 2 | +| **Total** | | | **150** | **156** | **252** | **99** | **4** | **661** | **660** | ## Explore @@ -53,25 +54,28 @@ At a glance, the 607 declarations break down by top-level section as follows (cl - **Chapter 10, section by section:** - [§10.1 GNS Construction (pp. 29–38)](sec10-1-gns.html) - [§10.2 Spectral Theorems (pp. 38–155)](sec10-2-spectral.html) - - [§10.3 Unbounded Spectral Theorems (pp. 155–233)](sec10-3-unbounded.html) - - [§10.4 Spacetime and causal structure (pp. 233–270)](sec10-4-spacetime.html) - - [§10.5 Haag–Kastler Axioms in Minkowski spacetime (pp. 270–310)](sec10-5-haag-kastler.html) - - [§10.6 Haag–Kastler Axioms in curved spacetime (pp. 310–319)](sec10-6-curved.html) - - [§10.7 General Covariance: Nets on Pullback-Related Metrics (pp. 319–321)](sec10-7-general-covariance.html) + - [§10.3 Unbounded Spectral Theorems (pp. 155–235)](sec10-3-unbounded.html) + - [§10.4 Stone's Theorem (pp. 235–249)](sec10-4-stone.html) + - [§10.5 Spacetime and causal structure (pp. 249–286)](sec10-5-spacetime.html) + - [§10.6 Haag–Kastler Axioms in Minkowski spacetime (pp. 286–327)](sec10-6-haag-kastler.html) + - [§10.7 Haag–Kastler Axioms in curved spacetime (pp. 327–337)](sec10-7-curved.html) + - [§10.8 General Covariance: Nets on Pullback-Related Metrics (pp. 337–338)](sec10-8-general-covariance.html) ## Formalisation status The blueprint annotates every node with the Lean declarations that realise it, so the status of each node is a matter of record rather than of estimate. There is exactly one node in Chapter 10 that is not formalised, and one further place where the Lean is deliberately differently shaped than the prose. Both are flagged in the blueprint text itself; they are collected here so that they are not discovered by surprise. The project contains no `sorry`. +**Recently completed: Stone's Theorem.** The new [§10.4](sec10-4-stone.html) (Definition 289 through Theorem 329, pp. 235–249) proves Stone's Theorem, the correspondence between strongly continuous one-parameter unitary groups and self-adjoint operators, and four new §10.3 nodes supply what it needs: a self-adjoint operator has no proper symmetric extension (Lemma 189), the spectral measure of a self-adjoint operator (Definition 286), its functional calculus (Definition 287), and the agreement of that calculus with the bounded one for bounded functions (Lemma 288). All 39 nodes are formalised and proved; the theorem itself is `Physicslib4.Spectral.Stone.stone` in `Physicslib4/Spectral/Stone/Theorem.lean`. With Stone's Theorem in Lean, positive energy (the spectrum condition behind vacuum and ground states) is now stated with a genuine unbounded generator: a one-parameter unitary group has positive energy when it is strongly continuous and its generator is a positive operator, equivalently $$V(t) = e^{itA}$$ with $$A$$ positive and self-adjoint (Theorem 602, `Physicslib4.AQFT.isPositiveEnergy_iff_exists_exp`). The former bounded-generator restriction is gone, and the project records no remaining restrictions. + **Not yet formalised (one node).** -- **Lemma 311, "Smoothness of the Inverse Musical Isomorphism."** The node sits in §10.4 (p. 239), in the pseudo-Riemannian layer that precedes the definition of geodesics. It states that the pointwise inverse $$x \mapsto \flat_x^{-1}$$ of the musical isomorphism (Lemma 310) is a smooth section of $$\mathrm{Hom}(T^*M, TM)$$, and the blueprint gives a written proof (in a local trivialisation, inversion of continuous linear equivalences is smooth). It carries no Lean declaration yet. No other node depends on it: the existence and uniqueness of the Levi-Civita connection are formalised without it. +- **Lemma 358, "Smoothness of the Inverse Musical Isomorphism."** The node sits in §10.5 (p. 255), in the pseudo-Riemannian layer that precedes the definition of geodesics. It states that the pointwise inverse $$x \mapsto \flat_x^{-1}$$ of the musical isomorphism (Lemma 357) is a smooth section of $$\mathrm{Hom}(T^*M, TM)$$, and the blueprint gives a written proof (in a local trivialisation, inversion of continuous linear equivalences is smooth). It carries no Lean declaration yet. No other node depends on it: the existence and uniqueness of the Levi-Civita connection are formalised without it. -**Recently completed: the von Neumann density theorem.** Theorem 458, "Quasilocal Observables are Strongly Dense in the Bicommutant" (§10.5.2, p. 289), formalised as `Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` in `Physicslib4/AQFT/HaagKastler/StrongDensity.lean`, is now proved. Mathlib has the strong operator topology (`PointwiseConvergenceCLM`) and the double commutant property of bundled von Neumann algebras, but not the density theorem itself, so the project proves it locally, following Murphy, Lemma 4.1.4, in the new §10.5.2 (Lemmas 448–457, Definition 451): a closed subspace invariant under an operator and its adjoint has a commuting projection (Lemma 448, in `Physicslib4/Operators/ReducingSubspace.lean`), so the closed cyclic subspace of a vector reduces the representation (Lemma 449) and the one-vector case follows (Lemma 450); a finite amplification $$\pi^\iota$$ on $$\ell^2(\iota; H)$$ (Definition 451, Lemmas 452–455, in `Physicslib4/Operators/DensityTheorem.lean`) carries the bicommutant diagonally into its own bicommutant, which upgrades the one-vector case to finitely many vectors (Lemma 456); and a neighbourhood basis for the strong operator topology (Lemma 457) turns that into density. The Kaplansky density theorem, which would additionally keep approximants self-adjoint and norm-bounded, remains out of scope; nothing in the project needs it. +**Recently completed: the von Neumann density theorem.** Theorem 505, "Quasilocal Observables are Strongly Dense in the Bicommutant" (§10.6.2, p. 305), formalised as `Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` in `Physicslib4/AQFT/HaagKastler/StrongDensity.lean`, is now proved. Mathlib has the strong operator topology (`PointwiseConvergenceCLM`) and the double commutant property of bundled von Neumann algebras, but not the density theorem itself, so the project proves it locally, following Murphy, Lemma 4.1.4, in the new §10.6.2 (Lemmas 495–504, Definition 498): a closed subspace invariant under an operator and its adjoint has a commuting projection (Lemma 495, in `Physicslib4/Operators/ReducingSubspace.lean`), so the closed cyclic subspace of a vector reduces the representation (Lemma 496) and the one-vector case follows (Lemma 497); a finite amplification $$\pi^\iota$$ on $$\ell^2(\iota; H)$$ (Definition 498, Lemmas 499–502, in `Physicslib4/Operators/DensityTheorem.lean`) carries the bicommutant diagonally into its own bicommutant, which upgrades the one-vector case to finitely many vectors (Lemma 503); and a neighbourhood basis for the strong operator topology (Lemma 504) turns that into density. The Kaplansky density theorem, which would additionally keep approximants self-adjoint and norm-bounded, remains out of scope; nothing in the project needs it. **Formalised, but the Lean is shaped differently from the prose (one place).** The node below carries Lean declarations and a formalised proof; the caveat is one of presentation, not of coverage or content. -- **Axiom 5 in curved spacetime (Definition 577).** "Isometries connected to the identity" and "identity-component isometries preserving the future orientation" describe the same group, but the inclusion of the former in the latter rests on a Myers–Steenrod-type rigidity result not yet in Mathlib. The Lean therefore intersects the identity component with the explicitly orientation-preserving subgroup. This is an implementation choice and does not alter the mathematical content of the axiom. +- **Axiom 5 in curved spacetime (Definition 631).** "Isometries connected to the identity" and "identity-component isometries preserving the future orientation" describe the same group, but the inclusion of the former in the latter rests on a Myers–Steenrod-type rigidity result not yet in Mathlib. The Lean therefore intersects the identity component with the explicitly orientation-preserving subgroup. This is an implementation choice and does not alter the mathematical content of the axiom. ## Useful links diff --git a/home_page/sec10-1-gns.md b/home_page/sec10-1-gns.md index 56b1d7a..79b6d3a 100644 --- a/home_page/sec10-1-gns.md +++ b/home_page/sec10-1-gns.md @@ -3,7 +3,7 @@ title: "§10.1 GNS Construction (pp. 29–38)" usemathjax: true --- -[Home](./) · **§10.1 GNS** · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · **§10.1 GNS** · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) [§10.2 Spectral](sec10-2-spectral.html) → @@ -21,17 +21,17 @@ Every entry links to its node in the web blueprint and names the principal Lean ### §10.1.1 GNS Construction Theorem (p. 29) -- [**Definition 13**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:state) — State · `Physicslib4.GNS.State` (+1 more) -- [**Definition 14**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:cyclic-vector) — Cyclic Vector · `Physicslib4.GNS.IsCyclicVector` -- [**Theorem 15**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-construction-theorem) — GNS Construction Theorem · `Physicslib4.GNS.gns_construction` (+1 more) +- [**Definition 13**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:state) — State · `Physicslib4.GNS.State` (+1 more) +- [**Definition 14**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:cyclic-vector) — Cyclic Vector · `Physicslib4.GNS.IsCyclicVector` +- [**Theorem 15**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-construction-theorem) — GNS Construction Theorem · `Physicslib4.GNS.gns_construction` (+1 more) ### §10.1.2 Auxiliary Results Used in the Proof (p. 35) -- [**Lemma 16**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cauchy-schwarz-inequality) — Cauchy–Schwarz Inequality · `Physicslib4.GNS.cauchy_schwarz_inequality` -- [**Lemma 17**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lmm1) — The two descriptions of the GNS left ideal $$\mathcal{N}$$ agree · `Physicslib4.GNS.lmm1` -- [**Lemma 18**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lmm2) — $$\mathcal{N}$$ is a closed linear subspace · `Physicslib4.GNS.lmm2` +- [**Lemma 16**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cauchy-schwarz-inequality) — Cauchy–Schwarz Inequality · `Physicslib4.GNS.cauchy_schwarz_inequality` +- [**Lemma 17**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lmm1) — The two descriptions of the GNS left ideal $$\mathcal{N}$$ agree · `Physicslib4.GNS.lmm1` +- [**Lemma 18**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lmm2) — $$\mathcal{N}$$ is a closed linear subspace · `Physicslib4.GNS.lmm2` -[Home](./) · **§10.1 GNS** · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · **§10.1 GNS** · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) [§10.2 Spectral](sec10-2-spectral.html) → diff --git a/home_page/sec10-2-spectral.md b/home_page/sec10-2-spectral.md index a50887b..e0f39b5 100644 --- a/home_page/sec10-2-spectral.md +++ b/home_page/sec10-2-spectral.md @@ -3,7 +3,7 @@ title: "§10.2 Spectral Theorems (pp. 38–155)" usemathjax: true --- -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · **§10.2 Spectral** · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · **§10.2 Spectral** · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) ← [§10.1 GNS](sec10-1-gns.html) · [§10.3 Unbounded](sec10-3-unbounded.html) → @@ -27,197 +27,197 @@ Each blueprint subsection below is collapsed; click a heading to see its items.
§10.2.1 · Elementary Properties of Bounded Operators (p. 39) — 4 items -- [**Definition 19**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:inner-product) — Inner Product · `InnerProductSpace` -- [**Definition 20**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:induced-norm) — Norm Induced by an Inner Product · `norm_eq_sqrt_re_inner` -- [**Definition 21**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-operator-notation) — Bounded Operator Notation · `ContinuousLinearMap.le_opNorm` (+4 more) -- [**Convention 22**](blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:nonzero-hilbert-space) — The Hilbert Space is Non-Zero *(a standing convention, not a declaration; it carries no Lean annotation)* +- [**Definition 19**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:inner-product) — Inner Product · `InnerProductSpace` +- [**Definition 20**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:induced-norm) — Norm Induced by an Inner Product · `norm_eq_sqrt_re_inner` +- [**Definition 21**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-operator-notation) — Bounded Operator Notation · `ContinuousLinearMap.le_opNorm` (+4 more) +- [**Convention 22**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:nonzero-hilbert-space) — The Hilbert Space is Non-Zero *(a standing convention, not a declaration; it carries no Lean annotation)*
§10.2.1 · Elementary Properties of Bounded Operators › Preliminaries: Notation (p. 40) — 15 items -- [**Definition 23**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:identity-operator) — The Identity Operator · `ContinuousLinearMap.id_apply` (+1 more) -- [**Definition 24**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:indicator-function) — Indicator Function · `Set.indicator` (+2 more) -- [**Definition 25**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:identity-and-indicator) — The Identity Operator and Indicator Functions · `Physicslib4.Spectral.one_apply_and_indicator_apply` -- [**Definition 26**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:orthogonal-complement) — Orthogonal Complement · `Physicslib4.Spectral.mem_span_orthogonal_iff` -- [**Proposition 27**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:basic-integral-properties) — Basic Properties of the Integral, and Integration over a Subset · `MeasureTheory.integral_indicator` (+4 more) -- [**Proposition 28**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.43) — Cauchy–Schwarz Inequality · `inner_mul_inner_self_le` (+1 more) -- [**Proposition 29**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:reverse-triangle-inequality) — Reverse Triangle Inequality · `abs_norm_sub_norm_le` -- [**Proposition 30**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:continuity-of-norm-and-inner-product) — Continuity of the Norm and Inner Product · `Filter.Tendsto.norm` (+1 more) -- [**Lemma 31**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bounded-operators-form-a-banach-space) — Bounded Operators form a Banach Space · `Physicslib4.Spectral.completeSpace_boundedOp` -- [**Definition 32**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-inverse) — Bounded Inverse · `isUnit_iff_exists` -- [**Definition 33**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-operator-resolvent-and-spectrum) — Resolvent and Spectrum · `Physicslib4.Spectral.mem_resolventSet_iff_isUnit_sub_smul` (+1 more) -- [**Theorem 34**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-a.52) — Riesz Theorem · `Physicslib4.Spectral.riesz_representation` -- [**Definition 35**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:adjoint-bounded) — Adjoint of a Bounded Operator · `ContinuousLinearMap.adjoint` (+1 more) -- [**Proposition 36**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:adjoint-is-bounded) — The Adjoint is a Bounded Operator · `Physicslib4.Spectral.norm_adjoint` -- [**Lemma 37**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-algebra) — Algebraic Properties of the Adjoint · `Physicslib4.Spectral.adjoint_add` (+4 more) +- [**Definition 23**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:identity-operator) — The Identity Operator · `ContinuousLinearMap.id_apply` (+1 more) +- [**Definition 24**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:indicator-function) — Indicator Function · `Set.indicator` (+2 more) +- [**Definition 25**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:identity-and-indicator) — The Identity Operator and Indicator Functions · `Physicslib4.Spectral.one_apply_and_indicator_apply` +- [**Definition 26**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:orthogonal-complement) — Orthogonal Complement · `Physicslib4.Spectral.mem_span_orthogonal_iff` +- [**Proposition 27**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:basic-integral-properties) — Basic Properties of the Integral, and Integration over a Subset · `MeasureTheory.integral_indicator` (+4 more) +- [**Proposition 28**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.43) — Cauchy–Schwarz Inequality · `inner_mul_inner_self_le` (+1 more) +- [**Proposition 29**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:reverse-triangle-inequality) — Reverse Triangle Inequality · `abs_norm_sub_norm_le` +- [**Proposition 30**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:continuity-of-norm-and-inner-product) — Continuity of the Norm and Inner Product · `Filter.Tendsto.norm` (+1 more) +- [**Lemma 31**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bounded-operators-form-a-banach-space) — Bounded Operators form a Banach Space · `Physicslib4.Spectral.completeSpace_boundedOp` +- [**Definition 32**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-inverse) — Bounded Inverse · `isUnit_iff_exists` +- [**Definition 33**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-operator-resolvent-and-spectrum) — Resolvent and Spectrum · `Physicslib4.Spectral.mem_resolventSet_iff_isUnit_sub_smul` (+1 more) +- [**Theorem 34**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-a.52) — Riesz Theorem · `Physicslib4.Spectral.riesz_representation` +- [**Definition 35**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:adjoint-bounded) — Adjoint of a Bounded Operator · `ContinuousLinearMap.adjoint` (+1 more) +- [**Proposition 36**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:adjoint-is-bounded) — The Adjoint is a Bounded Operator · `Physicslib4.Spectral.norm_adjoint` +- [**Lemma 37**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-algebra) — Algebraic Properties of the Adjoint · `Physicslib4.Spectral.adjoint_add` (+4 more)
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › Projection-Valued Measures (p. 45) — 30 items -- [**Definition 38**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-orthogonal-projection) — Orthogonal Projection · `IsStarProjection` (+2 more) -- [**Lemma 39**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:projection-norm-decreasing) — Orthogonal Projections are Norm-Decreasing · `Physicslib4.Spectral.norm_apply_le_of_isStarProjection` -- [**Definition 40**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:projection-valued-measure) — Projection-Valued Measure · `Physicslib4.Spectral.ProjectionValuedMeasure` -- [**Theorem 41**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:projection-valued-measures-associated-measure) — Projection-Valued Measure's Associated Measure · `Physicslib4.Spectral.ProjectionValuedMeasure.existsUnique_assoc` -- [**Theorem 42**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:operator-valued-integration) — Operator-Valued Integration · `Physicslib4.Spectral.ProjectionValuedMeasure.existsUnique_integral` -- [**Definition 43**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-sesquilinear-form) — (Bounded) Sesquilinear Form · `Physicslib4.Spectral.BoundedSesquilinearForm` -- [**Definition 44**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-quadratic-form) — (Bounded) Quadratic Form · `Physicslib4.Spectral.IsBoundedQuadraticForm` -- [**Theorem 45**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:complex-valued-simple-approximation-theorem) — Complex-Valued Simple Approximation Theorem · `Physicslib4.Spectral.exists_simpleFunc_tendstoUniformly` -- [**Lemma 46**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma1-of-operator-valued-integration) — The Quadratic Form of a Bounded Measurable Function · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral` -- [**Proposition 47**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-indicator-bounded-form) — The Quadratic Form of an Indicator Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_indicator` (+1 more) -- [**Proposition 48**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-simple-bounded-form) — The Quadratic Form of a Simple Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_simpleFunc` -- [**Proposition 49**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-measurable-bounded-form) — The Quadratic Form of a Bounded Measurable Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_bddMeasurable` -- [**Proposition 50**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.61) — Properties of the Sesquilinear Form Associated to a Quadratic Form · `Physicslib4.Spectral.polarization_diag` (+2 more) -- [**Lemma 51**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:sesquilinear-linear-combination) — Linear Combinations of Sesquilinear Forms are Sesquilinear · `Physicslib4.Spectral.exists_sesquilinearForm_sum` -- [**Lemma 52**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:sesquilinear-pointwise-limit) — Pointwise Limits of Sesquilinear Forms are Sesquilinear · `Physicslib4.Spectral.exists_sesquilinearForm_of_tendsto` -- [**Lemma 53**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bqf-linear-combination) — Linear Combinations of Bounded Quadratic Forms are Bounded Quadratic Forms · `Physicslib4.Spectral.IsBoundedQuadraticForm.sum` -- [**Lemma 54**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bqf-pointwise-limit) — Uniformly Bounded Pointwise Limits of Bounded Quadratic Forms · `Physicslib4.Spectral.isBoundedQuadraticForm_of_tendsto` -- [**Proposition 55**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.63) — A Bounded Quadratic Form Determines a Unique Bounded Operator · `Physicslib4.Spectral.existsUnique_operator_of_isBoundedQuadraticForm` -- [**Proposition 56**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-of-indicator) — Integral of an Indicator Function · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_indicator` -- [**Proposition 57**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-norm-bound) — Norm Bound for the Operator-Valued Integral · `Physicslib4.Spectral.ProjectionValuedMeasure.norm_integral_le` -- [**Lemma 58**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma2-of-operator-valued-integration) — Orthogonality of Spectral Projections on a Disjoint Cover · `Physicslib4.Spectral.ProjectionValuedMeasure.inner_eq_zero_of_disjoint` (+1 more) -- [**Lemma 59**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-1) — Operator Norm via the Inner Product · `Physicslib4.Spectral.opNorm_eq_sSup_inner` -- [**Proposition 60**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-norm-bound-simple) — Norm Bound for the Integral of a Simple Function · `Physicslib4.Spectral.ProjectionValuedMeasure.norm_integral_simple_le` -- [**Proposition 61**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-as-limit-of-simple) — The Integral as a Limit of Integrals of Simple Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.tendsto_integral_of_tendstoUniformly` -- [**Proposition 62**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-multiplicative) — Operator-Valued Integration is Multiplicative · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_mul` -- [**Proposition 63**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-indicator) — Multiplicativity of the Integral for Indicator Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_indicator_mul` -- [**Proposition 64**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-simple) — Multiplicativity of the Integral for Simple Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_simpleFunc_mul` -- [**Proposition 65**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:products-converge-uniformly) — Products of Uniform Approximants Converge Uniformly · `Physicslib4.Spectral.tendstoUniformly_mul_of_bounded` -- [**Proposition 66**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-measurable) — Multiplicativity of the Integral for Bounded Measurable Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_bddMeasurable_mul` -- [**Proposition 67**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-conjugation) — Operator-Valued Integration Intertwines Conjugation and the Adjoint · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_conj` +- [**Definition 38**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-orthogonal-projection) — Orthogonal Projection · `IsStarProjection` (+2 more) +- [**Lemma 39**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:projection-norm-decreasing) — Orthogonal Projections are Norm-Decreasing · `Physicslib4.Spectral.norm_apply_le_of_isStarProjection` +- [**Definition 40**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:projection-valued-measure) — Projection-Valued Measure · `Physicslib4.Spectral.ProjectionValuedMeasure` +- [**Theorem 41**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:projection-valued-measures-associated-measure) — Projection-Valued Measure's Associated Measure · `Physicslib4.Spectral.ProjectionValuedMeasure.existsUnique_assoc` +- [**Theorem 42**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:operator-valued-integration) — Operator-Valued Integration · `Physicslib4.Spectral.ProjectionValuedMeasure.existsUnique_integral` +- [**Definition 43**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-sesquilinear-form) — (Bounded) Sesquilinear Form · `Physicslib4.Spectral.BoundedSesquilinearForm` +- [**Definition 44**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bounded-quadratic-form) — (Bounded) Quadratic Form · `Physicslib4.Spectral.IsBoundedQuadraticForm` +- [**Theorem 45**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:complex-valued-simple-approximation-theorem) — Complex-Valued Simple Approximation Theorem · `Physicslib4.Spectral.exists_simpleFunc_tendstoUniformly` +- [**Lemma 46**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma1-of-operator-valued-integration) — The Quadratic Form of a Bounded Measurable Function · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral` +- [**Proposition 47**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-indicator-bounded-form) — The Quadratic Form of an Indicator Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_indicator` (+1 more) +- [**Proposition 48**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-simple-bounded-form) — The Quadratic Form of a Simple Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_simpleFunc` +- [**Proposition 49**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-measurable-bounded-form) — The Quadratic Form of a Bounded Measurable Function is Bounded · `Physicslib4.Spectral.ProjectionValuedMeasure.isBoundedQuadraticForm_integral_bddMeasurable` +- [**Proposition 50**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.61) — Properties of the Sesquilinear Form Associated to a Quadratic Form · `Physicslib4.Spectral.polarization_diag` (+2 more) +- [**Lemma 51**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:sesquilinear-linear-combination) — Linear Combinations of Sesquilinear Forms are Sesquilinear · `Physicslib4.Spectral.exists_sesquilinearForm_sum` +- [**Lemma 52**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:sesquilinear-pointwise-limit) — Pointwise Limits of Sesquilinear Forms are Sesquilinear · `Physicslib4.Spectral.exists_sesquilinearForm_of_tendsto` +- [**Lemma 53**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bqf-linear-combination) — Linear Combinations of Bounded Quadratic Forms are Bounded Quadratic Forms · `Physicslib4.Spectral.IsBoundedQuadraticForm.sum` +- [**Lemma 54**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bqf-pointwise-limit) — Uniformly Bounded Pointwise Limits of Bounded Quadratic Forms · `Physicslib4.Spectral.isBoundedQuadraticForm_of_tendsto` +- [**Proposition 55**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.63) — A Bounded Quadratic Form Determines a Unique Bounded Operator · `Physicslib4.Spectral.existsUnique_operator_of_isBoundedQuadraticForm` +- [**Proposition 56**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-of-indicator) — Integral of an Indicator Function · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_indicator` +- [**Proposition 57**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-norm-bound) — Norm Bound for the Operator-Valued Integral · `Physicslib4.Spectral.ProjectionValuedMeasure.norm_integral_le` +- [**Lemma 58**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma2-of-operator-valued-integration) — Orthogonality of Spectral Projections on a Disjoint Cover · `Physicslib4.Spectral.ProjectionValuedMeasure.inner_eq_zero_of_disjoint` (+1 more) +- [**Lemma 59**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-1) — Operator Norm via the Inner Product · `Physicslib4.Spectral.opNorm_eq_sSup_inner` +- [**Proposition 60**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-norm-bound-simple) — Norm Bound for the Integral of a Simple Function · `Physicslib4.Spectral.ProjectionValuedMeasure.norm_integral_simple_le` +- [**Proposition 61**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-as-limit-of-simple) — The Integral as a Limit of Integrals of Simple Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.tendsto_integral_of_tendstoUniformly` +- [**Proposition 62**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-multiplicative) — Operator-Valued Integration is Multiplicative · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_mul` +- [**Proposition 63**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-indicator) — Multiplicativity of the Integral for Indicator Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_indicator_mul` +- [**Proposition 64**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-simple) — Multiplicativity of the Integral for Simple Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_simpleFunc_mul` +- [**Proposition 65**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:products-converge-uniformly) — Products of Uniform Approximants Converge Uniformly · `Physicslib4.Spectral.tendstoUniformly_mul_of_bounded` +- [**Proposition 66**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-mult-measurable) — Multiplicativity of the Integral for Bounded Measurable Functions · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_bddMeasurable_mul` +- [**Proposition 67**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integral-conjugation) — Operator-Valued Integration Intertwines Conjugation and the Adjoint · `Physicslib4.Spectral.ProjectionValuedMeasure.integral_conj`
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › The Spectral Theorem › Stage 1: The Continuous Functional Calculus (p. 80) — 37 items -- [**Lemma 68**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-2) — Bounded Operator Product is Submultiplicative · `norm_mul_le` -- [**Proposition 69**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.34) — Absolute Convergence Implies Convergence in a Banach Space · `Summable.of_norm` -- [**Lemma 70**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-7.6) — Neumann Series for a Contraction · `Physicslib4.Spectral.isUnit_one_sub` (+1 more) -- [**Theorem 71**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:analytic-equivalence-theorem) — Analytic Equivalence Theorem · `Complex.analyticOnNhd_iff_differentiableOn` -- [**Theorem 72**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:maximum-modulus-principle) — Maximum Modulus Principle · `Complex.exists_mem_frontier_isMaxOn_norm` (+1 more) -- [**Proposition 73**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.5) — The Spectrum is Closed, Bounded and Non-Empty · `Physicslib4.Spectral.mem_resolventSet_of_norm_lt` -- [**Proposition 74**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:resolvent-holomorphy-and-neumann-series) — Operator-Norm Holomorphy and the Neumann Series of the Resolvent · `Physicslib4.Spectral.isOpen_resolventSet` (+2 more) -- [**Proposition 75**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.3) — The Orthogonal Complement of the Range is the Kernel of the Adjoint · `ContinuousLinearMap.orthogonal_range` -- [**Lemma 76**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-7.8) — The $$b^2$$ Inequality for a Self-Adjoint Operator · `Physicslib4.Spectral.sq_norm_sub_smul_apply_le` -- [**Proposition 77**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:bounded-operators-are-continuous) — Bounded Operators are Continuous · `Physicslib4.Spectral.continuous_iff_exists_bound` -- [**Proposition 78**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.7) — The Spectrum of a Self-Adjoint Operator is Real · `Physicslib4.Spectral.spectrum_subset_real` -- [**Theorem 79**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:heine-borel-theorem) — Heine–Borel Theorem · `Metric.isCompact_iff_isClosed_bounded` -- [**Lemma 80**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectrum-is-compact-metric-measurable) — The Spectrum is a Compact Metric Measurable Space · `Physicslib4.Spectral.isCompact_spectrum` (+1 more) -- [**Definition 81**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spectral-radius) — Spectral Radius · `spectralRadius` -- [**Corollary 82**](blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:crllr-1) — The Spectral Radius is at Most the Operator Norm · `spectrum.spectralRadius_le_nnnorm` -- [**Proposition 83**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.2) — The Adjoint Preserves the Operator Norm · `Physicslib4.Spectral.norm_adjoint` (+1 more) -- [**Proposition 84**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:continuity-of-the-adjoint) — Continuity of the Adjoint · `Physicslib4.Spectral.tendsto_adjoint` -- [**Theorem 85**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gelfand-formula) — Gelfand's Formula for the Spectral Radius · `spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius` -- [**Lemma 86**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-8.1) — The Norm of a Self-Adjoint Operator is its Spectral Radius · `IsSelfAdjoint.toReal_spectralRadius_complex_eq_norm` -- [**Lemma 87**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-ex-8.3.1) — A Product with a Non-Invertible Commuting Factor is Non-Invertible · `Physicslib4.Spectral.not_isUnit_mul_of_commute` -- [**Theorem 88**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:fundamental-theorem-of-algebra) — Fundamental Theorem of Algebra · `Complex.isAlgClosed` -- [**Lemma 89**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectral-mapping-theorem) — Spectral Mapping Theorem · `spectrum.map_polynomial_aeval` -- [**Lemma 90**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:real-polynomial-self-adjoint) — A Real Polynomial in a Self-Adjoint Operator is Self-Adjoint · `Physicslib4.Spectral.isSelfAdjoint_aeval_real` -- [**Definition 91**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:separates-points) — Separates Points · `Subalgebra.SeparatesPoints` -- [**Theorem 92**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:stone-weierstrass-real) — Stone–Weierstrass for Real Numbers · `ContinuousMap.subalgebra_topologicalClosure_eq_top_of_separatesPoints` -- [**Theorem 93**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:boundedness-theorem) — Boundedness Theorem · `IsCompact.exists_bound_of_continuousOn` -- [**Theorem 94**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:bounded-linear-transformation-theorem) — Bounded Linear Transformation Theorem · `Physicslib4.Spectral.existsUnique_extension_of_dense` -- [**Proposition 95**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.3) — The Continuous Functional Calculus · `Physicslib4.Spectral.existsUnique_realCalculus` (+1 more) -- [**Definition 96**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:non-negative-operator) — Non-Negative Bounded Operator · `ContinuousLinearMap.IsPositive` -- [**Lemma 97**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-7.4.8) — Invertibility is an Open Condition · `Units.isOpen` -- [**Theorem 98**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:composition-theorem) — Composition Theorem · `ContinuousAt.comp` -- [**Proposition 99**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.4) — Properties of the Continuous Functional Calculus · `Physicslib4.Spectral.realCalculus_properties` -- [**Proposition 100**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-multiplicative) — The Continuous Functional Calculus is Multiplicative · `Physicslib4.Spectral.realCalculus_mul` -- [**Proposition 101**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-self-adjoint) — The Continuous Functional Calculus Yields Self-Adjoint Operators · `Physicslib4.Spectral.isSelfAdjoint_realCalculus` -- [**Proposition 102**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-non-negative) — The Continuous Functional Calculus Preserves Non-Negativity · `Physicslib4.Spectral.isPositive_realCalculus` -- [**Proposition 103**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-norm) — Norm of an Operator from the Continuous Functional Calculus · `Physicslib4.Spectral.norm_realCalculus` -- [**Proposition 104**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-spectral-mapping) — Spectral Mapping for the Continuous Functional Calculus · `Physicslib4.Spectral.spectrum_realCalculus` +- [**Lemma 68**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-2) — Bounded Operator Product is Submultiplicative · `norm_mul_le` +- [**Proposition 69**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.34) — Absolute Convergence Implies Convergence in a Banach Space · `Summable.of_norm` +- [**Lemma 70**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-7.6) — Neumann Series for a Contraction · `Physicslib4.Spectral.isUnit_one_sub` (+1 more) +- [**Theorem 71**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:analytic-equivalence-theorem) — Analytic Equivalence Theorem · `Complex.analyticOnNhd_iff_differentiableOn` +- [**Theorem 72**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:maximum-modulus-principle) — Maximum Modulus Principle · `Complex.exists_mem_frontier_isMaxOn_norm` (+1 more) +- [**Proposition 73**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.5) — The Spectrum is Closed, Bounded and Non-Empty · `Physicslib4.Spectral.mem_resolventSet_of_norm_lt` +- [**Proposition 74**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:resolvent-holomorphy-and-neumann-series) — Operator-Norm Holomorphy and the Neumann Series of the Resolvent · `Physicslib4.Spectral.isOpen_resolventSet` (+2 more) +- [**Proposition 75**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.3) — The Orthogonal Complement of the Range is the Kernel of the Adjoint · `ContinuousLinearMap.orthogonal_range` +- [**Lemma 76**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-7.8) — The $$b^2$$ Inequality for a Self-Adjoint Operator · `Physicslib4.Spectral.sq_norm_sub_smul_apply_le` +- [**Proposition 77**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:bounded-operators-are-continuous) — Bounded Operators are Continuous · `Physicslib4.Spectral.continuous_iff_exists_bound` +- [**Proposition 78**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.7) — The Spectrum of a Self-Adjoint Operator is Real · `Physicslib4.Spectral.spectrum_subset_real` +- [**Theorem 79**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:heine-borel-theorem) — Heine–Borel Theorem · `Metric.isCompact_iff_isClosed_bounded` +- [**Lemma 80**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectrum-is-compact-metric-measurable) — The Spectrum is a Compact Metric Measurable Space · `Physicslib4.Spectral.isCompact_spectrum` (+1 more) +- [**Definition 81**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spectral-radius) — Spectral Radius · `spectralRadius` +- [**Corollary 82**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:crllr-1) — The Spectral Radius is at Most the Operator Norm · `spectrum.spectralRadius_le_nnnorm` +- [**Proposition 83**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.2) — The Adjoint Preserves the Operator Norm · `Physicslib4.Spectral.norm_adjoint` (+1 more) +- [**Proposition 84**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:continuity-of-the-adjoint) — Continuity of the Adjoint · `Physicslib4.Spectral.tendsto_adjoint` +- [**Theorem 85**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gelfand-formula) — Gelfand's Formula for the Spectral Radius · `spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius` +- [**Lemma 86**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-8.1) — The Norm of a Self-Adjoint Operator is its Spectral Radius · `IsSelfAdjoint.toReal_spectralRadius_complex_eq_norm` +- [**Lemma 87**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-ex-8.3.1) — A Product with a Non-Invertible Commuting Factor is Non-Invertible · `Physicslib4.Spectral.not_isUnit_mul_of_commute` +- [**Theorem 88**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:fundamental-theorem-of-algebra) — Fundamental Theorem of Algebra · `Complex.isAlgClosed` +- [**Lemma 89**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectral-mapping-theorem) — Spectral Mapping Theorem · `spectrum.map_polynomial_aeval` +- [**Lemma 90**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:real-polynomial-self-adjoint) — A Real Polynomial in a Self-Adjoint Operator is Self-Adjoint · `Physicslib4.Spectral.isSelfAdjoint_aeval_real` +- [**Definition 91**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:separates-points) — Separates Points · `Subalgebra.SeparatesPoints` +- [**Theorem 92**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:stone-weierstrass-real) — Stone–Weierstrass for Real Numbers · `ContinuousMap.subalgebra_topologicalClosure_eq_top_of_separatesPoints` +- [**Theorem 93**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:boundedness-theorem) — Boundedness Theorem · `IsCompact.exists_bound_of_continuousOn` +- [**Theorem 94**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:bounded-linear-transformation-theorem) — Bounded Linear Transformation Theorem · `Physicslib4.Spectral.existsUnique_extension_of_dense` +- [**Proposition 95**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.3) — The Continuous Functional Calculus · `Physicslib4.Spectral.existsUnique_realCalculus` (+1 more) +- [**Definition 96**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:non-negative-operator) — Non-Negative Bounded Operator · `ContinuousLinearMap.IsPositive` +- [**Lemma 97**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-7.4.8) — Invertibility is an Open Condition · `Units.isOpen` +- [**Theorem 98**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:composition-theorem) — Composition Theorem · `ContinuousAt.comp` +- [**Proposition 99**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.4) — Properties of the Continuous Functional Calculus · `Physicslib4.Spectral.realCalculus_properties` +- [**Proposition 100**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-multiplicative) — The Continuous Functional Calculus is Multiplicative · `Physicslib4.Spectral.realCalculus_mul` +- [**Proposition 101**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-self-adjoint) — The Continuous Functional Calculus Yields Self-Adjoint Operators · `Physicslib4.Spectral.isSelfAdjoint_realCalculus` +- [**Proposition 102**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-non-negative) — The Continuous Functional Calculus Preserves Non-Negativity · `Physicslib4.Spectral.isPositive_realCalculus` +- [**Proposition 103**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-norm) — Norm of an Operator from the Continuous Functional Calculus · `Physicslib4.Spectral.norm_realCalculus` +- [**Proposition 104**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:cfc-spectral-mapping) — Spectral Mapping for the Continuous Functional Calculus · `Physicslib4.Spectral.spectrum_realCalculus`
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › The Spectral Theorem › Stage 2: An Operator-Valued Riesz Representation Theorem (p. 107) — 29 items -- [**Theorem 105**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:riesz-representation) — Riesz Representation · `Physicslib4.Spectral.existsUnique_measure_of_positive_linear` -- [**Proposition 106**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:associated-measures-self-adjoint) — The Measures Associated to a Self-Adjoint Operator · `Physicslib4.Spectral.existsUnique_assocMeasure` -- [**Definition 107**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-8.6) — The Quadratic Form Associated to a Bounded Measurable Function · `Physicslib4.Spectral.borelForm` -- [**Lemma 108**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measures-are-finite) — The Associated Measures are Finite · `Physicslib4.Spectral.assocMeasure_univ` -- [**Proposition 109**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.7) — The Associated Quadratic Form is Bounded · `Physicslib4.Spectral.isBoundedQuadraticForm_borelForm` -- [**Definition 110**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:F-class) — The Class of Functions with Bounded Quadratic Form · `Physicslib4.Spectral.FClass` -- [**Proposition 111**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-is-linear) — The Map $$f \mapsto Q_f$$ is Linear · `Physicslib4.Spectral.borelForm_add` (+1 more) -- [**Proposition 112**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-homogeneous) — Homogeneity of the Quadratic Form of a Linear Combination · `Physicslib4.Spectral.borelForm_smul_of_mem_FClass` -- [**Proposition 113**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-sesquilinear) — The Associated Form of a Linear Combination is Sesquilinear · `Physicslib4.Spectral.isSesquilinearForm_polarization_borelForm` -- [**Proposition 114**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-bounded) — The Quadratic Form of a Linear Combination is Bounded · `Physicslib4.Spectral.bounded_borelForm_of_mem_FClass` (+1 more) -- [**Proposition 115**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-contains-continuous) — The Class Contains the Continuous Functions · `Physicslib4.Spectral.continuous_mem_FClass` -- [**Proposition 116**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.62) — The Quadratic Form of a Bounded Operator · `Physicslib4.Spectral.isBoundedQuadraticForm_inner` (+1 more) -- [**Proposition 117**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-closed-under-limits) — The Class is Closed under Bounded Pointwise Limits · `Physicslib4.Spectral.mem_FClass_of_tendsto` -- [**Theorem 118**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:bounded-convergence-theorem) — Bounded Convergence Theorem · `Physicslib4.Spectral.tendsto_integral_of_boundedPointwiseLimit` -- [**Definition 119**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:algebra-of-sets) — Algebra of Sets · `MeasureTheory.IsSetAlgebra` -- [**Theorem 120**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:archimedean-property) — Archimedean Property · `exists_nat_one_div_lt` -- [**Lemma 121**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3a) — The Class $$\mathcal{L}_0$$ is an Algebra Containing the Open Sets · `Physicslib4.Spectral.isSetAlgebra_L0` -- [**Definition 122**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:L0-class) — The Class $$\mathcal{L}_0$$ · `Physicslib4.Spectral.L0` -- [**Proposition 123**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-contains-empty) — The Empty Set Lies in $$\mathcal{L}_0$$ · `Physicslib4.Spectral.empty_mem_L0` -- [**Proposition 124**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-complement) — $$\mathcal{L}_0$$ is Closed under Complements · `Physicslib4.Spectral.compl_mem_L0` -- [**Proposition 125**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-union) — $$\mathcal{L}_0$$ is Closed under Finite Unions · `Physicslib4.Spectral.union_mem_L0` -- [**Proposition 126**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-contains-closed) — $$\mathcal{L}_0$$ Contains all Closed Sets · `Physicslib4.Spectral.isClosed_mem_L0` -- [**Definition 127**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bump-function) — Bump Function · `Physicslib4.Spectral.IsBumpFunction` -- [**Theorem 128**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:existence-of-bump-functions) — Existence of Bump Functions · `Physicslib4.Spectral.exists_isBumpFunction` -- [**Theorem 129**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-class-theorem) — Monotone Class Theorem · `Physicslib4.Spectral.generateFrom_subset_of_isMonotoneClass` -- [**Lemma 130**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3b) — Extension from an Algebra to the Generated $$\sigma$$-Algebra · `Physicslib4.Spectral.IsBorelGenerating.indicator_mem` -- [**Theorem 131**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem-nonincreasing) — Monotone Convergence Theorem, Non-Increasing Case · `tendsto_atTop_ciInf` -- [**Lemma 132**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pointwise-limits-of-borel-measurable-functions) — Pointwise Limits of Uniformly Bounded, Borel-Measurable Functions · `Physicslib4.Spectral.measurable_of_tendsto_pointwise` (+1 more) -- [**Lemma 133**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3c) — A Class Containing the Continuous Functions and Closed under Bounded Limits is Everything · `Physicslib4.Spectral.IsBorelGenerating.eq_bddMeasurable` +- [**Theorem 105**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:riesz-representation) — Riesz Representation · `Physicslib4.Spectral.existsUnique_measure_of_positive_linear` +- [**Proposition 106**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:associated-measures-self-adjoint) — The Measures Associated to a Self-Adjoint Operator · `Physicslib4.Spectral.existsUnique_assocMeasure` +- [**Definition 107**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-8.6) — The Quadratic Form Associated to a Bounded Measurable Function · `Physicslib4.Spectral.borelForm` +- [**Lemma 108**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measures-are-finite) — The Associated Measures are Finite · `Physicslib4.Spectral.assocMeasure_univ` +- [**Proposition 109**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.7) — The Associated Quadratic Form is Bounded · `Physicslib4.Spectral.isBoundedQuadraticForm_borelForm` +- [**Definition 110**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:F-class) — The Class of Functions with Bounded Quadratic Form · `Physicslib4.Spectral.FClass` +- [**Proposition 111**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-is-linear) — The Map $$f \mapsto Q_f$$ is Linear · `Physicslib4.Spectral.borelForm_add` (+1 more) +- [**Proposition 112**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-homogeneous) — Homogeneity of the Quadratic Form of a Linear Combination · `Physicslib4.Spectral.borelForm_smul_of_mem_FClass` +- [**Proposition 113**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-sesquilinear) — The Associated Form of a Linear Combination is Sesquilinear · `Physicslib4.Spectral.isSesquilinearForm_polarization_borelForm` +- [**Proposition 114**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-bounded) — The Quadratic Form of a Linear Combination is Bounded · `Physicslib4.Spectral.bounded_borelForm_of_mem_FClass` (+1 more) +- [**Proposition 115**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-contains-continuous) — The Class Contains the Continuous Functions · `Physicslib4.Spectral.continuous_mem_FClass` +- [**Proposition 116**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.62) — The Quadratic Form of a Bounded Operator · `Physicslib4.Spectral.isBoundedQuadraticForm_inner` (+1 more) +- [**Proposition 117**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F-closed-under-limits) — The Class is Closed under Bounded Pointwise Limits · `Physicslib4.Spectral.mem_FClass_of_tendsto` +- [**Theorem 118**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:bounded-convergence-theorem) — Bounded Convergence Theorem · `Physicslib4.Spectral.tendsto_integral_of_boundedPointwiseLimit` +- [**Definition 119**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:algebra-of-sets) — Algebra of Sets · `MeasureTheory.IsSetAlgebra` +- [**Theorem 120**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:archimedean-property) — Archimedean Property · `exists_nat_one_div_lt` +- [**Lemma 121**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3a) — The Class $$\mathcal{L}_0$$ is an Algebra Containing the Open Sets · `Physicslib4.Spectral.isSetAlgebra_L0` +- [**Definition 122**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:L0-class) — The Class $$\mathcal{L}_0$$ · `Physicslib4.Spectral.L0` +- [**Proposition 123**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-contains-empty) — The Empty Set Lies in $$\mathcal{L}_0$$ · `Physicslib4.Spectral.empty_mem_L0` +- [**Proposition 124**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-complement) — $$\mathcal{L}_0$$ is Closed under Complements · `Physicslib4.Spectral.compl_mem_L0` +- [**Proposition 125**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-union) — $$\mathcal{L}_0$$ is Closed under Finite Unions · `Physicslib4.Spectral.union_mem_L0` +- [**Proposition 126**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:L0-contains-closed) — $$\mathcal{L}_0$$ Contains all Closed Sets · `Physicslib4.Spectral.isClosed_mem_L0` +- [**Definition 127**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:bump-function) — Bump Function · `Physicslib4.Spectral.IsBumpFunction` +- [**Theorem 128**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:existence-of-bump-functions) — Existence of Bump Functions · `Physicslib4.Spectral.exists_isBumpFunction` +- [**Theorem 129**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-class-theorem) — Monotone Class Theorem · `Physicslib4.Spectral.generateFrom_subset_of_isMonotoneClass` +- [**Lemma 130**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3b) — Extension from an Algebra to the Generated $$\sigma$$-Algebra · `Physicslib4.Spectral.IsBorelGenerating.indicator_mem` +- [**Theorem 131**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem-nonincreasing) — Monotone Convergence Theorem, Non-Increasing Case · `tendsto_atTop_ciInf` +- [**Lemma 132**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pointwise-limits-of-borel-measurable-functions) — Pointwise Limits of Uniformly Bounded, Borel-Measurable Functions · `Physicslib4.Spectral.measurable_of_tendsto_pointwise` (+1 more) +- [**Lemma 133**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-prblm-8.3.3c) — A Class Containing the Continuous Functions and Closed under Bounded Limits is Everything · `Physicslib4.Spectral.IsBorelGenerating.eq_bddMeasurable`
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › The Spectral Theorem › The Bounded Borel Functional Calculus (p. 127) — 9 items -- [**Definition 134**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-8.8) — The Bounded Borel Functional Calculus · `Physicslib4.Spectral.existsUnique_borelCalculus` (+1 more) -- [**Lemma 135**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-3) — The Operator of a Real-Valued Function is Self-Adjoint · `Physicslib4.Spectral.isSelfAdjoint_borelCalculus` -- [**Proposition 136**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.59) — Polarization Identity · `Physicslib4.Spectral.sesquilinear_polarization` -- [**Proposition 137**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.9) — The Bounded Borel Functional Calculus is Multiplicative · `Physicslib4.Spectral.borelCalculus_mul` -- [**Definition 138**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:F1-F2-classes) — The Classes $$\mathcal{F}_1$$ and $$\mathcal{F}_2$$ · `Physicslib4.Spectral.F1Class` (+1 more) -- [**Proposition 139**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F1-vector-space) — $$\mathcal{F}_1$$ is a Vector Space · `Physicslib4.Spectral.isBorelGenerating_F1Class` -- [**Proposition 140**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-continuous-under-limits) — The Quadratic Form is Continuous under Bounded Pointwise Limits · `Physicslib4.Spectral.tendsto_borelForm` -- [**Proposition 141**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F1-closed-under-limits) — $$\mathcal{F}_1$$ is Closed under Bounded Pointwise Limits · `Physicslib4.Spectral.mem_F1Class_of_tendsto` (+1 more) -- [**Proposition 142**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F2-is-everything) — $$\mathcal{F}_2$$ Contains all Bounded Borel Functions · `Physicslib4.Spectral.isBorelGenerating_F2Class` (+1 more) +- [**Definition 134**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-8.8) — The Bounded Borel Functional Calculus · `Physicslib4.Spectral.existsUnique_borelCalculus` (+1 more) +- [**Lemma 135**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-3) — The Operator of a Real-Valued Function is Self-Adjoint · `Physicslib4.Spectral.isSelfAdjoint_borelCalculus` +- [**Proposition 136**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.59) — Polarization Identity · `Physicslib4.Spectral.sesquilinear_polarization` +- [**Proposition 137**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-8.9) — The Bounded Borel Functional Calculus is Multiplicative · `Physicslib4.Spectral.borelCalculus_mul` +- [**Definition 138**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:F1-F2-classes) — The Classes $$\mathcal{F}_1$$ and $$\mathcal{F}_2$$ · `Physicslib4.Spectral.F1Class` (+1 more) +- [**Proposition 139**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F1-vector-space) — $$\mathcal{F}_1$$ is a Vector Space · `Physicslib4.Spectral.isBorelGenerating_F1Class` +- [**Proposition 140**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:Q-continuous-under-limits) — The Quadratic Form is Continuous under Bounded Pointwise Limits · `Physicslib4.Spectral.tendsto_borelForm` +- [**Proposition 141**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F1-closed-under-limits) — $$\mathcal{F}_1$$ is Closed under Bounded Pointwise Limits · `Physicslib4.Spectral.mem_F1Class_of_tendsto` (+1 more) +- [**Proposition 142**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:F2-is-everything) — $$\mathcal{F}_2$$ Contains all Bounded Borel Functions · `Physicslib4.Spectral.isBorelGenerating_F2Class` (+1 more)
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › The Spectral Theorem › The Spectral Measure (p. 133) — 13 items -- [**Theorem 143**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-8.10) — The Spectral Measure of a Self-Adjoint Operator · `Physicslib4.Spectral.exists_spectralMeasure` -- [**Proposition 144**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-projection) — Each Spectral Projection is an Orthogonal Projection · `Physicslib4.Spectral.isStarProjection_borelCalculus_indicator` -- [**Proposition 145**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-multiplicative) — Spectral Projections Multiply to the Intersection · `Physicslib4.Spectral.borelCalculus_indicator_mul` -- [**Proposition 146**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-empty-and-whole) — Spectral Projections of the Empty Set and the Whole Spectrum · `Physicslib4.Spectral.borelCalculus_indicator_empty` (+1 more) -- [**Proposition 147**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-countably-additive) — Spectral Projections are Countably Additive · `Physicslib4.Spectral.hasSum_borelCalculus_indicator` -- [**Theorem 148**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem) — Monotone Convergence Theorem · `Physicslib4.Spectral.tendsto_iff_isBounded_of_monotone` (+1 more) -- [**Lemma 149**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-4) — Sums of Pairwise Orthogonal Projections · `Physicslib4.Spectral.exists_isStarProjection_tendsto_partialSum` -- [**Proposition 150**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-converges) — Partial Sums of Pairwise Orthogonal Projections Converge · `Physicslib4.Spectral.exists_tendsto_partialSum_of_isStarProjection` -- [**Proposition 151**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-is-projection) — The Limit of the Partial Sums is a Bounded Orthogonal Projection · `Physicslib4.Spectral.exists_isStarProjection_tendsto_partialSum'` -- [**Proposition 152**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-range) — The Range of the Limit Projection · `Physicslib4.Spectral.range_eq_topologicalClosure_iSup_of_tendsto_partialSum` -- [**Proposition 153**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-indicator-integral) — Spectral Projections are the Integrals of their Indicators · `Physicslib4.Spectral.spectralMeasure_integral_indicator` -- [**Proposition 154**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-bounded-calculus-agrees) — The Two Bounded Functional Calculi Agree · `Physicslib4.Spectral.borelCalculus_eq_integral` -- [**Proposition 155**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-integrates-to-A) — The Spectral Measure Integrates to the Operator · `Physicslib4.Spectral.spectralMeasure_integral_id` +- [**Theorem 143**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-8.10) — The Spectral Measure of a Self-Adjoint Operator · `Physicslib4.Spectral.exists_spectralMeasure` +- [**Proposition 144**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-projection) — Each Spectral Projection is an Orthogonal Projection · `Physicslib4.Spectral.isStarProjection_borelCalculus_indicator` +- [**Proposition 145**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-multiplicative) — Spectral Projections Multiply to the Intersection · `Physicslib4.Spectral.borelCalculus_indicator_mul` +- [**Proposition 146**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-empty-and-whole) — Spectral Projections of the Empty Set and the Whole Spectrum · `Physicslib4.Spectral.borelCalculus_indicator_empty` (+1 more) +- [**Proposition 147**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-countably-additive) — Spectral Projections are Countably Additive · `Physicslib4.Spectral.hasSum_borelCalculus_indicator` +- [**Theorem 148**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem) — Monotone Convergence Theorem · `Physicslib4.Spectral.tendsto_iff_isBounded_of_monotone` (+1 more) +- [**Lemma 149**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-4) — Sums of Pairwise Orthogonal Projections · `Physicslib4.Spectral.exists_isStarProjection_tendsto_partialSum` +- [**Proposition 150**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-converges) — Partial Sums of Pairwise Orthogonal Projections Converge · `Physicslib4.Spectral.exists_tendsto_partialSum_of_isStarProjection` +- [**Proposition 151**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-is-projection) — The Limit of the Partial Sums is a Bounded Orthogonal Projection · `Physicslib4.Spectral.exists_isStarProjection_tendsto_partialSum'` +- [**Proposition 152**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:orthogonal-sum-range) — The Range of the Limit Projection · `Physicslib4.Spectral.range_eq_topologicalClosure_iSup_of_tendsto_partialSum` +- [**Proposition 153**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-indicator-integral) — Spectral Projections are the Integrals of their Indicators · `Physicslib4.Spectral.spectralMeasure_integral_indicator` +- [**Proposition 154**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-bounded-calculus-agrees) — The Two Bounded Functional Calculi Agree · `Physicslib4.Spectral.borelCalculus_eq_integral` +- [**Proposition 155**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:mua-integrates-to-A) — The Spectral Measure Integrates to the Operator · `Physicslib4.Spectral.spectralMeasure_integral_id`
§10.2.1 · Spectral Theorem for Bounded Self-Adjoint Operators › The Spectral Theorem › Uniqueness of the Spectral Measure (p. 147) — 8 items -- [**Theorem 156**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-prblm-8.3.4) — Uniqueness of the Spectral Measure · `Physicslib4.Spectral.pvm_eq_of_integral_id_eq` -- [**Proposition 157**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-polynomials) — Two Spectral Measures Agree on Polynomials · `Physicslib4.Spectral.pvm_integral_polynomial_eq` -- [**Proposition 158**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-continuous) — Two Spectral Measures Agree on Continuous Functions · `Physicslib4.Spectral.pvm_integral_continuous_eq` -- [**Theorem 159**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:stone-weierstrass-complex) — Stone–Weierstrass for Complex Numbers · `ContinuousMap.starSubalgebra_topologicalClosure_eq_top_of_separatesPoints` -- [**Lemma 160**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-5) — Polynomials are Dense in the Continuous Functions on the Spectrum · `Physicslib4.Spectral.dense_polynomial_spectrum` -- [**Proposition 161**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-measurable) — Two Spectral Measures Agree on Bounded Measurable Functions · `Physicslib4.Spectral.pvm_integral_bddMeasurable_eq` -- [**Theorem 162**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:spectral-theorem-for-bounded-operators) — Spectral Theorem for Bounded, Self-Adjoint Operators · `Physicslib4.Spectral.existsUnique_spectralMeasure` -- [**Definition 163**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:functional-calculus) — Functional Calculus · `Physicslib4.Spectral.functionalCalculus` +- [**Theorem 156**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-prblm-8.3.4) — Uniqueness of the Spectral Measure · `Physicslib4.Spectral.pvm_eq_of_integral_id_eq` +- [**Proposition 157**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-polynomials) — Two Spectral Measures Agree on Polynomials · `Physicslib4.Spectral.pvm_integral_polynomial_eq` +- [**Proposition 158**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-continuous) — Two Spectral Measures Agree on Continuous Functions · `Physicslib4.Spectral.pvm_integral_continuous_eq` +- [**Theorem 159**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:stone-weierstrass-complex) — Stone–Weierstrass for Complex Numbers · `ContinuousMap.starSubalgebra_topologicalClosure_eq_top_of_separatesPoints` +- [**Lemma 160**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lemma-5) — Polynomials are Dense in the Continuous Functions on the Spectrum · `Physicslib4.Spectral.dense_polynomial_spectrum` +- [**Proposition 161**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:pvm-agree-on-measurable) — Two Spectral Measures Agree on Bounded Measurable Functions · `Physicslib4.Spectral.pvm_integral_bddMeasurable_eq` +- [**Theorem 162**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:spectral-theorem-for-bounded-operators) — Spectral Theorem for Bounded, Self-Adjoint Operators · `Physicslib4.Spectral.existsUnique_spectralMeasure` +- [**Definition 163**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:functional-calculus) — Functional Calculus · `Physicslib4.Spectral.functionalCalculus`
-[Home](./) · [§10.1 GNS](sec10-1-gns.html) · **§10.2 Spectral** · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · **§10.2 Spectral** · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) ← [§10.1 GNS](sec10-1-gns.html) · [§10.3 Unbounded](sec10-3-unbounded.html) → diff --git a/home_page/sec10-3-unbounded.md b/home_page/sec10-3-unbounded.md index ae44f26..95b16c6 100644 --- a/home_page/sec10-3-unbounded.md +++ b/home_page/sec10-3-unbounded.md @@ -1,21 +1,22 @@ --- -title: "§10.3 Unbounded Spectral Theorems (pp. 155–233)" +title: "§10.3 Unbounded Spectral Theorems (pp. 155–249)" usemathjax: true --- -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · **§10.3 Unbounded** · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · **§10.3 Unbounded** · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) -← [§10.2 Spectral](sec10-2-spectral.html) · [§10.4 Spacetime](sec10-4-spacetime.html) → +← [§10.2 Spectral](sec10-2-spectral.html) · [§10.4 Stone](sec10-4-stone.html) → -# §10.3 Unbounded Spectral Theorems (pp. 155–233) +# §10.3 Unbounded Spectral Theorems (pp. 155–249) -117 declarations (items 164–282, together with Conventions 210 and 257), extending §10.2 to the Spectral Theorem for Unbounded, Self-Adjoint Operators (Theorem 282). The blueprint motivates this with the few genuinely unbounded self-adjoint operators that arise in AQFT, the momentum operator being the standard example. The section reuses §10.2 without restating it, follows the same Hall presentation, and builds up unbounded operators from scratch. Its single subsection, §10.3.1 Spectral Theorem: Unbounded Self-Adjoint Operators (p. 156), proceeds in five stages. +123 declarations (items 164–288, together with Conventions 213 and 260), extending §10.2 to the Spectral Theorem for Unbounded, Self-Adjoint Operators (Theorem 285) and the functional calculus it supplies. The blueprint motivates this with the few genuinely unbounded self-adjoint operators that arise in AQFT, the momentum operator being the standard example. The section reuses §10.2 without restating it, follows the same Hall presentation, and builds up unbounded operators from scratch. Its single subsection, §10.3.1 Spectral Theorem: Unbounded Self-Adjoint Operators (p. 156), proceeds in six stages. -- *Unbounded operators (pp. 156–179, items 164–209).* Unbounded operators (Definition 164), their adjoints (Definition 168, Propositions 169–170, Lemma 171), symmetric operators, extensions and self-adjointness (Definitions 172–173 and 175, Proposition 174), and closed and closable operators via the graph in $$\mathbf{H} \times \mathbf{H}$$ (Definitions 176 and 179, Proposition 180), with the closure of a symmetric operator symmetric (Lemma 181) and essential self-adjointness defined (Definition 182). Elementary properties follow: symmetric operators are closable (Proposition 184), the adjoint of a closure (Proposition 185), uniqueness of the self-adjoint extension of an essentially self-adjoint operator (Proposition 187), and kernel and range, with the orthogonal complement of the range equal to the kernel of the adjoint (Definitions 188–189, Proposition 192). Next come the resolvent set and spectrum of an unbounded operator (Definition 196), which agree with the bounded notions (Lemma 198) and are real for self-adjoint operators (Theorem 200). The layer closes with criteria for essential self-adjointness: dense range (Theorem 201), and, through Hilbert direct sums and internal orthogonal decompositions (Definitions 202, 204 and 205, Lemmas 203 and 207), direct sums of bounded self-adjoint operators (Propositions 208–209). -- *Integration against a projection-valued measure (p. 180, items 210–237).* Under standing hypotheses (Convention 210), and with sesquilinear and quadratic forms on subspaces (Definitions 213–214) and the needed measure theory (Theorems 217–218, Propositions 219–223, Definition 221), the integral of an unbounded measurable function against a projection-valued measure is constructed on its natural domain (Propositions 229 and 231). It coincides with the bounded integral of §10.2 (Proposition 232), ignores null sets (Lemma 233), is the limit of its truncations (Lemma 234), and is self-adjoint for real-valued functions (Proposition 237). -- *Bounded normal operators (p. 198, items 238–256).* For normal operators (Definition 238) the norm equals the spectral radius (Proposition 243). Spectral subspaces (Definition 244, Propositions 245–246) and almost eigenvectors (Definition 248, Lemmas 247 and 249–253) lead to the two-variable spectral mapping theorem for polynomials in $$A$$ and $$A^*$$ (Theorem 254, Corollary 255), and hence to the continuous functional calculus for a normal operator (Theorem 256). Lemma 250 is stated with a constant uniform over all eigenvalues $$\lvert \lambda \rvert \le R$$, which is what the proof of Theorem 254 consumes; the Lean proof of Theorem 254 itself takes a shorter route through Mathlib's continuous functional calculus (`cfc_map_spectrum`), as a formalization note in the blueprint records, while the almost-eigenvector lemmas are formalised in their own right. -- *From a continuous functional calculus to a projection-valued measure (p. 212, items 257–271).* Under standing hypotheses (Convention 257), an abstract continuous functional calculus (Definition 258) is extended, through its associated measures (Definition 260), to bounded measurable functions (Definition 263). The extension is linear, multiplicative and compatible with conjugation (Lemmas 264 and 268, Proposition 267), and it yields a projection-valued measure (Theorem 269). Combined with the previous stage, this gives the Spectral Theorem for Bounded Normal Operators (Theorem 271). -- *The Cayley transform and the unbounded spectral theorem (pp. 221–230, items 272–282).* Unitary operators are normal, with spectrum on the unit circle (Lemmas 272–273). The Cayley map (Lemma 274) and the Cayley transform of a self-adjoint operator (Theorem 275), with its spectral mapping (Lemma 276), reduce the unbounded self-adjoint case to the bounded normal one: a projection-valued measure is transported along a Borel bijection (Lemma 278), the Cayley transform omits the point $$1$$ (Lemma 279), and the spectral measure is transported through the Cayley transform (Theorem 281). The result is the Spectral Theorem for Unbounded, Self-Adjoint Operators (Theorem 282). +- *Unbounded operators (pp. 156–181, items 164–212).* Unbounded operators (Definition 164), their adjoints (Definition 168, Propositions 169–170, Lemma 171), symmetric operators, extensions and self-adjointness (Definitions 172–173 and 175, Proposition 174), positive operators, with positivity agreeing with the bounded notion (Definition 176, Lemma 177), and closed and closable operators via the graph in $$\mathbf{H} \times \mathbf{H}$$ (Definitions 178 and 181, Proposition 182), with the closure of a symmetric operator symmetric (Lemma 183) and essential self-adjointness defined (Definition 184). Elementary properties follow: symmetric operators are closable (Proposition 186), the adjoint of a closure (Proposition 187), uniqueness of the self-adjoint extension of an essentially self-adjoint operator (Proposition 190), and kernel and range, with the orthogonal complement of the range equal to the kernel of the adjoint (Definitions 191–192, Proposition 195). Next come the resolvent set and spectrum of an unbounded operator (Definition 199), which agree with the bounded notions (Lemma 201) and are real for self-adjoint operators (Theorem 203). The layer closes with criteria for essential self-adjointness: dense range (Theorem 204), and, through Hilbert direct sums and internal orthogonal decompositions (Definitions 205, 207 and 208, Lemmas 206 and 210), direct sums of bounded self-adjoint operators (Propositions 211–212). +- *Integration against a projection-valued measure (p. 181, items 213–240).* Under standing hypotheses (Convention 213), and with sesquilinear and quadratic forms on subspaces (Definitions 216–217) and the needed measure theory (Theorems 220–221, Propositions 222–226, Definition 224), the integral of an unbounded measurable function against a projection-valued measure is constructed on its natural domain (Propositions 232 and 234). It coincides with the bounded integral of §10.2 (Proposition 235), ignores null sets (Lemma 236), is the limit of its truncations (Lemma 237), and is self-adjoint for real-valued functions (Proposition 240). +- *Bounded normal operators (p. 199, items 241–259).* For normal operators (Definition 241) the norm equals the spectral radius (Proposition 246). Spectral subspaces (Definition 247, Propositions 248–249) and almost eigenvectors (Definition 251, Lemmas 250 and 252–256) lead to the two-variable spectral mapping theorem for polynomials in $$A$$ and $$A^*$$ (Theorem 257, Corollary 258), and hence to the continuous functional calculus for a normal operator (Theorem 259). Lemma 253 is stated with a constant uniform over all eigenvalues $$\lvert \lambda \rvert \le R$$, which is what the proof of Theorem 257 consumes; the Lean proof of Theorem 257 itself takes a shorter route through Mathlib's continuous functional calculus (`cfc_map_spectrum`), as a formalization note in the blueprint records, while the almost-eigenvector lemmas are formalised in their own right. +- *From a continuous functional calculus to a projection-valued measure (p. 213, items 260–274).* Under standing hypotheses (Convention 260), an abstract continuous functional calculus (Definition 261) is extended, through its associated measures (Definition 263), to bounded measurable functions (Definition 266). The extension is linear, multiplicative and compatible with conjugation (Lemmas 267 and 271, Proposition 270), and it yields a projection-valued measure (Theorem 272). Combined with the previous stage, this gives the Spectral Theorem for Bounded Normal Operators (Theorem 274). +- *The Cayley transform and the unbounded spectral theorem (pp. 222–231, items 275–285).* Unitary operators are normal, with spectrum on the unit circle (Lemmas 275–276). The Cayley map (Lemma 277) and the Cayley transform of a self-adjoint operator (Theorem 278), with its spectral mapping (Lemma 279), reduce the unbounded self-adjoint case to the bounded normal one: a projection-valued measure is transported along a Borel bijection (Lemma 281), the Cayley transform omits the point $$1$$ (Lemma 282), and the spectral measure is transported through the Cayley transform (Theorem 284). The result is the Spectral Theorem for Unbounded, Self-Adjoint Operators (Theorem 285). +- *The functional calculus of an unbounded self-adjoint operator (p. 234, items 286–288).* Added for §10.4. The spectral measure of a self-adjoint operator is named (Definition 286), the functional calculus $$f(A)$$ is the integral of $$f$$ against it (Definition 287), and for bounded $$f$$ it agrees with the bounded calculus of §10.2 (Lemma 288). Earlier in the section, a self-adjoint operator is shown to have no proper symmetric extension (Lemma 189), which §10.4 uses to identify the generator of $$e^{itA}$$ with $$A$$. **Where the Lean lives:** `Physicslib4/Spectral/Unbounded/` (`Basic`, `Spectrum`, `DirectSum`, `Integral`, `Normal`, `AbstractCalculus`, `Cayley`) @@ -24,209 +25,215 @@ usemathjax: true Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration.
-§10.3.1 · Unbounded Operators › Adjoint and Closure of an Unbounded Operator (p. 156) — 19 items - -- [**Definition 164**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-3.1) — Unbounded Operator · `LinearPMap` (+1 more) -- [**Proposition 165**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:convergence-facts) — Convergence Facts for Sequences and Series · `tendsto_atTop_ciSup` (+5 more) -- [**Lemma 166**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-dense-testing) — Equality Testing on a Dense Subspace, First Slot · `Dense.eq_of_inner_left` -- [**Lemma 167**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-dense-testing-second-slot) — Equality Testing on a Dense Subspace, Second Slot · `Dense.eq_of_inner_right` -- [**Definition 168**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.1) — Adjoint of an Unbounded Operator · `LinearPMap.adjointDomain` (+3 more) -- [**Proposition 169**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:adjoint-well-defined) — The Adjoint is Well Defined · `Physicslib4.Spectral.Unbounded.existsUnique_adjoint_apply` -- [**Proposition 170**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-linearity-of-the-adjoint) — Linearity of the Adjoint · `Physicslib4.Spectral.Unbounded.smul_add_mem_adjoint_domain` (+1 more) -- [**Lemma 171**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:characterizing-adjoint-domain-membership) — Characterizing Membership in the Adjoint's Domain · `Physicslib4.Spectral.Unbounded.mem_adjoint_domain_iff_exists` (+1 more) -- [**Definition 172**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.2) — Symmetric Operator · `Physicslib4.Spectral.Unbounded.IsSymmetric` (+1 more) -- [**Definition 173**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.3) — Extension of an Operator · `LinearPMap.le` (+2 more) -- [**Proposition 174**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.4) — Symmetric Operators and the Adjoint · `Physicslib4.Spectral.Unbounded.isSymmetric_iff_le_adjoint` -- [**Definition 175**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.5) — Self-Adjoint Operator · `LinearPMap.instStar` (+1 more) -- [**Definition 176**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:product-hilbert-space) — The Product Hilbert Space $$\mathbf{H} \times \mathbf{H}$$ · `WithLp.instProdInnerProductSpace` (+2 more) -- [**Theorem 177**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:sequential-closedness) — Sequential Characterization of Closed Sets and Closures · `isSeqClosed_iff_isClosed` (+1 more) -- [**Lemma 178**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:componentwise-convergence) — Convergence in $$\mathbf{H} \times \mathbf{H}$$ is Componentwise · `Prod.tendsto_iff` -- [**Definition 179**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.6) — Closed and Closable Operators · `LinearPMap.graph` (+4 more) -- [**Proposition 180**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:closure-linearity-and-sequential-description) — Linearity and the Sequential Description of the Closure · `Physicslib4.Spectral.Unbounded.hasDenseDomain_closure` (+5 more) -- [**Lemma 181**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:closure-of-symmetric-is-symmetric) — The Closure of a Symmetric Operator is Symmetric · `Physicslib4.Spectral.Unbounded.isSymmetric_closure` -- [**Definition 182**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.7) — Essentially Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.IsEssentiallySelfAdjoint` +§10.3.1 · Unbounded Operators › Adjoint and Closure of an Unbounded Operator (p. 156) — 21 items + +- [**Definition 164**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-3.1) — Unbounded Operator · `LinearPMap` (+1 more) +- [**Proposition 165**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:convergence-facts) — Convergence Facts for Sequences and Series · `tendsto_atTop_ciSup` (+6 more) +- [**Lemma 166**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-dense-testing) — Equality Testing on a Dense Subspace, First Slot · `Dense.eq_of_inner_left` +- [**Lemma 167**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-dense-testing-second-slot) — Equality Testing on a Dense Subspace, Second Slot · `Dense.eq_of_inner_right` +- [**Definition 168**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.1) — Adjoint of an Unbounded Operator · `LinearPMap.adjointDomain` (+3 more) +- [**Proposition 169**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:adjoint-well-defined) — The Adjoint is Well Defined · `Physicslib4.Spectral.Unbounded.existsUnique_adjoint_apply` +- [**Proposition 170**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-linearity-of-the-adjoint) — Linearity of the Adjoint · `Physicslib4.Spectral.Unbounded.smul_add_mem_adjoint_domain` (+1 more) +- [**Lemma 171**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:characterizing-adjoint-domain-membership) — Characterizing Membership in the Adjoint's Domain · `Physicslib4.Spectral.Unbounded.mem_adjoint_domain_iff_exists` (+1 more) +- [**Definition 172**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.2) — Symmetric Operator · `Physicslib4.Spectral.Unbounded.IsSymmetric` (+1 more) +- [**Definition 173**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.3) — Extension of an Operator · `LinearPMap.le` (+2 more) +- [**Proposition 174**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.4) — Symmetric Operators and the Adjoint · `Physicslib4.Spectral.Unbounded.isSymmetric_iff_le_adjoint` +- [**Definition 175**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.5) — Self-Adjoint Operator · `LinearPMap.instStar` (+1 more) +- [**Definition 176**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:positive-unbounded-operator) — Positive Operator · `Physicslib4.Spectral.Unbounded.IsPositive` +- [**Lemma 177**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-bounded-agrees) — Positivity of a Bounded Operator · `Physicslib4.Spectral.Unbounded.isPositive_toPMap_iff` +- [**Definition 178**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:product-hilbert-space) — The Product Hilbert Space $$\mathbf{H} \times \mathbf{H}$$ · `WithLp.instProdInnerProductSpace` (+2 more) +- [**Theorem 179**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:sequential-closedness) — Sequential Characterization of Closed Sets and Closures · `isSeqClosed_iff_isClosed` (+1 more) +- [**Lemma 180**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:componentwise-convergence) — Convergence in $$\mathbf{H} \times \mathbf{H}$$ is Componentwise · `Prod.tendsto_iff` +- [**Definition 181**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.6) — Closed and Closable Operators · `LinearPMap.graph` (+4 more) +- [**Proposition 182**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:closure-linearity-and-sequential-description) — Linearity and the Sequential Description of the Closure · `Physicslib4.Spectral.Unbounded.hasDenseDomain_closure` (+5 more) +- [**Lemma 183**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:closure-of-symmetric-is-symmetric) — The Closure of a Symmetric Operator is Symmetric · `Physicslib4.Spectral.Unbounded.isSymmetric_closure` +- [**Definition 184**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.7) — Essentially Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.IsEssentiallySelfAdjoint`
-§10.3.1 · Unbounded Operators › Elementary Properties of Adjoints and Closed Operators (p. 163) — 13 items - -- [**Definition 183**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:closed-linear-map-on-a-subspace) — Closed Linear Map on a Subspace · `LinearPMap.IsClosed` (+1 more) -- [**Proposition 184**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.8) — Closedness of the Adjoint's Graph; Closability of Symmetric Operators · `Physicslib4.Spectral.Unbounded.isClosable_of_isSymmetric` (+1 more) -- [**Proposition 185**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.10) — The Adjoint of a Closure · `Physicslib4.Spectral.Unbounded.adjoint_closure_eq_adjoint` -- [**Lemma 186**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:extension-reverses-adjoint-domains) — Extension Reverses Adjoint Domains · `Physicslib4.Spectral.Unbounded.adjoint_le_adjoint_of_le` -- [**Proposition 187**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.11) — Uniqueness of the Self-Adjoint Extension of an Essentially Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.existsUnique_isSelfAdjoint_extension` (+1 more) -- [**Definition 188**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kernel-of-an-unbounded-operator) — Kernel of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.ker` -- [**Definition 189**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:range-of-an-unbounded-operator) — Range of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.range` -- [**Proposition 190**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.49) — Orthogonal Decomposition and the Double Complement · `Physicslib4.Spectral.Unbounded.existsUnique_add_mem_orthogonal` (+1 more) -- [**Corollary 191**](blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:trivial-complement-characterizes-density) — Trivial Complement Characterizes Density · `Physicslib4.Spectral.Unbounded.dense_iff_orthogonal_eq_bot` -- [**Proposition 192**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.12) — Orthogonal Complement of the Range · `Physicslib4.Spectral.Unbounded.orthogonal_range_eq_ker_adjoint` -- [**Proposition 193**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.13) — Adjoint of a Sum with a Bounded Operator · `Physicslib4.Spectral.Unbounded.adjoint_add_toPMap` (+1 more) -- [**Lemma 194**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-of-scalar-multiple-of-identity) — Adjoint of a Scalar Multiple of the Identity · `Physicslib4.Spectral.Unbounded.adjoint_smul_id` -- [**Proposition 195**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.14) — Closedness of the Range from a Lower Bound · `Physicslib4.Spectral.Unbounded.isClosed_range_subSmul` +§10.3.1 · Unbounded Operators › Elementary Properties of Adjoints and Closed Operators (p. 164) — 14 items + +- [**Definition 185**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:closed-linear-map-on-a-subspace) — Closed Linear Map on a Subspace · `LinearPMap.IsClosed` (+1 more) +- [**Proposition 186**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.8) — Closedness of the Adjoint's Graph; Closability of Symmetric Operators · `Physicslib4.Spectral.Unbounded.isClosable_of_isSymmetric` (+1 more) +- [**Proposition 187**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.10) — The Adjoint of a Closure · `Physicslib4.Spectral.Unbounded.adjoint_closure_eq_adjoint` +- [**Lemma 188**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:extension-reverses-adjoint-domains) — Extension Reverses Adjoint Domains · `Physicslib4.Spectral.Unbounded.adjoint_le_adjoint_of_le` +- [**Lemma 189**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:self-adjoint-maximally-symmetric) — A Self-Adjoint Operator has no Proper Symmetric Extension · `Physicslib4.Spectral.Unbounded.eq_of_isSelfAdjoint_of_isSymmetric_of_le` +- [**Proposition 190**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.11) — Uniqueness of the Self-Adjoint Extension of an Essentially Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.existsUnique_isSelfAdjoint_extension` (+1 more) +- [**Definition 191**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kernel-of-an-unbounded-operator) — Kernel of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.ker` +- [**Definition 192**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:range-of-an-unbounded-operator) — Range of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.range` +- [**Proposition 193**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-a.49) — Orthogonal Decomposition and the Double Complement · `Physicslib4.Spectral.Unbounded.existsUnique_add_mem_orthogonal` (+1 more) +- [**Corollary 194**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:trivial-complement-characterizes-density) — Trivial Complement Characterizes Density · `Physicslib4.Spectral.Unbounded.dense_iff_orthogonal_eq_bot` +- [**Proposition 195**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.12) — Orthogonal Complement of the Range · `Physicslib4.Spectral.Unbounded.orthogonal_range_eq_ker_adjoint` +- [**Proposition 196**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.13) — Adjoint of a Sum with a Bounded Operator · `Physicslib4.Spectral.Unbounded.adjoint_add_toPMap` (+1 more) +- [**Lemma 197**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-of-scalar-multiple-of-identity) — Adjoint of a Scalar Multiple of the Identity · `Physicslib4.Spectral.Unbounded.adjoint_smul_id` +- [**Proposition 198**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.14) — Closedness of the Range from a Lower Bound · `Physicslib4.Spectral.Unbounded.isClosed_range_subSmul`
-§10.3.1 · Unbounded Operators › The Spectrum of an Unbounded Operator (p. 169) — 5 items +§10.3.1 · Unbounded Operators › The Spectrum of an Unbounded Operator (p. 170) — 5 items -- [**Definition 196**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.16) — Resolvent Set and Spectrum of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.pmapResolventSet` (+2 more) -- [**Lemma 197**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:uniqueness-of-resolvent) — Uniqueness of the Resolvent · `Physicslib4.Spectral.Unbounded.existsUnique_isResolvent` -- [**Lemma 198**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectrum-notions-agree) — The Two Notions of Spectrum Agree for Bounded Operators · `Physicslib4.Spectral.Unbounded.pmapResolventSet_toPMap_top` (+1 more) -- [**Lemma 199**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:b-squared-inequality-symmetric) — The $$b^2$$ Inequality for Symmetric Operators · `Physicslib4.Spectral.Unbounded.sq_norm_le_of_isSymmetric` -- [**Theorem 200**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-9.17) — Spectrum of a Self-Adjoint Operator is Real · `Physicslib4.Spectral.Unbounded.pmapSpectrum_subset_real` +- [**Definition 199**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-9.16) — Resolvent Set and Spectrum of an Unbounded Operator · `Physicslib4.Spectral.Unbounded.pmapResolventSet` (+2 more) +- [**Lemma 200**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:uniqueness-of-resolvent) — Uniqueness of the Resolvent · `Physicslib4.Spectral.Unbounded.existsUnique_isResolvent` +- [**Lemma 201**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spectrum-notions-agree) — The Two Notions of Spectrum Agree for Bounded Operators · `Physicslib4.Spectral.Unbounded.pmapResolventSet_toPMap_top` (+1 more) +- [**Lemma 202**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:b-squared-inequality-symmetric) — The $$b^2$$ Inequality for Symmetric Operators · `Physicslib4.Spectral.Unbounded.sq_norm_le_of_isSymmetric` +- [**Theorem 203**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-9.17) — Spectrum of a Self-Adjoint Operator is Real · `Physicslib4.Spectral.Unbounded.pmapSpectrum_subset_real`
-§10.3.1 · Unbounded Operators › Conditions for Self-Adjointness and Essential Self-Adjointness (p. 172) — 9 items - -- [**Theorem 201**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-9.21) — Essential Self-Adjointness via Dense Range · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_iff_dense_range` -- [**Definition 202**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-a.45) — Hilbert Space Direct Sum · `lp` (+1 more) -- [**Lemma 203**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:finite-direct-sum-dense) — The Finite Direct Sum is Dense · `Physicslib4.Spectral.Unbounded.dense_setOf_finite_support` -- [**Definition 204**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:unitary-operator) — Unitary Operator · `unitary` (+2 more) -- [**Definition 205**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:internal-orthogonal-decomposition) — Internal Orthogonal Decomposition · `Physicslib4.Spectral.Unbounded.IsInternalOrthogonalDecomposition` -- [**Proposition 206**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:polarization-identity) — Polarization Identity for the Inner Product · `inner_eq_sum_norm_sq_div_four` (+1 more) -- [**Lemma 207**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:internal-decomposition-unitary) — Internal Decompositions are Unitarily External Direct Sums · `Physicslib4.Spectral.Unbounded.hasSum_injective_of_isInternalOrthogonalDecomposition` (+2 more) -- [**Proposition 208**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.26) — Direct Sums of Bounded Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_of_isDirectSumOperator` (+6 more) -- [**Proposition 209**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.26-internal) — Direct Sums of Bounded Self-Adjoint Operators, Internal Form · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_of_isInternalDirectSumOperator` (+6 more) +§10.3.1 · Unbounded Operators › Conditions for Self-Adjointness and Essential Self-Adjointness (p. 173) — 9 items + +- [**Theorem 204**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-9.21) — Essential Self-Adjointness via Dense Range · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_iff_dense_range` +- [**Definition 205**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-a.45) — Hilbert Space Direct Sum · `lp` (+1 more) +- [**Lemma 206**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:finite-direct-sum-dense) — The Finite Direct Sum is Dense · `Physicslib4.Spectral.Unbounded.dense_setOf_finite_support` +- [**Definition 207**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:unitary-operator) — Unitary Operator · `unitary` (+2 more) +- [**Definition 208**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:internal-orthogonal-decomposition) — Internal Orthogonal Decomposition · `Physicslib4.Spectral.Unbounded.IsInternalOrthogonalDecomposition` +- [**Proposition 209**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:polarization-identity) — Polarization Identity for the Inner Product · `inner_eq_sum_norm_sq_div_four` (+1 more) +- [**Lemma 210**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:internal-decomposition-unitary) — Internal Decompositions are Unitarily External Direct Sums · `Physicslib4.Spectral.Unbounded.hasSum_injective_of_isInternalOrthogonalDecomposition` (+2 more) +- [**Proposition 211**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.26) — Direct Sums of Bounded Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_of_isDirectSumOperator` (+6 more) +- [**Proposition 212**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-9.26-internal) — Direct Sums of Bounded Self-Adjoint Operators, Internal Form · `Physicslib4.Spectral.Unbounded.isEssentiallySelfAdjoint_of_isInternalDirectSumOperator` (+6 more)
-§10.3.1 · Integration Against a Projection-Valued Measure (p. 180) — 28 items - -- [**Convention 210**](blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:section-integration) — Standing Hypotheses: Integration against a Projection-Valued Measure *(a standing convention, not a declaration; it carries no Lean annotation)* -- [**Lemma 211**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measure-total-mass) — The Associated Measure has Total Mass $$\left\| \psi \right\|^2$$ · `Physicslib4.Spectral.Unbounded.assoc_univ_eq` (+1 more) -- [**Lemma 212**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:norm-identity-bounded-integral) — Norm Identity for the Bounded Integral · `Physicslib4.Spectral.Unbounded.norm_sq_integral_apply` -- [**Definition 213**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-sesquilinear-form-on-a-subspace) — Sesquilinear Form on a Subspace · `Physicslib4.Spectral.Unbounded.SesquilinearFormOn` -- [**Definition 214**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-quadratic-form-on-a-subspace) — Quadratic Form on a Subspace · `Physicslib4.Spectral.Unbounded.IsQuadraticFormOn` (+2 more) -- [**Proposition 215**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:quadratic-forms-on-a-subspace-properties) — Properties of Quadratic Forms on a Subspace · `Physicslib4.Spectral.Unbounded.polarizationOn_eq_inner` (+1 more) -- [**Lemma 216**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:restriction-of-quadratic-form) — Restriction of a Quadratic Form to a Subspace · `Physicslib4.Spectral.Unbounded.isQuadraticFormOn_restrict` (+1 more) -- [**Theorem 217**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem-for-integrals) — Monotone Convergence Theorem, for Integrals · `MeasureTheory.lintegral_tendsto_of_tendsto_of_monotone` (+1 more) -- [**Theorem 218**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:dominated-convergence-theorem) — Dominated Convergence Theorem · `MeasureTheory.tendsto_integral_of_dominated_convergence` (+2 more) -- [**Proposition 219**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:additivity-of-the-integral-in-the-measure) — Linearity of the Integral in the Measure · `MeasureTheory.lintegral_add_measure` (+3 more) -- [**Proposition 220**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:monotonicity-of-the-integral-in-the-measure) — Monotonicity of the Integral in the Measure · `MeasureTheory.lintegral_mono'` (+1 more) -- [**Definition 221**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-a.46) — $$L^2$$ of a Measure Space · `MeasureTheory.MemLp` (+3 more) -- [**Proposition 222**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:countable-additivity-of-the-integral) — Countable Additivity of the Integral over a Disjoint Cover · `MeasureTheory.lintegral_iUnion` (+1 more) -- [**Proposition 223**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integrals-agree-when-measures-agree) — Integrals Agree when Measures Agree on a Set · `Physicslib4.Spectral.Unbounded.setLIntegral_congr_measure` -- [**Lemma 224**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:range-of-projection-is-kernel) — The Range of a Projection is the Kernel of its Complement · `Physicslib4.Spectral.Unbounded.range_eq_ker_one_sub` (+2 more) -- [**Lemma 225**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:closed-subspace-is-hilbert) — A Closed Subspace is a Separable Hilbert Space · `Physicslib4.Spectral.Unbounded.completeSpace_and_separableSpace_of_isClosed` (+2 more) -- [**Lemma 226**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:range-membership-concentrates-measure) — Range Membership Concentrates the Associated Measure · `Physicslib4.Spectral.Unbounded.assoc_compl_eq_zero` (+1 more) -- [**Lemma 227**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:norm-convergent-decomposition) — Norm-Convergent Decomposition over a Disjoint Cover · `Physicslib4.Spectral.Unbounded.hasSum_apply_of_partition` (+1 more) -- [**Lemma 228**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:l2-implies-l1) — $$L^2$$ Implies $$L^1$$ on a Finite Measure Space · `MeasureTheory.MemLp.integrable` (+1 more) -- [**Proposition 229**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.2) — Properties of the Integral against a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.integralDomain` (+7 more) -- [**Lemma 230**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bounded-on-set-range-in-domain) — Bounded on a Set Implies the Range Lies in the Domain · `Physicslib4.Spectral.Unbounded.range_subset_integralDomain` (+1 more) -- [**Proposition 231**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.1) — The Integral against a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.pmapIntegral` (+5 more) -- [**Proposition 232**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:coincidence-with-the-bounded-integral) — Coincidence with the Bounded Integral · `Physicslib4.Spectral.Unbounded.integralDomain_eq_top_of_bddMeasurable` (+1 more) -- [**Lemma 233**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:integral-ignores-null-sets) — The Integral Ignores Null Sets · `Physicslib4.Spectral.Unbounded.integralDomain_congr_of_null` (+1 more) -- [**Lemma 234**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:truncations-converge) — Truncations Converge to the Unbounded Integral · `Physicslib4.Spectral.Unbounded.tendsto_integral_truncation` -- [**Lemma 235**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measure-of-image) — The Associated Measure of a Bounded-Calculus Image · `Physicslib4.Spectral.Unbounded.assoc_integral_apply` (+1 more) -- [**Lemma 236**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:integral-preserves-spectral-subspaces) — The Integral Preserves Spectral Subspaces on which the Integrand is Bounded · `Physicslib4.Spectral.Unbounded.mapsTo_pmapIntegral_range` (+1 more) -- [**Proposition 237**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.3) — The Integral of a Real-Valued Function is Self-Adjoint · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_pmapIntegral_of_real` +§10.3.1 · Integration Against a Projection-Valued Measure (p. 181) — 28 items + +- [**Convention 213**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:section-integration) — Standing Hypotheses: Integration against a Projection-Valued Measure *(a standing convention, not a declaration; it carries no Lean annotation)* +- [**Lemma 214**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measure-total-mass) — The Associated Measure has Total Mass $$\left\| \psi \right\|^2$$ · `Physicslib4.Spectral.Unbounded.assoc_univ_eq` (+1 more) +- [**Lemma 215**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:norm-identity-bounded-integral) — Norm Identity for the Bounded Integral · `Physicslib4.Spectral.Unbounded.norm_sq_integral_apply` +- [**Definition 216**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-sesquilinear-form-on-a-subspace) — Sesquilinear Form on a Subspace · `Physicslib4.Spectral.Unbounded.SesquilinearFormOn` +- [**Definition 217**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-quadratic-form-on-a-subspace) — Quadratic Form on a Subspace · `Physicslib4.Spectral.Unbounded.IsQuadraticFormOn` (+2 more) +- [**Proposition 218**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:quadratic-forms-on-a-subspace-properties) — Properties of Quadratic Forms on a Subspace · `Physicslib4.Spectral.Unbounded.polarizationOn_eq_inner` (+1 more) +- [**Lemma 219**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:restriction-of-quadratic-form) — Restriction of a Quadratic Form to a Subspace · `Physicslib4.Spectral.Unbounded.isQuadraticFormOn_restrict` (+1 more) +- [**Theorem 220**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:monotone-convergence-theorem-for-integrals) — Monotone Convergence Theorem, for Integrals · `MeasureTheory.lintegral_tendsto_of_tendsto_of_monotone` (+1 more) +- [**Theorem 221**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:dominated-convergence-theorem) — Dominated Convergence Theorem · `MeasureTheory.tendsto_integral_of_dominated_convergence` (+3 more) +- [**Proposition 222**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:additivity-of-the-integral-in-the-measure) — Linearity of the Integral in the Measure · `MeasureTheory.lintegral_add_measure` (+3 more) +- [**Proposition 223**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:monotonicity-of-the-integral-in-the-measure) — Monotonicity of the Integral in the Measure · `MeasureTheory.lintegral_mono'` (+1 more) +- [**Definition 224**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-a.46) — $$L^2$$ of a Measure Space · `MeasureTheory.MemLp` (+3 more) +- [**Proposition 225**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:countable-additivity-of-the-integral) — Countable Additivity of the Integral over a Disjoint Cover · `MeasureTheory.lintegral_iUnion` (+1 more) +- [**Proposition 226**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:integrals-agree-when-measures-agree) — Integrals Agree when Measures Agree on a Set · `Physicslib4.Spectral.Unbounded.setLIntegral_congr_measure` +- [**Lemma 227**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:range-of-projection-is-kernel) — The Range of a Projection is the Kernel of its Complement · `Physicslib4.Spectral.Unbounded.range_eq_ker_one_sub` (+2 more) +- [**Lemma 228**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:closed-subspace-is-hilbert) — A Closed Subspace is a Separable Hilbert Space · `Physicslib4.Spectral.Unbounded.completeSpace_and_separableSpace_of_isClosed` (+2 more) +- [**Lemma 229**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:range-membership-concentrates-measure) — Range Membership Concentrates the Associated Measure · `Physicslib4.Spectral.Unbounded.assoc_compl_eq_zero` (+1 more) +- [**Lemma 230**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:norm-convergent-decomposition) — Norm-Convergent Decomposition over a Disjoint Cover · `Physicslib4.Spectral.Unbounded.hasSum_apply_of_partition` (+1 more) +- [**Lemma 231**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:l2-implies-l1) — $$L^2$$ Implies $$L^1$$ on a Finite Measure Space · `MeasureTheory.MemLp.integrable` (+1 more) +- [**Proposition 232**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.2) — Properties of the Integral against a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.integralDomain` (+7 more) +- [**Lemma 233**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bounded-on-set-range-in-domain) — Bounded on a Set Implies the Range Lies in the Domain · `Physicslib4.Spectral.Unbounded.range_subset_integralDomain` (+1 more) +- [**Proposition 234**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.1) — The Integral against a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.pmapIntegral` (+5 more) +- [**Proposition 235**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:coincidence-with-the-bounded-integral) — Coincidence with the Bounded Integral · `Physicslib4.Spectral.Unbounded.integralDomain_eq_top_of_bddMeasurable` (+1 more) +- [**Lemma 236**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:integral-ignores-null-sets) — The Integral Ignores Null Sets · `Physicslib4.Spectral.Unbounded.integralDomain_congr_of_null` (+1 more) +- [**Lemma 237**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:truncations-converge) — Truncations Converge to the Unbounded Integral · `Physicslib4.Spectral.Unbounded.tendsto_integral_truncation` +- [**Lemma 238**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:associated-measure-of-image) — The Associated Measure of a Bounded-Calculus Image · `Physicslib4.Spectral.Unbounded.assoc_integral_apply` (+1 more) +- [**Lemma 239**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:integral-preserves-spectral-subspaces) — The Integral Preserves Spectral Subspaces on which the Integrand is Bounded · `Physicslib4.Spectral.Unbounded.mapsTo_pmapIntegral_range` (+1 more) +- [**Proposition 240**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.3) — The Integral of a Real-Valued Function is Self-Adjoint · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_pmapIntegral_of_real`
-§10.3.1 · The Spectral Theorem for Bounded Normal Operators (p. 198) — 6 items +§10.3.1 · The Spectral Theorem for Bounded Normal Operators (p. 199) — 6 items -- [**Definition 238**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.19) — Normal Operator · `IsStarNormal` -- [**Lemma 239**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:self-adjoint-is-normal) — Bounded Self-Adjoint Operators are Normal · `IsSelfAdjoint.isStarNormal` -- [**Lemma 240**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:power-growth-controlled-by-spectral-radius) — Power Growth is Controlled by the Spectral Radius · `Physicslib4.Spectral.Unbounded.tendsto_norm_pow_div_atTop` -- [**Lemma 241**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.22) — Spectral Radius of a Product of Commuting Operators · `Physicslib4.Spectral.Unbounded.spectralRadius_mul_le_of_commute` -- [**Lemma 242**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-product-and-involution) — Adjoint of a Product; the Adjoint is an Involution · `ContinuousLinearMap.adjoint_comp` (+1 more) -- [**Proposition 243**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.21) — Norm Equals Spectral Radius for Normal Operators · `IsStarNormal.spectralRadius_eq_nnnorm` +- [**Definition 241**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.19) — Normal Operator · `IsStarNormal` +- [**Lemma 242**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:self-adjoint-is-normal) — Bounded Self-Adjoint Operators are Normal · `IsSelfAdjoint.isStarNormal` +- [**Lemma 243**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:power-growth-controlled-by-spectral-radius) — Power Growth is Controlled by the Spectral Radius · `Physicslib4.Spectral.Unbounded.tendsto_norm_pow_div_atTop` +- [**Lemma 244**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.22) — Spectral Radius of a Product of Commuting Operators · `Physicslib4.Spectral.Unbounded.spectralRadius_mul_le_of_commute` +- [**Lemma 245**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:adjoint-product-and-involution) — Adjoint of a Product; the Adjoint is an Involution · `ContinuousLinearMap.adjoint_comp` (+1 more) +- [**Proposition 246**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.21) — Norm Equals Spectral Radius for Normal Operators · `IsStarNormal.spectralRadius_eq_nnnorm`
-§10.3.1 · The Spectral Theorem for Bounded Normal Operators › Spectral Subspaces (p. 202) — 3 items +§10.3.1 · The Spectral Theorem for Bounded Normal Operators › Spectral Subspaces (p. 203) — 3 items -- [**Definition 244**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-7.14) — Spectral Subspaces · `Physicslib4.Spectral.Unbounded.spectralSubspace` -- [**Proposition 245**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.15) — Properties of Spectral Subspaces · `Physicslib4.Spectral.Unbounded.pvmOperator` (+3 more) -- [**Proposition 246**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.16) — Commuting Operators Preserve Spectral Subspaces · `Physicslib4.Spectral.Unbounded.commute_borelCalculus` (+1 more) +- [**Definition 247**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-7.14) — Spectral Subspaces · `Physicslib4.Spectral.Unbounded.spectralSubspace` +- [**Proposition 248**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.15) — Properties of Spectral Subspaces · `Physicslib4.Spectral.Unbounded.pvmOperator` (+3 more) +- [**Proposition 249**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-7.16) — Commuting Operators Preserve Spectral Subspaces · `Physicslib4.Spectral.Unbounded.commute_borelCalculus` (+1 more)
-§10.3.1 · The Spectral Theorem for Bounded Normal Operators › Almost Eigenvectors (p. 205) — 7 items +§10.3.1 · The Spectral Theorem for Bounded Normal Operators › Almost Eigenvectors (p. 206) — 7 items -- [**Lemma 247**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:normality-balances-norms) — Normality Balances the Two Norms · `Physicslib4.Spectral.Unbounded.norm_adjoint_sub_smul_apply` -- [**Definition 248**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.24) — $$\varepsilon$$-Almost Eigenvector · `Physicslib4.Spectral.Unbounded.IsAlmostEigenvector` -- [**Lemma 249**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.25) — Almost Eigenvectors and the Spectrum of a Normal Operator · `Physicslib4.Spectral.Unbounded.isAlmostEigenvector_adjoint` (+1 more) -- [**Lemma 250**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.26) — Polynomials Preserve Almost Eigenvectors · `Physicslib4.Spectral.Unbounded.exists_const_isAlmostEigenvector_mvApply_uniform` (+1 more) -- [**Lemma 251**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:polynomials-in-normal-are-normal) — Polynomials in a Normal Operator are Normal · `Physicslib4.Spectral.Unbounded.mvApply` (+4 more) -- [**Lemma 252**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:restriction-of-normal-operator) — Restriction of a Normal Operator to a Doubly Invariant Subspace · `Physicslib4.Spectral.Unbounded.exists_restrict_isStarNormal` -- [**Lemma 253**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.27) — An Almost-Eigenvector Subspace for a Polynomial in a Normal Operator · `Physicslib4.Spectral.Unbounded.exists_subspace_isAlmostEigenvector` +- [**Lemma 250**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:normality-balances-norms) — Normality Balances the Two Norms · `Physicslib4.Spectral.Unbounded.norm_adjoint_sub_smul_apply` +- [**Definition 251**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.24) — $$\varepsilon$$-Almost Eigenvector · `Physicslib4.Spectral.Unbounded.IsAlmostEigenvector` +- [**Lemma 252**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.25) — Almost Eigenvectors and the Spectrum of a Normal Operator · `Physicslib4.Spectral.Unbounded.isAlmostEigenvector_adjoint` (+1 more) +- [**Lemma 253**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.26) — Polynomials Preserve Almost Eigenvectors · `Physicslib4.Spectral.Unbounded.exists_const_isAlmostEigenvector_mvApply_uniform` (+1 more) +- [**Lemma 254**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:polynomials-in-normal-are-normal) — Polynomials in a Normal Operator are Normal · `Physicslib4.Spectral.Unbounded.mvApply` (+4 more) +- [**Lemma 255**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:restriction-of-normal-operator) — Restriction of a Normal Operator to a Doubly Invariant Subspace · `Physicslib4.Spectral.Unbounded.exists_restrict_isStarNormal` +- [**Lemma 256**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.27) — An Almost-Eigenvector Subspace for a Polynomial in a Normal Operator · `Physicslib4.Spectral.Unbounded.exists_subspace_isAlmostEigenvector`
-§10.3.1 · The Spectral Theorem for Bounded Normal Operators › The Two-Variable Spectral Mapping Theorem (p. 209) — 2 items +§10.3.1 · The Spectral Theorem for Bounded Normal Operators › The Two-Variable Spectral Mapping Theorem (p. 210) — 2 items -- [**Theorem 254**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.23) — Spectral Mapping for Polynomials in $$A$$ and $$A^*$$ · `Physicslib4.Spectral.Unbounded.spectrum_mvApply` -- [**Corollary 255**](blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:norm-of-polynomial-in-a-astar) — Norm of a Polynomial in $$A$$ and $$A^*$$ · `Physicslib4.Spectral.Unbounded.norm_mvApply` +- [**Theorem 257**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.23) — Spectral Mapping for Polynomials in $$A$$ and $$A^*$$ · `Physicslib4.Spectral.Unbounded.spectrum_mvApply` +- [**Corollary 258**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:norm-of-polynomial-in-a-astar) — Norm of a Polynomial in $$A$$ and $$A^*$$ · `Physicslib4.Spectral.Unbounded.norm_mvApply`
-§10.3.1 · The Spectral Theorem for Bounded Normal Operators › The Continuous Functional Calculus for a Normal Operator (p. 211) — 1 item +§10.3.1 · The Spectral Theorem for Bounded Normal Operators › The Continuous Functional Calculus for a Normal Operator (p. 212) — 1 item -- [**Theorem 256**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:continuous-functional-calculus-normal) — Continuous Functional Calculus for a Normal Operator · `Physicslib4.Spectral.Unbounded.mvPolyOn` (+9 more) +- [**Theorem 259**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:continuous-functional-calculus-normal) — Continuous Functional Calculus for a Normal Operator · `Physicslib4.Spectral.Unbounded.mvPolyOn` (+9 more)
-§10.3.1 · From a Continuous Functional Calculus to a Projection-Valued Measure (p. 212) — 14 items - -- [**Convention 257**](blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:section-abstract) — Standing Hypotheses: The Abstract Functional Calculus *(a standing convention, not a declaration; it carries no Lean annotation)* -- [**Definition 258**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-continuous-functional-calculus) — Abstract Continuous Functional Calculus · `Physicslib4.Spectral.Unbounded.IsAbstractCalculus` -- [**Lemma 259**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-calculus-non-negative) — An Abstract Calculus is Non-Negative · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_of_real` (+2 more) -- [**Definition 260**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-associated-measures) — The Measures Associated to an Abstract Calculus · `Physicslib4.Spectral.Unbounded.abstractMeasure` (+2 more) -- [**Lemma 261**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-associated-measures-finite) — The Abstract Associated Measures are Finite · `Physicslib4.Spectral.Unbounded.abstractMeasure_univ` -- [**Proposition 262**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:abstract-extended-forms-are-bounded) — The Extended Forms are Bounded Quadratic Forms · `Physicslib4.Spectral.Unbounded.isBoundedQuadraticForm_abstractForm` (+3 more) -- [**Definition 263**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-extended-calculus) — The Extended Calculus · `Physicslib4.Spectral.Unbounded.extendedCalculus` (+2 more) -- [**Lemma 264**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-linear) — The Extended Calculus is Linear · `Physicslib4.Spectral.Unbounded.extendedCalculus_smul_add` -- [**Lemma 265**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-convergence) — Off-Diagonal Formula and Bounded Convergence for the Extended Calculus · `Physicslib4.Spectral.Unbounded.polarization_abstractForm` (+1 more) -- [**Lemma 266**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-real-self-adjoint) — Real Functions Give Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_extendedCalculus_of_real` -- [**Proposition 267**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:abstract-extended-multiplicative) — The Extended Calculus is Multiplicative · `Physicslib4.Spectral.Unbounded.extendedCalculus_mul` -- [**Lemma 268**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-conjugation) — The Extended Calculus Respects Conjugation · `Physicslib4.Spectral.Unbounded.extendedCalculus_conj` -- [**Theorem 269**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:abstract-calculus-yields-pvm) — A Continuous Functional Calculus Yields a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.abstractPVM` (+2 more) -- [**Corollary 270**](blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:abstract-extended-norm-bound) — The Extended Calculus is Norm-Bounded · `Physicslib4.Spectral.Unbounded.norm_extendedCalculus_le` +§10.3.1 · From a Continuous Functional Calculus to a Projection-Valued Measure (p. 213) — 14 items + +- [**Convention 260**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#conv:section-abstract) — Standing Hypotheses: The Abstract Functional Calculus *(a standing convention, not a declaration; it carries no Lean annotation)* +- [**Definition 261**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-continuous-functional-calculus) — Abstract Continuous Functional Calculus · `Physicslib4.Spectral.Unbounded.IsAbstractCalculus` +- [**Lemma 262**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-calculus-non-negative) — An Abstract Calculus is Non-Negative · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_of_real` (+2 more) +- [**Definition 263**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-associated-measures) — The Measures Associated to an Abstract Calculus · `Physicslib4.Spectral.Unbounded.abstractMeasure` (+2 more) +- [**Lemma 264**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-associated-measures-finite) — The Abstract Associated Measures are Finite · `Physicslib4.Spectral.Unbounded.abstractMeasure_univ` +- [**Proposition 265**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:abstract-extended-forms-are-bounded) — The Extended Forms are Bounded Quadratic Forms · `Physicslib4.Spectral.Unbounded.isBoundedQuadraticForm_abstractForm` (+3 more) +- [**Definition 266**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:abstract-extended-calculus) — The Extended Calculus · `Physicslib4.Spectral.Unbounded.extendedCalculus` (+2 more) +- [**Lemma 267**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-linear) — The Extended Calculus is Linear · `Physicslib4.Spectral.Unbounded.extendedCalculus_smul_add` +- [**Lemma 268**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-convergence) — Off-Diagonal Formula and Bounded Convergence for the Extended Calculus · `Physicslib4.Spectral.Unbounded.polarization_abstractForm` (+1 more) +- [**Lemma 269**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-real-self-adjoint) — Real Functions Give Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.isSelfAdjoint_extendedCalculus_of_real` +- [**Proposition 270**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:abstract-extended-multiplicative) — The Extended Calculus is Multiplicative · `Physicslib4.Spectral.Unbounded.extendedCalculus_mul` +- [**Lemma 271**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:abstract-extended-conjugation) — The Extended Calculus Respects Conjugation · `Physicslib4.Spectral.Unbounded.extendedCalculus_conj` +- [**Theorem 272**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:abstract-calculus-yields-pvm) — A Continuous Functional Calculus Yields a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.abstractPVM` (+2 more) +- [**Corollary 273**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#crllr:abstract-extended-norm-bound) — The Extended Calculus is Norm-Bounded · `Physicslib4.Spectral.Unbounded.norm_extendedCalculus_le`
-§10.3.1 · From a Continuous Functional Calculus to a Projection-Valued Measure › The Spectral Theorem for Bounded Normal Operators (p. 219) — 1 item +§10.3.1 · From a Continuous Functional Calculus to a Projection-Valued Measure › The Spectral Theorem for Bounded Normal Operators (p. 220) — 1 item -- [**Theorem 271**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.20) — Spectral Theorem for Bounded Normal Operators · `Physicslib4.Spectral.Unbounded.existsUnique_spectralMeasure_normal` (+1 more) +- [**Theorem 274**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.20) — Spectral Theorem for Bounded Normal Operators · `Physicslib4.Spectral.Unbounded.existsUnique_spectralMeasure_normal` (+1 more)
-§10.3.1 · The Cayley Transform (p. 221) — 5 items +§10.3.1 · The Cayley Transform (p. 222) — 5 items -- [**Lemma 272**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:unitary-is-normal) — Unitary Operators are Normal · `Physicslib4.Spectral.Unbounded.unitary_mul_adjoint` -- [**Lemma 273**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:unitary-spectrum-circle) — The Spectrum of a Unitary Operator Lies on the Unit Circle · `spectrum.subset_circle_of_unitary` (+1 more) -- [**Lemma 274**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-map) — The Cayley Map and its Inverse · `Physicslib4.Spectral.Unbounded.unitCircleMinusOne` (+9 more) -- [**Theorem 275**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.28) — Cayley Transform · `Physicslib4.Spectral.Unbounded.IsCayleyTransform` (+1 more) -- [**Lemma 276**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-spectral-mapping) — Spectral Mapping for the Cayley Transform · `Physicslib4.Spectral.Unbounded.mem_spectrum_iff_cayleyMap_mem_spectrum` (+1 more) +- [**Lemma 275**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:unitary-is-normal) — Unitary Operators are Normal · `Physicslib4.Spectral.Unbounded.unitary_mul_adjoint` +- [**Lemma 276**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:unitary-spectrum-circle) — The Spectrum of a Unitary Operator Lies on the Unit Circle · `spectrum.subset_circle_of_unitary` (+1 more) +- [**Lemma 277**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-map) — The Cayley Map and its Inverse · `Physicslib4.Spectral.Unbounded.unitCircleMinusOne` (+9 more) +- [**Theorem 278**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.28) — Cayley Transform · `Physicslib4.Spectral.Unbounded.IsCayleyTransform` (+1 more) +- [**Lemma 279**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-spectral-mapping) — Spectral Mapping for the Cayley Transform · `Physicslib4.Spectral.Unbounded.mem_spectrum_iff_cayleyMap_mem_spectrum` (+1 more)
-§10.3.1 · Proof of the Spectral Theorem for Unbounded Self-Adjoint Operators (p. 225) — 6 items - -- [**Theorem 277**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:change-of-variables) — Change of Variables for a Pushforward Measure · `MeasureTheory.lintegral_map_equiv` (+1 more) -- [**Lemma 278**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:borel-bijection-transports-pvm) — A Borel Bijection Transports a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.restrictPVM` (+2 more) -- [**Lemma 279**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-omits-one) — The Cayley Transform Omits the Point $$1$$ · `Physicslib4.Spectral.Unbounded.spectralMeasure_singleton_one_eq_zero` -- [**Proposition 280**](blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.29) — Spectral Subspaces of the Cayley Transform · `Physicslib4.Spectral.Unbounded.pmapIntegral_cayleyInv_eq` -- [**Theorem 281**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.30) — Transporting the Spectral Measure through the Cayley Transform · `Physicslib4.Spectral.Unbounded.cayleyPVM` (+1 more) -- [**Theorem 282**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.4) — Spectral Theorem for Unbounded, Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.existsUnique_spectralMeasure_unbounded` (+1 more) +§10.3.1 · Proof of the Spectral Theorem for Unbounded Self-Adjoint Operators (p. 226) — 9 items + +- [**Theorem 280**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:change-of-variables) — Change of Variables for a Pushforward Measure · `MeasureTheory.lintegral_map_equiv` (+1 more) +- [**Lemma 281**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:borel-bijection-transports-pvm) — A Borel Bijection Transports a Projection-Valued Measure · `Physicslib4.Spectral.Unbounded.restrictPVM` (+2 more) +- [**Lemma 282**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cayley-omits-one) — The Cayley Transform Omits the Point $$1$$ · `Physicslib4.Spectral.Unbounded.spectralMeasure_singleton_one_eq_zero` +- [**Proposition 283**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.29) — Spectral Subspaces of the Cayley Transform · `Physicslib4.Spectral.Unbounded.pmapIntegral_cayleyInv_eq` +- [**Theorem 284**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.30) — Transporting the Spectral Measure through the Cayley Transform · `Physicslib4.Spectral.Unbounded.cayleyPVM` (+1 more) +- [**Theorem 285**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.4) — Spectral Theorem for Unbounded, Self-Adjoint Operators · `Physicslib4.Spectral.Unbounded.existsUnique_spectralMeasure_unbounded` (+1 more) +- [**Definition 286**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spectral-measure) — Spectral Measure of a Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.spectralMeasure` (+3 more) +- [**Definition 287**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.5) — Functional Calculus for an Unbounded Self-Adjoint Operator · `Physicslib4.Spectral.Unbounded.functionalCalculus` (+2 more) +- [**Lemma 288**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:functional-calculus-bounded) — Functional Calculus of a Bounded Function · `Physicslib4.Spectral.Unbounded.functionalCalculus_of_bddMeasurable`
-[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · **§10.3 Unbounded** · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · **§10.3 Unbounded** · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) -← [§10.2 Spectral](sec10-2-spectral.html) · [§10.4 Spacetime](sec10-4-spacetime.html) → +← [§10.2 Spectral](sec10-2-spectral.html) · [§10.4 Stone](sec10-4-stone.html) → diff --git a/home_page/sec10-4-spacetime.md b/home_page/sec10-4-spacetime.md deleted file mode 100644 index da3ac84..0000000 --- a/home_page/sec10-4-spacetime.md +++ /dev/null @@ -1,212 +0,0 @@ ---- -title: "§10.4 Spacetime and causal structure (pp. 233–270)" -usemathjax: true ---- - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · **§10.4 Spacetime** · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) → - -# §10.4 Spacetime and causal structure (pp. 233–270) - -137 items (Definitions 283–419), building the entire causal and topological apparatus the axioms are indexed on. The trips underlying the chronological and causal relations $$\ll$$ and $$\prec$$ are genuine geodesics of the Levi-Civita connection of the metric, which the section constructs for an arbitrary pseudo-Riemannian metric on top of Mathlib's covariant derivatives (Mathlib itself has only a Riemannian Levi-Civita connection and no geodesics). It proceeds in nine layers. - -- *Spacetime, tangent-vector causality, and curves (pp. 233–238, items 283–306).* Gives precise definitions of spacetime (Definition 283) and standard Minkowski spacetime (Definition 284); classifies tangent vectors as timelike, spacelike, or null (Definition 285) and proves the trichotomy (Lemma 286), the reverse Cauchy–Schwarz and reverse triangle inequalities for timelike vectors (Lemmas 287–288), and the cone geometry—orientation of pointing vectors, the sign lemma, definiteness of the spacelike complement of a timelike vector, and convexity of the cones (Lemmas 291–294)—alongside time orientations (Definition 289) and future- and past-pointing vectors (Definition 290). Then paths, curves, and oriented curves are defined as equivalence classes of paths up to reparametrisation (Definitions 295–300), with causal type and future/past orientation each shown well-defined on the quotient (Theorems 299 and 301) and a forgetful projection from oriented to unoriented curves (Theorem 302). Endpoints (Definition 303), shown to be well defined on curves and smooth curves (Lemma 304), come with two point-set lemmas—an extremal parameter lies in the frontier, and two endpoints force a compact parameter interval (Lemmas 305–306). -- *The Levi-Civita connection and geodesics (pp. 238–242, items 307–322).* A new layer. Pseudo-Riemannian metrics (Definition 307) are smooth, symmetric, non-degenerate families of bilinear forms, with no signature condition, so everything here applies to every spacetime. Covariant derivatives are Mathlib's `IsCovariantDerivativeOn`; metric compatibility and the Levi-Civita condition (compatible and torsion-free) are defined on top of them (Definitions 308–309). The musical isomorphism $$v \mapsto g_x(v, \cdot)$$ is a linear isomorphism at each point (Lemma 310); the smoothness of its inverse (Lemma 311) is stated and proved in the blueprint but is the one node of the layer not yet formalised, and nothing depends on it. The Koszul formula (Lemma 312), the tensoriality of the Koszul expression (Lemma 313), and the verification that the Koszul connection is a covariant derivative (Lemma 314) that is Levi-Civita (Lemma 315) give existence and uniqueness of the Levi-Civita connection (Theorem 316). Five lemmas about smooth paths—a function vanishing along a path has zero derivative along it, the covariant derivative along a curve is local, local vector fields globalise, a smooth path has a local left inverse, and its velocity extends to a smooth vector field (Lemmas 317–321)—make the geodesic condition chart-free, well defined and non-vacuous. A geodesic (Definition 322) is then an affinely parametrised smooth path $$\mu$$ with $$(\nabla_X X)(\mu(s)) = 0$$ at every interior parameter, for every smooth vector field $$X$$ extending the velocity near $$s$$. -- *Trips, futures and pasts (pp. 242–244, items 323–331).* Trips and causal trips (Definitions 323–324) are finite chains of future-oriented timelike (respectively causal) geodesic segments, geodesic in the sense of Definition 322, with matching past and future endpoints. Chronological and causal precedence are transitive (Theorem 325); the causality condition (Definition 326) makes them a strict partial order (Theorem 327); and chronological and causal futures and pasts (Definitions 328–329) come with their basic inclusion and monotonicity properties (Lemmas 330–331). -- *§10.4.1 Causal diamonds (p. 244, items 332–346).* Introduces the causal diamond $$J^+(p) \cap J^-(q)$$ and the chronological (Alexandrov) diamond $$I^+(p) \cap I^-(q)$$ (Definition 332), with the structural properties of the causal diamond—monotonicity under endpoint spread, causal convexity, and that nonemptiness forces $$p \prec q$$ (Lemma 333)—and the containment of chronological diamonds in causal ones, together with the identification of the Alexandrov basis as exactly the chronological diamonds (Theorem 334). It then develops spacelike separation of points and of regions (Definitions 335–336, Lemmas 337–338), the spacelike complement $$\mathbf{B}^\perp$$ (Definition 339) and its order structure—antitone, extensive on the double complement, with the triple complement collapsing, making complementation the Galois connection attached to the spacelike-separation relation (Lemma 340). The double complement is packaged as the causal closure operator (Definition 341, Lemma 342), whose fixed points are the causally complete regions (Definition 343). These form a complete lattice—meets are intersections, joins are causal closures of unions—on which the causal complement is an order-reversing involution (Theorem 344); the set-level De Morgan laws (Lemma 345) then lift to full binary and infinitary De Morgan laws on the lattice (Theorem 346). The blueprint is careful to record what does *not* hold: the full orthocomplement law $$\mathbf{B} \wedge \mathbf{B}^\perp = \bot$$ fails at this generality, because the trip-based causal relation is irreflexive and so a point is spacelike-separated from itself. -- *§10.4.2 Causal convexity (p. 248, items 347–349).* Defines a causally convex region as one containing every point causally between two of its own points (Definition 347), shows causal diamonds are causally convex (Lemma 348), and shows every spacelike complement—hence every causally complete region—is causally convex (Theorem 349). -- *§10.4.3 Causal convexity: closure structure, and the Alexandrov basis theorems (p. 249, items 350–373).* The causally convex regions are shown to form a closure system (Lemma 350), giving the causal-convex hull (Definition 351) as a genuine closure operator whose closed sets are exactly the causally convex regions (Lemmas 352, Theorem 353). The subsection then turns to the Alexandrov topology (Definition 354): every diamond is open (Lemma 355); chronological futures and pasts are open under an explicit "no endpoints" hypothesis (Lemma 356) and unconditionally on standard Minkowski spacetime, where the coordinate-cone description discharges the hypothesis (Lemma 357). On standard Minkowski spacetime the componentwise directional derivative is a Levi-Civita connection (Lemma 358), hence the Levi-Civita connection is flat (Lemma 359) and affinely parametrised straight lines are geodesics (Lemma 360), so trips there are the familiar straight-line segments. Minkowski spacetime and Lorentzian spacetime are then defined (Definitions 361–362, the latter as a spacetime whose Alexandrov topology is Hausdorff), with a bundled form of spacelike separation and basis openness (Lemma 363). A point lying in no diamond is pathological: its only Alexandrov neighbourhood is the whole space (Lemma 364), and the Hausdorff assumption rules this out, forcing the diamonds to cover the space (Lemma 365). Given downward-directedness the diamonds form a genuine topological basis (Theorem 366); past and future interpolation on standard Minkowski (Lemmas 367–368) supply downward-directedness there (Lemma 369), and common chronological predecessors and successors supply upward-directedness (Lemmas 370–372), so on standard Minkowski the diamonds are an unconditional basis (Theorem 373). Upward-directedness is what the quasilocal colimit of §10.5.1 later consumes. -- *§10.4.4 Dilations are causal automorphisms but not isometries (p. 255, items 374–376).* The dilations $$x \mapsto \lambda x$$ preserve the Minkowski cones (Lemma 374) and are therefore causal automorphisms (Theorem 375), yet scale the metric by $$\lambda^2$$ and so are not isometries for $$\lambda \neq 1$$ (Theorem 376). This is the counterexample that forces the general-covariance morphism of §10.7 to be specified geometrically rather than causally. -- *§10.4.5 Isometries and basis-set preservation (p. 256, items 377–387).* Single-metric transport: isometries preserve the causal classification of tangent vectors (Lemma 377), paths have unique differentials and well-defined pushforwards (Lemmas 378–379), and isometries respect the Levi-Civita structure: pullbacks of vector fields and of the metric pairing, their derivatives and Lie brackets transform naturally (Lemmas 380–382), so an isometry preserves the Levi-Civita connection (Lemma 383) and maps geodesics to geodesics and back (Lemma 384). Future-orientation-preserving isometries preserve chronology (Lemma 385) and map Alexandrov-basis diamonds to diamonds (Lemma 386), which is exactly the well-definedness condition for the Axiom 5 action (Lemma 387). -- *§10.4.6 Pullback metrics and cross-metric isometries (p. 258, items 388–419).* The single-metric lemmas above compare a spacetime with itself; general covariance instead compares two different metrics on one carrier, so the transport statements are redone cross-metric. This subsection defines the pullback $$\psi^* g$$ of a spacetime metric as a bundled family of continuous bilinear forms (Definition 388) and verifies every obligation in turn: the differential of a diffeomorphism is a linear equivalence (Lemma 389), with the two round-trip cancellation identities that Mathlib does not supply for a global `Diffeomorph` proved by hand (Lemmas 390–392); the pullback metric is symmetric, non-degenerate, Lorentzian, and a smooth section of the bilinear-form bundle (Lemmas 393–396), so the pullback of a spacetime is a spacetime (Theorem 397). Two-sided preservation of future orientation is then defined (Definition 398) and the pullback time orientation is shown to be bundle-smooth, nowhere vanishing, and everywhere timelike (Lemmas 399–402), with transport of future-pointing timelike and null vectors (Lemmas 403–404) giving two-sided orientation preservation (Lemma 405). Cross-metric isometries are defined (Definition 406) and shown closed under inverses (Lemma 407), to preserve causal classification (Lemma 408), to push paths forward preserving the timelike/causal conditions and endpoints (Lemmas 409–412), and to transport chronological precedence and the chronological future and past (Lemmas 413–415), hence to preserve Alexandrov-basis sets (Lemma 416). A general topological lemma—a bijection matching generating families is a homeomorphism (Lemma 417)—then identifies the pullback Alexandrov topology (Lemma 418) and yields that the pullback of a Lorentzian spacetime is again a Lorentzian spacetime (Theorem 419). Without Theorem 419 the phrase "the net over $$\psi^*(M,g)$$" in §10.7 would have no referent. - -**Where the Lean lives:** `Physicslib4/Geometry/PseudoRiemannian/` (`Basic`, `LeviCivita`, `Flat`), `Physicslib4/Spacetime/` (`Causality`, `Curves`, `AlongPath`, `CausalComplement`, `CausalStructure`, `Minkowski`, `MinkowskiDirected`, `LorentzianSpacetime`, `IsometryCausality`, …) - -## Items - -Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration. - -
-§10.4 opening run — spacetime, tangent-vector causality, curves, the Levi-Civita connection and geodesics, trips, futures and pasts (p. 233) — 49 items - -- [**Definition 283**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacetime) — Spacetime · `Physicslib4.Spacetime` -- [**Definition 284**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:standard-minkowski-spacetime) — Standard Minkowski Spacetime · `Physicslib4.StandardMinkowskiSpacetime` -- [**Definition 285**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:timelike-spacelike-null-vectors) — Timelike, Spacelike, or Null Vectors · `Physicslib4.Spacetime.IsTimelike` (+2 more) -- [**Lemma 286**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-classification) — Causal Classification · `Physicslib4.Spacetime.isTimelike_or_isNull_or_isSpacelike` (+5 more) -- [**Lemma 287**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:reverse-cauchy-schwarz) — Reverse Cauchy–Schwarz for Timelike Vectors · `Physicslib4.reverse_cauchy_schwarz_of_lorentzianAt` (+1 more) -- [**Lemma 288**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:timelike-cone-convexity) — Timelike Cone Convexity and Reverse Triangle Inequality · `Physicslib4.add_isTimelike_of_lorentzianAt` (+3 more) -- [**Definition 289**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:time-orientable) — Time Orientation · `Physicslib4.Spacetime.TimeOrientation` (+1 more) -- [**Definition 290**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-and-past-pointing-vectors) — Future and Past Pointing Vectors · `Physicslib4.Spacetime.IsFuturePointing` (+1 more) -- [**Lemma 291**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pointing-orientation) — Orientation of Pointing Vectors · `Physicslib4.Spacetime.isTimelike_or_isNull_of_isFuturePointing` (+2 more) -- [**Lemma 292**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cone-sign-lemma) — Sign Lemma for the Future Cone · `Physicslib4.nonneg_of_orthogonal_timelike` (+4 more) -- [**Lemma 293**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-definite) — Definiteness of the Spacelike Complement · `Physicslib4.eq_zero_of_forall_bilin_eq_zero` (+2 more) -- [**Lemma 294**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:future-cone-convexity) — Convexity of the Future Cone · `Physicslib4.Spacetime.isFuturePointing_add` (+10 more) -- [**Definition 295**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:paths) — Paths · `Physicslib4.Spacetime.Path` (+1 more) -- [**Definition 296**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:curves) — Curves · `Physicslib4.Spacetime.Curve` (+1 more) -- [**Definition 297**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:timelike-and-causal-smooth-curves) — Timelike and Causal Smooth Curves · `Physicslib4.Spacetime.IsTimelikeSmoothCurve` (+1 more) -- [**Definition 298**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-and-past-oriented-smooth-curves) — Future and Past Oriented Smooth Curves · `Physicslib4.Spacetime.IsFutureOrientedSmoothCurve` (+1 more) -- [**Theorem 299**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:smooth-curve-causal-well-defined) — Reparametrisation-Invariance of the Causal Type · `Physicslib4.Spacetime.isTimelikeSmoothCurve_ofPath_iff` (+1 more) -- [**Definition 300**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:oriented-smooth-curve) — Oriented Smooth Curve · `Physicslib4.Spacetime.OrientedSmoothCurve` -- [**Theorem 301**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:oriented-curve-well-defined) — Reparametrisation-Invariance of Orientation · `Physicslib4.Spacetime.isFutureOrientedCurve_ofPath_iff` (+1 more) -- [**Theorem 302**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:oriented-curve-projection) — The Forgetful Projection of Oriented Curves · `Physicslib4.Spacetime.OrientedSmoothCurve.toSmoothCurve` (+1 more) -- [**Definition 303**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:endpoints) — Endpoints · `Physicslib4.Spacetime.IsEndpoint` (+2 more) -- [**Lemma 304**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:curve-endpoint-well-defined) — Endpoints of curves are well defined · `Physicslib4.Spacetime.IsCurveEndpoint` (+5 more) -- [**Lemma 305**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:extremal-parameter-mem-frontier) — An extremal parameter lies in the frontier · `Physicslib4.Spacetime.mem_frontier_of_isMin` (+3 more) -- [**Lemma 306**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:endpoint-parameter-space-eq-Icc) — Two endpoints force a compact parameter interval · `Physicslib4.Spacetime.parameterSpace_eq_Icc_of_endpoints` -- [**Definition 307**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pseudo-riemannian-metric) — Pseudo-Riemannian Metric · `Physicslib4.Geometry.PseudoRiemannianMetric` (+1 more) -- [**Definition 308**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:metric-compatible-connection) — Covariant Derivative; Metric Compatibility · `Physicslib4.Geometry.CovariantDerivative.IsMetricCompatibleWith` -- [**Definition 309**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:levi-civita-connection) — Levi-Civita Connection · `Physicslib4.Geometry.CovariantDerivative.IsLeviCivitaFor` -- [**Lemma 310**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:musical-isomorphism) — Musical Isomorphism · `Physicslib4.Geometry.PseudoRiemannianMetric.bijective_val` -- [**Lemma 311**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:musical-inverse-smooth) — Smoothness of the Inverse Musical Isomorphism *(not yet formalised: no Lean declaration — see [Formalisation status](./#formalisation-status))* -- [**Lemma 312**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-formula) — Koszul Formula · `Physicslib4.Geometry.CovariantDerivative.IsLeviCivitaFor.koszul` -- [**Lemma 313**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-expression-tensorial) — Tensoriality of the Koszul Expression · `Physicslib4.Geometry.PseudoRiemannianMetric.tensorialAt_koszulAux₁` (+2 more) -- [**Lemma 314**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-connection-is-covariant-derivative) — The Koszul Connection is a Covariant Derivative · `Physicslib4.Geometry.PseudoRiemannianMetric.isCovariantDerivativeOn_leviCivitaAux` -- [**Lemma 315**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-connection-is-levi-civita) — The Koszul Connection is Levi-Civita · `Physicslib4.Geometry.PseudoRiemannianMetric.isMetricCompatibleWith_koszulConnection` (+1 more) -- [**Theorem 316**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:levi-civita-exists-unique) — Existence and Uniqueness of the Levi-Civita Connection · `Physicslib4.Geometry.PseudoRiemannianMetric.exists_isLeviCivitaFor` (+3 more) -- [**Lemma 317**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:derivative-vanishes-along-path) — A Function Vanishing Along a Path has Zero Derivative Along It · `Physicslib4.Spacetime.SmoothPath.mfderiv_apply_tangent_eq_zero` -- [**Lemma 318**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-derivative-along-curve-local) — Covariant Derivative Along a Curve is Local · `Physicslib4.Spacetime.SmoothPath.covDeriv_eq_of_eventuallyEq` -- [**Lemma 319**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:local-vector-field-globalises) — Local Vector Fields Globalise · `Physicslib4.Spacetime.exists_contMDiff_vectorField_eventuallyEq` -- [**Lemma 320**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:path-local-left-inverse) — Local Left Inverse of a Smooth Path · `Physicslib4.Spacetime.SmoothPath.exists_localLeftInverse` -- [**Lemma 321**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:velocity-extends) — The Velocity of a Smooth Path Extends to a Vector Field · `Physicslib4.Spacetime.SmoothPath.exists_vectorField_eq_tangent` -- [**Definition 322**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:geodesic) — Geodesic · `Physicslib4.Spacetime.IsGeodesic` -- [**Definition 323**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:trip) — Trip · `Physicslib4.Spacetime.IsTripSegment` (+2 more) -- [**Definition 324**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-trip) — Causal Trip · `Physicslib4.Spacetime.IsCausalTripSegment` (+2 more) -- [**Theorem 325**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:precedence-transitive) — Transitivity of chronological and causal precedence · `Physicslib4.Spacetime.chronologicallyPrecedes_trans` (+1 more) -- [**Definition 326**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:no-closed-causal-curve) — No Closed Causal Curve (Causality Condition) · `Physicslib4.Spacetime.NoClosedCausalCurve` -- [**Theorem 327**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-order-refinements) — Irreflexivity and Antisymmetry under Causality · `Physicslib4.Spacetime.chronologicallyPrecedes_irrefl` (+2 more) -- [**Definition 328**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:chronological-future-and-chronological-past) — Chronological Future and Chronological Past · `Physicslib4.Spacetime.chronologicalFuture` (+3 more) -- [**Definition 329**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-future-and-causal-past) — Causal Future and Causal Past · `Physicslib4.Spacetime.causalFuture` (+3 more) -- [**Lemma 330**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:chronological-implies-causal) — Chronological Precedence Implies Causal Precedence · `Physicslib4.Spacetime.isCausal_of_isTimelike` (+3 more) -- [**Lemma 331**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:future-past-monotone) — Monotonicity of Futures and Pasts · `Physicslib4.Spacetime.chronologicalFutureSet_mono` (+3 more) - -
- -
-§10.4.1 Causal diamonds, spacelike complement, and causal closure (p. 244) — 15 items - -- [**Definition 332**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-diamond) — Causal and chronological diamonds · `Physicslib4.Spacetime.causalDiamond` (+3 more) -- [**Lemma 333**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-diamond-structure) — Structural properties of the causal diamond · `Physicslib4.Spacetime.causalDiamond_subset_of` (+2 more) -- [**Theorem 334**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-diamond-vs-chronological) — Chronological diamonds inside causal diamonds · `Physicslib4.Spacetime.chronologicalDiamond_subset_causalDiamond` (+1 more) -- [**Definition 335**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacelike-related) — Spacelike Related · `Physicslib4.Spacetime.IsSpacelikeRelated` -- [**Definition 336**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completely-spacelike) — Completely Spacelike · `Physicslib4.Spacetime.IsCompletelySpacelike` -- [**Lemma 337**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completely-spacelike-symm) — Symmetry of Spacelike Separation · `Physicslib4.Spacetime.isSpacelikeRelated_comm` (+1 more) -- [**Lemma 338**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completely-spacelike-structural) — Structural Properties of Complete Spacelike Separation · `Physicslib4.Spacetime.isCompletelySpacelike_mono` (+9 more) -- [**Definition 339**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacelike-complement) — Spacelike Complement of a Region · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement` -- [**Lemma 340**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-order) — Order Structure of the Spacelike Complement · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement_antitone` (+3 more) -- [**Definition 341**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-closure) — Causal closure operator · `Physicslib4.Spacetime.LorentzianSpacetime.causalClosure` -- [**Lemma 342**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-closure-is-closure-operator) — The Causal Closure is a Closure Operator · `Physicslib4.Spacetime.LorentzianSpacetime.causalClosure` (+1 more) -- [**Definition 343**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causally-complete-region) — Causally complete region · `Physicslib4.Spacetime.LorentzianSpacetime.IsCausallyComplete` -- [**Theorem 344**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causally-complete-lattice) — Lattice of causally complete regions · `Physicslib4.Spacetime.LorentzianSpacetime.CausallyCompleteRegion` (+8 more) -- [**Lemma 345**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-de-morgan) — De Morgan Laws for the Spacelike Complement · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement_union` (+1 more) -- [**Theorem 346**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-complement-de-morgan) — De Morgan Laws for the Causal Complement · `Physicslib4.Spacetime.LorentzianSpacetime.causalComplement_antitone` (+6 more) - -
- -
-§10.4.2 Causal convexity (p. 248) — 3 items - -- [**Definition 347**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causally-convex-region) — Causally convex region · `Physicslib4.Spacetime.IsCausallyConvex` -- [**Lemma 348**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-diamond-causally-convex) — Causal diamonds are causally convex · `Physicslib4.Spacetime.causalDiamond_isCausallyConvex` -- [**Theorem 349**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causally-complete-convex) — Causally complete regions are causally convex · `Physicslib4.Spacetime.spacelikeComplement_isCausallyConvex` (+2 more) - -
- -
-§10.4.3 Causal convexity: closure structure, and the Alexandrov basis theorems (p. 249) — 24 items - -- [**Lemma 350**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causally-convex-closure-ops) — Causally convex regions form a closure system · `Physicslib4.Spacetime.isCausallyConvex_univ` (+4 more) -- [**Definition 351**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-convex-hull) — Causal-convex hull · `Physicslib4.Spacetime.causalConvexHull` -- [**Lemma 352**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-convex-hull-extensive) — The Causal-Convex Hull is Extensive and Causally Convex · `Physicslib4.Spacetime.subset_causalConvexHull` (+1 more) -- [**Theorem 353**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-convex-hull-closure) — The causal-convex hull is a closure operator · `Physicslib4.Spacetime.causalConvexHull_minimal` (+3 more) -- [**Definition 354**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:alexandrov-topology) — Alexandrov Topology · `Physicslib4.Spacetime.alexandrovTopology` -- [**Lemma 355**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-basis-open) — Basis Sets Are Alexandrov-Open · `Physicslib4.Spacetime.isOpen_alexandrov_of_mem_basis` -- [**Lemma 356**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:chronological-future-past-open) — Openness of Chronological Futures and Pasts · `Physicslib4.Spacetime.isOpen_chronologicalFuture_inter_chronologicalPast` (+2 more) -- [**Lemma 357**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-chronological-open) — Unconditional Openness of Chronological Futures and Pasts on Standard Minkowski · `Physicslib4.exists_chronologicalFuture_standardMinkowski` (+5 more) -- [**Lemma 358**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-directional-derivative-levi-civita) — The Directional Derivative is Levi-Civita on Standard Minkowski · `Physicslib4.Geometry.PseudoRiemannianMetric.isLeviCivitaFor_flatConnection` (+2 more) -- [**Lemma 359**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-levi-civita-flat) — The Minkowski Levi-Civita Connection is Flat · `Physicslib4.standardMinkowski_leviCivita_apply` (+1 more) -- [**Lemma 360**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-lines-are-geodesics) — Straight Lines are Geodesics in Standard Minkowski · `Physicslib4.standardMinkowskiLineSegmentPath_isGeodesic` (+1 more) -- [**Definition 361**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:minkowski-spacetime) — Minkowski Spacetime · `Physicslib4.MinkowskiSpacetime` -- [**Definition 362**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:lorentzian-spacetime) — Lorentzian Spacetime · `Physicslib4.Spacetime.LorentzianSpacetime` -- [**Lemma 363**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lorentzian-causal-lifts) — Bundled Spacelike Separation and Basis Openness · `Physicslib4.Spacetime.LorentzianSpacetime.isCompletelySpacelike_comm` (+1 more) -- [**Lemma 364**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-nbhd-univ-of-no-diamond) — No-Diamond Points Have Only the Whole Space as Neighbourhood · `Physicslib4.Spacetime.alexandrov_nbhd_univ_of_no_diamond` -- [**Lemma 365**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-covering-hausdorff) — Covering from the Hausdorff Assumption · `Physicslib4.Spacetime.LorentzianSpacetime.sUnion_alexandrovBasis_eq_univ` -- [**Theorem 366**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:alexandrov-topological-basis) — The Alexandrov Diamonds Form a Topological Basis · `Physicslib4.Spacetime.LorentzianSpacetime.isTopologicalBasis_alexandrovBasis` -- [**Lemma 367**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-past-between) — Past Interpolation on Standard Minkowski · `Physicslib4.Spacetime.exists_past_between_standardMinkowski` -- [**Lemma 368**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-future-between) — Future Interpolation on Standard Minkowski · `Physicslib4.Spacetime.exists_future_between_standardMinkowski` -- [**Lemma 369**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-diamonds-downward-directed) — Standard Minkowski Diamonds Are Downward-Directed · `Physicslib4.Spacetime.alexandrovBasis_exists_subset_inter_standardMinkowski` -- [**Lemma 370**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-exists-common-past) — Common Chronological Predecessor on Standard Minkowski · `Physicslib4.Spacetime.exists_common_past` -- [**Lemma 371**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-exists-common-future) — Common Chronological Successor on Standard Minkowski · `Physicslib4.Spacetime.exists_common_future` -- [**Lemma 372**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-diamonds-upward-directed) — Standard Minkowski Diamonds Are Upward-Directed · `Physicslib4.Spacetime.alexandrovBasis_directed` -- [**Theorem 373**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-alexandrov-basis) — The Alexandrov Diamonds are a Basis on Standard Minkowski · `Physicslib4.Spacetime.isTopologicalBasis_alexandrovBasis_standardMinkowski` - -
- -
-§10.4.4 Dilations are causal automorphisms but not isometries (p. 255) — 3 items - -- [**Lemma 374**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-dilation-cone) — Dilations Preserve the Minkowski Cones · `Physicslib4.minkowskiForwardCone_smul` (+1 more) -- [**Theorem 375**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-dilation-causal-automorphism) — Dilations are Causal Automorphisms · `Physicslib4.alexandrovBasis_image_smul` -- [**Theorem 376**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-dilation-not-isometry) — Dilations are Not Isometries · `Physicslib4.minkowskiForm_smul` (+1 more) - -
- -
-§10.4.5 Isometries and basis-set preservation (p. 256) — 11 items - -- [**Lemma 377**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-classification) — Isometries Preserve the Causal Classification · `Physicslib4.Spacetime.Isometry.preserves_self` (+3 more) -- [**Lemma 378**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:path-parameter-unique-diff) — Unique Differentials Along a Path · `Physicslib4.Spacetime.Path.uniqueDiffOn_parameterSpace` -- [**Lemma 379**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pushforward-path) — Pushforward of a Path Under an Isometry · `Physicslib4.Spacetime.Isometry.pushforwardPath` (+5 more) -- [**Lemma 380**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-metric) — Pullback of Vector Fields and the Metric Under an Isometry · `Physicslib4.Spacetime.Isometry.val_mpullback` (+3 more) -- [**Lemma 381**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-metric-derivative) — Derivatives of Metric Pairings of Pulled-Back Fields · `Physicslib4.Spacetime.Isometry.mfderiv_val_mpullback` (+1 more) -- [**Lemma 382**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-lie-bracket) — Metric Pairings with Lie Brackets of Pulled-Back Fields · `Physicslib4.Spacetime.Isometry.val_mlieBracket_mpullback` (+1 more) -- [**Lemma 383**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-levi-civita) — Isometries Preserve the Levi-Civita Connection · `Physicslib4.Spacetime.Isometry.mfderiv_leviCivita_mpullback` (+1 more) -- [**Lemma 384**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-geodesics) — Isometries Preserve Geodesics · `Physicslib4.Spacetime.Isometry.pushforwardPath_isGeodesic` (+2 more) -- [**Lemma 385**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-chronology) — Isometries Preserve Chronology · `Physicslib4.Spacetime.Isometry.PreservesFutureOrientation` (+8 more) -- [**Lemma 386**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-basis-sets) — Isometries Preserve Basis Sets · `Physicslib4.Spacetime.Isometry.futureOrientationPreserving` (+8 more) -- [**Lemma 387**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:axiom5-basis-preservation) — Axiom 5 Basis-Set Preservation · `Physicslib4.Spacetime.LorentzianSpacetime.toAbstractIdentityComponent_isBasisSet_smul` - -
- -
-§10.4.6 Pullback metrics and cross-metric isometries (p. 258) — 32 items - -- [**Definition 388**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pullback-metric) — Pullback of a Spacetime Metric · `Physicslib4.Spacetime.bilinearPrecomp` (+3 more) -- [**Lemma 389**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-diffeo-linear-equiv) — The Differential of a Diffeomorphism is a Linear Equivalence · `Physicslib4.Spacetime.Diffeo` (+4 more) -- [**Lemma 390**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-symm-cancel-left) — Round-Trip Cancellation: $$d\psi$$ After $$d(\psi^{-1})$$ · `Physicslib4.Spacetime.mfderiv_symm_cancel_left` -- [**Lemma 391**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-symm-cancel-right) — Round-Trip Cancellation: $$d(\psi^{-1})$$ After $$d\psi$$ · `Physicslib4.Spacetime.mfderiv_symm_cancel_right` -- [**Lemma 392**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-inverse-eq-symm) — The Formal Inverse of $$d\psi_x$$ is the Inverse Equivalence · `Physicslib4.Spacetime.inverse_mfderiv_eq_symm` (+2 more) -- [**Lemma 393**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-symm) — The Pullback Metric is Symmetric · `Physicslib4.Spacetime.pullbackVal_symm` -- [**Lemma 394**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-nondegenerate) — The Pullback Metric is Non-Degenerate · `Physicslib4.Spacetime.pullbackVal_nondegenerate` -- [**Lemma 395**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-lorentzian) — The Pullback Metric is Lorentzian · `Physicslib4.Spacetime.pullbackVal_lorentzian` -- [**Lemma 396**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-smooth-in-charts) — The Pullback Metric is a Smooth Section of the Bilinear-Form Bundle · `Physicslib4.Spacetime.pullbackVal_contMDiff` -- [**Theorem 397**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pullback-is-spacetime) — The Pullback of a Spacetime is a Spacetime · `Physicslib4.Spacetime.pullback` (+4 more) -- [**Definition 398**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:preserves-future-orientation) — Two-Sided Preservation of Future Orientation · `Physicslib4.Spacetime.PreservesFutureOrientation` (+1 more) -- [**Lemma 399**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mpullback-vectorField-contMDiff-of-diffeo) — The Pullback of a Bundle-Smooth Vector Field Along a Diffeomorphism is Bundle-Smooth · `Physicslib4.Spacetime.contMDiff_mpullback_vectorField` -- [**Lemma 400**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation-ne-zero) — The Pullback Time Orientation is Nowhere Vanishing · `Physicslib4.Spacetime.mpullback_field_ne_zero` -- [**Lemma 401**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation-timelike) — The Pullback Time Orientation is Everywhere Timelike · `Physicslib4.Spacetime.pullbackVal_mpullback_field_self` (+1 more) -- [**Lemma 402**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation) — Pullback of a Time Orientation · `Physicslib4.Spacetime.pullbackTimeOrientation` (+1 more) -- [**Lemma 403**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-future-pointing-timelike) — Transport of Future-Pointing Timelike Vectors · `Physicslib4.Spacetime.pullbackVal_mpullback_field_apply` (+1 more) -- [**Lemma 404**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-future-pointing-null) — Transport of Future-Pointing Null Vectors · `Physicslib4.Spacetime.isFuturePointing_pullback_iff_of_isNull` -- [**Lemma 405**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-preserves-future-orientation) — The Pullback Preserves the Future Orientation Two-Sidedly · `Physicslib4.Spacetime.pullback_preservesFutureOrientationTwoSided` -- [**Definition 406**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:cross-metric-isometry) — Isometry Between Two Metrics on One Manifold · `Physicslib4.Spacetime.CrossIsometry` (+4 more) -- [**Lemma 407**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-symm) — The Inverse of a Cross-Metric Isometry is a Cross-Metric Isometry · `Physicslib4.Spacetime.CrossIsometry.symm_preserves` (+1 more) -- [**Lemma 408**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-classification) — Cross-Metric Isometries Preserve the Causal Classification · `Physicslib4.Spacetime.CrossIsometry.preserves_self` (+3 more) -- [**Lemma 409**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-tangent) — The Tangent Chain Rule Along a Path · `Physicslib4.Spacetime.mfderivWithin_comp_diffeo` (+1 more) -- [**Lemma 410**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path) — Pushforward of a Path Under a Cross-Metric Isometry · `Physicslib4.Spacetime.pushforwardPath` (+2 more) -- [**Lemma 411**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-causal) — The Pushforward Preserves the Timelike and Causal Conditions · `Physicslib4.Spacetime.CrossIsometry.pushforwardPath_isTimelike` (+1 more) -- [**Lemma 412**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-endpoints) — The Pushforward Transports Endpoints · `Physicslib4.Spacetime.pushforwardPath_isPastEndpoint` (+1 more) -- [**Lemma 413**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-chronology) — Cross-Metric Isometries Transport Chronological Precedence · `Physicslib4.Spacetime.pushforwardPath_isFutureOriented` (+2 more) -- [**Lemma 414**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-chronological-future-image) — Image of the Chronological Future · `Physicslib4.Spacetime.CrossIsometry.chronologicalFuture_image` -- [**Lemma 415**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-chronological-past-image) — Image of the Chronological Past · `Physicslib4.Spacetime.CrossIsometry.chronologicalPast_image` -- [**Lemma 416**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-basis-sets) — Cross-Metric Isometries Preserve Basis Sets · `Physicslib4.Spacetime.CrossIsometry.alexandrovDiamond_image` (+1 more) -- [**Lemma 417**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bijection-generated-topology-homeomorphism) — A Bijection Matching Generating Families is a Homeomorphism · `Physicslib4.continuous_generateFrom_of_preimage_mem` (+4 more) -- [**Lemma 418**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-alexandrov-homeomorphism) — The Pullback Alexandrov Topology · `Physicslib4.Spacetime.pullback_alexandrovBasis_image` (+3 more) -- [**Theorem 419**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pullback-is-lorentzian-spacetime) — The Pullback of a Lorentzian Spacetime is a Lorentzian Spacetime · `Physicslib4.Spacetime.LorentzianSpacetime.pullback_alexandrov_t2` (+3 more) - -
- - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · **§10.4 Spacetime** · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) → diff --git a/home_page/sec10-4-stone.md b/home_page/sec10-4-stone.md new file mode 100644 index 0000000..4e94434 --- /dev/null +++ b/home_page/sec10-4-stone.md @@ -0,0 +1,102 @@ +--- +title: "§10.4 Stone's Theorem (pp. 235–249)" +usemathjax: true +--- + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · **§10.4 Stone** · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.5 Spacetime](sec10-5-spacetime.html) → + +# §10.4 Stone's Theorem (pp. 235–249) + +41 declarations (items 289–329), all formalised and proved. The section proves **Stone's Theorem** (Theorem 329): every strongly continuous one-parameter unitary group $$U$$ on a Hilbert space $$\mathbf{H}$$ is $$U(t) = e^{itA}$$ for a unique self-adjoint operator $$A$$, its infinitesimal generator. Together with the converse direction (Proposition 313) this is a one-to-one correspondence between strongly continuous one-parameter unitary groups and self-adjoint operators. In AQFT it is what turns the translation symmetry of a net into an energy–momentum operator, and it is what lets positive energy (`IsPositiveEnergy`, §10.6) be stated with a genuine unbounded generator. The section builds on the Spectral Theorem for Unbounded, Self-Adjoint Operators (Theorem 285) and the functional calculus it supplies (Definitions 286–287, Lemma 288), and proceeds in five subsections. + +- *One-parameter unitary groups (p. 235, items 289–300).* A one-parameter unitary group (Definition 289), strong continuity and its reduction to continuity at $$0$$ (Lemma 290), the adjoint $$U(t)^* = U(-t)$$ (Lemma 291), and the infinitesimal generator (Definition 292), with its characterisation (Lemma 293) and the symmetry identity it satisfies (Lemma 294). Three generators are computed directly: the trivial group has generator $$0$$ (Lemma 295), conjugating a group by a unitary $$W$$ conjugates its generator (Lemmas 296–297), and for bounded self-adjoint $$P$$ the group $$\exp(itP)$$ has generator $$P$$ (Lemmas 298–300); these feed the positive-energy lemmas of §10.6. +- *Imported results (p. 239, items 301–305).* Standard analysis stated without proof and linked to Mathlib: the Bochner integral (Theorem 301), smooth approximate identities (Lemma 302), facts about differentiation (Proposition 303) and about convolution (Lemma 305). The scalar equation $$y' = cy$$ (Lemma 304) is proved from them. +- *From a self-adjoint operator to a unitary group (p. 241, items 306–313).* For self-adjoint $$A$$ the bounded functions $$e^{it\lambda}$$ give unitaries (Lemma 306) forming the group $$e^{itA}$$ (Definition 307), which satisfies the group law (Lemma 308) and is strongly continuous by dominated convergence (Lemma 309). A difference-quotient norm identity (Lemmas 310–311) gives the derivative at $$0$$ on the domain of $$A$$ (Lemma 312), and maximal symmetry of a self-adjoint operator identifies the generator with $$A$$ (Proposition 313). +- *Two intermediate results (p. 244, items 314–320).* Orbits $$t \mapsto U(t)\psi$$ are differentiable on the generator's domain (Lemma 314), the group commutes with its generator and preserves its domain (Lemmas 315–316), and averaging an orbit against a smooth bump, written as a convolution (Lemmas 317–319), shows that the generator is densely defined (Lemma 320). +- *Stone's Theorem (p. 246, items 321–329).* An ordinary differential equation along orbits (Lemma 321) and the vanishing of bounded solutions of $$y' = \pm y$$ (Lemma 322) make the deficiency subspaces trivial (Lemma 323), so the generator is essentially self-adjoint (Lemma 324). A norm-preservation argument (Lemmas 325–326) shows that the orbits of $$U$$ and of $$e^{itA}$$ agree on the generator's domain (Lemma 327), hence everywhere by density (Lemma 328), which proves Stone's Theorem (Theorem 329). + +The closing Summary of the blueprint section, the bijection between groups and generators, is recorded in prose and is not a separate declaration. + +**Where the Lean lives:** `Physicslib4/Spectral/Stone/` (`Basic`: unitary groups and the generator; `Exponential`: $$e^{itA}$$ and Proposition 313; `Density`: averages and Lemma 320; `Theorem`: Stone's Theorem, `Physicslib4.Spectral.Stone.stone`), with the §10.3 functional calculus in `Physicslib4/Spectral/Unbounded/FunctionalCalculus.lean`. + +## Items + +Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration; the four imported results name the Mathlib declarations that supply them. + +
+§10.4.1 One-Parameter Unitary Groups (p. 235) — 12 items + +- [**Definition 289**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.11) — One-Parameter Unitary Group · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup` (+1 more) +- [**Lemma 290**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:strongly-continuous-iff-at-zero) — Strong Continuity is Strong Continuity at $$0$$ · `Physicslib4.Spectral.Stone.isStronglyContinuous_iff_tendsto_zero` +- [**Lemma 291**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:unitary-group-inner-adjoint) — The Adjoint of $$U(t)$$ is $$U(-t)$$ · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.adjoint_eq` (+1 more) +- [**Definition 292**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:hall-10.13) — Infinitesimal Generator · `Physicslib4.Spectral.Stone.generator` (+2 more) +- [**Lemma 293**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-spec) — Characterization of the Generator · `Physicslib4.Spectral.Stone.exists_generator_eq_iff` +- [**Lemma 294**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-symmetry-identity) — The Generator Satisfies the Symmetry Identity · `Physicslib4.Spectral.Stone.isSymmetric_generator` +- [**Lemma 295**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-const) — The Generator of the Trivial Group · `Physicslib4.Spectral.Stone.generator_refl` +- [**Lemma 296**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:conj-unitary-group) — Conjugating a Unitary Group · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.conj` (+1 more) +- [**Lemma 297**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-conj) — Conjugating a Group Conjugates its Generator · `Physicslib4.Spectral.Stone.mem_generator_conj_domain_iff` (+1 more) +- [**Lemma 298**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-bounded-unitary-group) — $$\exp (itP)$$ is a One-Parameter Unitary Group · `Physicslib4.Spectral.Stone.exists_isOneParameterUnitaryGroup_exp` +- [**Lemma 299**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-bounded-hasDerivAt) — The Derivative of $$\exp (itP)$$ at $$0$$ · `Physicslib4.Spectral.Stone.hasDerivAt_exp_smul_I` +- [**Lemma 300**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-exp-bounded) — The Generator of $$\exp (itP)$$ · `Physicslib4.Spectral.Stone.generator_eq_of_eq_exp` + +
+ +
+§10.4.2 Imported Results (p. 239) — 5 items + +- [**Theorem 301**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:bochner-integral) — Bochner Integral · `ContinuousLinearMap.integral_comp_comm` (+1 more) +- [**Lemma 302**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:smooth-approximate-identity) — Smooth Approximate Identity · `ContDiffBump.normed` (+4 more) +- [**Proposition 303**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:calculus-facts) — Facts about Differentiation · `HasDerivAt.inner` (+1 more) +- [**Lemma 304**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:linear-ode-scalar) — The Equation $$y' = cy$$ · `Physicslib4.Spectral.Stone.eq_mul_exp_of_hasDerivAt` +- [**Lemma 305**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:convolution-facts) — Facts about Convolution · `HasCompactSupport.hasDerivAt_convolution_left` (+1 more) + +
+ +
+§10.4.3 From a Self-Adjoint Operator to a Unitary Group (p. 241) — 8 items + +- [**Lemma 306**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-unitary) — The Bounded Integral of $$e^{it\lambda }$$ is Unitary · `Physicslib4.Spectral.Stone.integral_expFun_mem_unitary` +- [**Definition 307**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:exp-unitary-group) — The Unitary Group $$e^{itA}$$ · `Physicslib4.Spectral.Stone.expFun` (+2 more) +- [**Lemma 308**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-group-law) — The Group Law for $$e^{itA}$$ · `Physicslib4.Spectral.Stone.isOneParameterUnitaryGroup_expUnitary` +- [**Lemma 309**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-strongly-continuous) — $$e^{itA}$$ is Strongly Continuous · `Physicslib4.Spectral.Stone.isStronglyContinuous_expUnitary` +- [**Lemma 310**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:functional-calculus-sub-bounded) — Subtracting from a Bounded Function · `Physicslib4.Spectral.Stone.functionalCalculus_sub_of_bddMeasurable` +- [**Lemma 311**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-quotient-norm-identity) — Norm Identity for the Difference Quotient · `Physicslib4.Spectral.Stone.norm_sq_generatorQuotient_expUnitary_sub` +- [**Lemma 312**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-derivative-at-zero) — The Derivative of $$e^{itA}$$ at $$0$$ · `Physicslib4.Spectral.Stone.tendsto_generatorQuotient_expUnitary` +- [**Proposition 313**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#prpstn:hall-10.14) — Exponentiating a Self-Adjoint Operator · `Physicslib4.Spectral.Stone.generator_expUnitary` + +
+ +
+§10.4.4 Two Intermediate Results (p. 244) — 7 items + +- [**Lemma 314**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:orbit-hasDerivAt) — Differentiating an Orbit · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.hasDerivAt_orbit` +- [**Lemma 315**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-commutes) — The Group Commutes with its Generator · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.generator_apply_comm` +- [**Lemma 316**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.17) — The Group Preserves the Generator's Domain · `Physicslib4.Spectral.Stone.IsOneParameterUnitaryGroup.hasDerivAt_orbit_generator` +- [**Lemma 317**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:averaging-translate) — Averages of an Orbit are Convolutions · `Physicslib4.Spectral.Stone.average_eq_convolution` (+1 more) +- [**Lemma 318**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:averaging-in-generator-domain) — Averages Lie in the Generator's Domain · `Physicslib4.Spectral.Stone.average_mem_generator_domain` +- [**Lemma 319**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:averaging-approximates) — Averages Approximate the Vector · `Physicslib4.Spectral.Stone.tendsto_average_bump` +- [**Lemma 320**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:hall-10.18) — The Generator is Densely Defined · `Physicslib4.Spectral.Stone.hasDenseDomain_generator` + +
+ +
+§10.4.5 Stone's Theorem (p. 246) — 9 items + +- [**Lemma 321**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:orbit-inner-ode) — An Ordinary Differential Equation along Orbits · `Physicslib4.Spectral.Stone.hasDerivAt_inner_orbit` +- [**Lemma 322**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bounded-exp-solution-zero) — Bounded Solutions of $$y' = \pm y$$ Vanish · `Physicslib4.Spectral.Stone.eq_zero_of_hasDerivAt_of_bounded` +- [**Lemma 323**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-ker-adjoint-trivial) — The Deficiency Subspaces of the Generator are Trivial · `Physicslib4.Spectral.Stone.ker_adjoint_generator_subSmul_eq_bot` +- [**Lemma 324**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:generator-essentially-self-adjoint) — The Generator is Essentially Self-Adjoint · `Physicslib4.Spectral.Stone.isEssentiallySelfAdjoint_generator` +- [**Lemma 325**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:orbit-difference-hasDerivAt) — Differentiating the Difference of the Orbits · `Physicslib4.Spectral.Stone.hasDerivAt_orbit_sub_expUnitary` +- [**Lemma 326**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:norm-const-of-symmetric-derivative) — A Solution of $$w' = iCw$$ with $$C$$ Symmetric Preserves the Norm · `Physicslib4.Spectral.Stone.eq_zero_of_hasDerivAt_of_isSymmetric` +- [**Lemma 327**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:orbits-agree-on-domain) — The Orbits Agree on the Generator's Domain · `Physicslib4.Spectral.Stone.orbit_eq_expUnitary_closure` +- [**Lemma 328**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:agree-on-dense-subspace) — Bounded Operators Agreeing on a Dense Subspace are Equal · `Physicslib4.Spectral.Stone.eq_of_eqOn_dense` +- [**Theorem 329**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:hall-10.15) — Stone's Theorem · `Physicslib4.Spectral.Stone.stone` + +
+ + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · **§10.4 Stone** · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.5 Spacetime](sec10-5-spacetime.html) → diff --git a/home_page/sec10-5-haag-kastler.md b/home_page/sec10-5-haag-kastler.md deleted file mode 100644 index df6bdde..0000000 --- a/home_page/sec10-5-haag-kastler.md +++ /dev/null @@ -1,287 +0,0 @@ ---- -title: "§10.5 Haag–Kastler Axioms in Minkowski spacetime (pp. 270–310)" -usemathjax: true ---- - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · **§10.5 Minkowski** · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.6 Curved](sec10-6-curved.html) → - -# §10.5 Haag–Kastler Axioms in Minkowski spacetime (pp. 270–310) - -The largest section by definition and theorem count (152 items, Definitions 420–571). Each axiom is stated as a definition so that it appears as a node in the declaration graph. - -- *The axioms and the quasilocal colimit (§10.5 and §10.5.1, pp. 270–287, items 420–447).* Axiom 1 (Local Algebras, Definition 420) assigns an abstract C\*-algebra to every Alexandrov-basis set, with $$\emptyset \mapsto \mathbb{C}1$$. Axiom 2 (Isotony, Definition 421) now supplies the family of unital \*-monomorphisms $$i_{\mathbf{B}_1 \mathbf{B}_2}$$ **as chosen data**, subject to injectivity, an identity law, and a composition law—so that $$\mathbf{B} \mapsto \mathfrak{U}(\mathbf{B})$$ is a functor on the inclusion order of basis sets. The blueprint is explicit that the family cannot be an existence statement (the identity and composition conditions are equations between the maps themselves) and that the inclusion hypothesis is non-strict, matching the Lean. §10.5.1 then cashes this in: the diamonds are directed under inclusion (Lemma 422), the isotony family is a directed system in Mathlib's sense (Lemma 423), and the direct limit carries a well-defined norm (Lemmas 424–426) making it a normed \*-algebra (Lemma 427) satisfying the C\*-inequality (Lemma 428) but not, in general, complete. A block of results stated for an arbitrary normed \*-algebra under standing hypotheses (Definition 429) then carries the structure through completion—the involution and its extension (Definition 430, Lemma 431), the completion coercion as a bundled \*-algebra homomorphism (Lemma 432), and the passage of the C\*-inequality, the normed $$\mathbb{C}$$-algebra structure, and finally the C\*-algebra property to the completion (Lemmas 433–435)—yielding that the completion of the quasilocal colimit is a C\*-algebra (Lemma 436). The quasilocal algebra $$\mathfrak{U}$$ is defined as that colimit-then-completion (Definition 437); the blueprint records why the shortcut of realising $$\mathfrak{U}$$ as a closed \*-subalgebra of an ambient C\*-algebra is rejected—it would assume an ambient algebra containing copies of every $$\mathfrak{U}(\mathbf{B})$$, for which the physics supplies no justification. Axiom 3 (Local Commutativity, Definition 438) follows, together with the new Lemma 439: local commutativity transfers from any one quasilocal algebra to every other, so the choice of quasilocal algebra in Axiom 3 is immaterial and the canonical $$\mathfrak{U}$$ of a net can be used throughout. The quasilocal observable (Definition 440) follows. **Axiom 4 is now split in two.** Axiom 4 (Quasilocal Completeness, Definition 441) is presented as a bridge principle—the one axiom joining physical reality to the formalism, asserting the one-way inclusion that every physical observable corresponds to a quasilocal observable, and therefore having no mathematical consumers. The mathematical content previously conflated with it is separated out as a theorem: every local net satisfying Axiom 2 admits a quasilocal algebra, with an injective cocone of canonical embeddings whose images are dense (Theorem 442, with the supporting Lemmas 443–447). The indexing over Alexandrov-basis sets only is essential and not stylistic, since the algebras attached to non-basis subsets are junk fibres about which the axioms say nothing. -- *§10.5.2 The von Neumann Density Theorem (pp. 287–290, items 448–458).* A new subsection of general operator theory for a unital \*-homomorphism $$\pi : \mathfrak{A} \to \mathcal{B}(H)$$, whose only consumer is Theorem 458, the density result that keeps the bridge principle tenable in the presence of larger bicommutants: $$\pi_\omega(\mathfrak{U})$$ is strongly dense in $$\pi_\omega(\mathfrak{U})$$. Mathlib lacks the density theorem, so it is proved here following Murphy, Lemma 4.1.4. A closed subspace invariant under an operator and its adjoint has a commuting orthogonal projection (Lemma 448), so the closed cyclic subspace $$\overline{\pi(\mathfrak{A})\xi}$$ reduces the representation (Lemma 449) and every $$T \in \pi(\mathfrak{A})$$ maps $$\xi$$ into it (Lemma 450). The finite amplification $$\pi^\iota$$ on $$\ell^2(\iota; H)$$ (Definition 451) is a unital \*-homomorphism (Lemma 452); the block entries of an operator in its commutant lie in $$\pi(\mathfrak{A})'$$ (Lemma 453), an operator on $$\ell^2(\iota; H)$$ is recovered from its block entries (Lemma 454), and so $$\mathrm{diag}(T)$$ lies in the amplified bicommutant (Lemma 455). Applying the one-vector case to the amplification approximates $$T$$ on any finite set of vectors (Lemma 456), and a neighbourhood basis for the strong operator topology (Lemma 457) turns this into the density theorem (Theorem 458), now fully proved. The Kaplansky density theorem, which would also keep approximants self-adjoint, remains out of scope; nothing needs it. -- *§10.5.3 Lorentz Covariance and the Haag–Kastler Net (p. 290, items 459–460).* Axiom 5 (Lorentz Covariance, Definition 459), whose coherence condition is now stated for the Axiom 2 isotony family itself, and the bundled `HaagKastlerNet` (Definition 460) close the axiomatic block. -- *§10.5.4 Einstein Causality (p. 291, item 461).* Derives the operator form of local commutativity in any \*-representation of the quasilocal algebra (Theorem 461). -- *§10.5.5 Local von Neumann Algebras (p. 291, items 462–474).* Defines the local von Neumann algebra $$R(\mathbf{B}) = \pi(\mathfrak{U}(\mathbf{B}))''$$ of a region in a representation (Definition 462), registers it as a first-class `VonNeumannAlgebra` via the bicommutant-of-a-self-adjoint-set lemma (Lemma 463, Definition 464), and proves Microcausality (Theorem 465) and Isotony of the von Neumann net (Theorem 466), together with their bundled forms (Theorem 467) and the region-indexed assignment $$\mathbf{B} \mapsto R(\mathbf{B})$$ as an order-preserving map—the net of von Neumann algebras itself (Definition 468). It then proves the Statistical Independence (Schlieder) property in set-level and bundled forms (Theorems 469–470): if the cyclic vector of one region is cyclic for its local observables, it is separating for the local von Neumann algebra of any spacelike-separated region. Additive-free locality (Theorem 471) expresses locality through the spacelike complement without attaching an algebra to the unbounded complement itself. Geometric Covariance (Theorem 472) shows conjugation by the implementing unitary carries $$R(\mathbf{B})$$ onto $$R(L \cdot \mathbf{B})$$; being a factor is therefore constant along the Lorentz orbit of a region (Theorem 473), and the set equality upgrades to a first-class \*-algebra isomorphism of the bundled algebras (Theorem 474). -- *§10.5.6 Relative Commutants of Nested Local Algebras (p. 294, items 475–482).* A new block organising the theory of inclusions $$R(\mathbf{B}_1) \subseteq R(\mathbf{B}_2)$$ around the relative commutant $$R(\mathbf{B}_1)' \cap R(\mathbf{B}_2)$$ (Definition 475). It proves antitonicity of the commutant (Theorem 476), that the relative commutant lies in the larger algebra and commutes with the smaller (Theorems 477–478), and that it always contains the centre of the ambient algebra (Theorem 479). An inclusion is irreducible when its relative commutant is trivial (Definition 480); an irreducible inclusion forces the ambient algebra to be a factor (Theorem 481), and the trivial self-inclusion is irreducible exactly when the algebra is a factor (Theorem 482). -- *§10.5.7 Irreducibility and Schur's Lemma (p. 295, items 483–505).* Introduces irreducible representations via their commutant (Definition 483) and establishes the Topological Schur Lemma for cyclic representations (Theorem 484) together with the operator-theoretic bridge identifying commutant scalars with coefficients proportional to the state (Theorem 485). Defines pure states (Definition 486) and proves "pure implies irreducible" directly (Theorem 487), then the full equivalence Pure $$\iff$$ Irreducible (Theorem 490) via a GNS Radon–Nikodym theorem realising every dominated positive functional as an operator in the commutant (Theorems 488–489). An irreducible representation generates a factor (Theorem 491) and, more sharply, all of $$\mathcal{B}(H)$$ (Theorem 492), with a bundled density form (Theorem 493); consequently the GNS representation of a pure state generates a factor (Theorem 494) and all of $$\mathcal{B}(H)$$ (Theorem 495). The norm of a positive linear functional on a unital C\*-algebra equals its value on the unit (Theorem 496), which supports Pure $$\iff$$ Extreme Point of the state space (Definition 497, Theorem 498), the underlying convexity and the bridge to Mathlib's extreme-points API (Theorem 499), and weak-\* compactness of the state space (Theorem 503), which supplies the existence of pure states via Krein–Milman. The pullback of a state along a unital \*-homomorphism is introduced as its own object (Definition 500) with functoriality (Theorem 501) and the invariance of purity under a \*-isomorphism (Theorem 502). The section closes by specialising to the quasilocal algebra (Theorems 504–505). -- *§10.5.8 Unitary Equivalence and Superselection (p. 299, items 506–507).* Defines unitary equivalence of representations (Definition 506) and shows irreducibility and factoriality are unitary invariants, transported by the cross-space conjugation induced by the implementing unitary (Theorem 507). -- *§10.5.9 GNS Covariance (p. 299, items 508–513).* A new block. Cyclicity pulls back along a surjective \*-homomorphism (Lemma 508), so GNS data transports covariantly along a \*-isomorphism of the algebras (Theorem 509), restated as a unitary equivalence (Theorem 510). Pullback along a surjection preserves the image algebra (Lemma 511), whence superselection type transports along a \*-isomorphism (Theorem 512): the whole sector structure is an invariant of the algebra, not of its presentation. Applied to the covariance equivalence $$\alpha_L : \mathfrak{U}(\mathbf{B}) \simeq \mathfrak{U}(L \cdot \mathbf{B})$$ supplied by Axiom 5, this says the superselection type of a local state is constant along the Lorentz orbit of its region (Theorem 513). -- *§10.5.10 Disjointness and Quasi-Equivalence (p. 301, items 514–531).* Defines disjointness via the vanishing of all intertwiners (Definition 514) and the coarser quasi-equivalence via a \*-isomorphism of generated von Neumann algebras (Definition 515). Proves Schur's Lemma in the form of the Irreducible Dichotomy—two irreducible representations are either disjoint or unitarily equivalent (Theorem 516)—together with Schur multiplicity (Lemma 517) and the triviality of the endomorphism algebra of an irreducible representation (Lemma 518). The commutant is packaged as the self-intertwiner (gauge) von Neumann algebra, trivial exactly when the representation is irreducible (Theorem 519), with double-commutant duality (Theorem 520) and the factor/triviality duality between an algebra and its commutant (Theorem 521). A supporting run develops the centre from scratch: abelian $$\iff$$ self-commuting (Lemma 522), the centre $$Z(R) = R \cap R'$$ (Definition 523) and its being a von Neumann algebra (Lemma 524), the general two-algebra intersection lemma that the relative commutants of §10.5.6 need (Lemma 525), the centre is abelian (Theorem 526), $$R$$ is abelian iff it equals its centre (Lemma 527), a factor is abelian iff it is the scalars (Theorem 528), an algebra and its commutant share a centre (Theorem 529), and factoriality is triviality of the centre (Theorem 530). The Pure-State Dichotomy underlying superselection sectors (Theorem 531) closes the block. -- *§10.5.11 Direct Sums, Amplification, and Reducibility (p. 303, items 532–535).* Defines the direct-sum representation on the $$\ell^2$$-direct sum (Definition 532), shows each summand embeds as a subrepresentation whose projection lies in the commutant of the sum (Theorem 533), defines the $$\iota$$-fold amplification (Definition 534), and proves a direct sum with at least two nonzero summands is reducible, so a multiply-amplified representation is never irreducible (Theorem 535). -- *§10.5.12 Covariant States and the Covariance Action (p. 304, items 536–555).* Defines covariant families of local states (Definition 536) with their composition law (Lemma 537), and the lift of the fibrewise covariance action to a \*-automorphism of the quasilocal algebra (Definition 538), with uniqueness (Lemma 539) and existence for every quasilocal algebra (Theorem 541), no covariance-compatibility hypothesis being needed because every quasilocal algebra is automatically covariance-compatible (Lemma 540, new), and the trivial net as a special case (Theorem 542). The covariant quasilocal algebra of a net is then simply its canonical quasilocal algebra together with the covariance action (Definition 543, realised in Lean as `HaagKastlerNet.action`, so the covariance dynamics are stated directly for the net), which is a genuine group action (Lemma 544). Invariant states are defined (Definition 545) and shown to be implemented by GNS unitaries (Theorem 546); a state that is both invariant and pure yields a GNS representation that is simultaneously covariant and irreducible (Theorem 547). A "bounded-generator" scaffold toward the spectrum condition follows, deliberately sidestepping Stone's theorem and unbounded self-adjoint operators (the Lean records this bounded-generator restriction in **Restriction:** notes): positive energy for a bounded generator (Definition 548) with its API (Theorem 549), a generator-parameterised vacuum state (Definition 550) and its Stone-free consequences (Theorem 551), the future-timelike translation subgroup (Definition 552), and the vacuum state with that concrete predicate substituted in, leaving no free parameter (Definition 553). Purity is preserved by any \*-automorphism and is therefore covariance-invariant (Theorem 554), and GNS data transports along the quasilocal covariance action (Theorem 555). -- *§10.5.13 The Separating Vector of a Faithful State (p. 307, item 556).* The cyclic vector of a faithful state is also separating for the image of the representation (Theorem 556)—the basic datum of Tomita–Takesaki modular theory. This holds in any representation reproducing a faithful state, not only the canonical GNS one. -- *§10.5.14 The KMS Condition and Thermal Equilibrium (p. 308, items 557–566).* Introduces one-parameter automorphism groups (Definition 557) and KMS states (Definition 558) as the algebraic characterisation of thermal equilibrium. The condition is phrased purely as an analyticity statement about correlation functions, so—unlike the spectrum condition—it needs no unbounded-operator theory. The KMS state set is convex (Theorem 559); a boundary-coincidence argument at $$a = 1$$ (Lemma 560) together with the Strip-Liouville Principle (Definition 561), proved at positive inverse temperature via an $$i\beta$$-periodic entire extension (Theorem 562) and Liouville's theorem (Theorem 563), yields that KMS states are automatically invariant under the time evolution (Theorem 564); uniqueness on the strip from boundary values (Theorem 565) gives uniqueness of the analytic completion of a KMS correlation function (Theorem 566). -- *§10.5.15 KMS States for the Covariance Flow (p. 309, items 567–571).* A one-parameter subgroup of the inhomogeneous Lorentz group induces a one-parameter automorphism group on the quasilocal algebra via the covariance lift (Definition 567, Lemma 568); KMS states for that flow are defined accordingly (Definition 569) and shown convex (Theorem 570). The zero-temperature ($$\beta \to \infty$$) counterpart—a ground state for a covariance flow, whose GNS-implementing unitary group has positive energy—is recorded alongside it (Definition 571). - -**Where the Lean lives:** `Physicslib4/AQFT/HaagKastler/`, `Physicslib4/GNS/` (`Irreducibility`, `Superselection`, `RadonNikodym`, `ExtremeState`, …), `Physicslib4/Operators/` (`ReducingSubspace`, `DensityTheorem`), `Physicslib4/AQFT/KMS.lean`, `Physicslib4/Analysis/StripPeriodicExtension.lean` - -## Items - -Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration. - -
-§10.5 The axioms (p. 270) — 2 items - -- [**Definition 420**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-algebras) — Axiom 1: Local Algebras · `Physicslib4.AQFT.HaagKastler.LocalNet` -- [**Definition 421**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isotony) — Axiom 2: Isotony · `Physicslib4.AQFT.HaagKastler.Isotony` - -
- -
-§10.5.1 The Quasilocal Colimit (p. 272) — 26 items - -- [**Lemma 422**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-diamonds-isDirected) — Alexandrov Diamonds are Directed under Inclusion · `Physicslib4.AQFT.HaagKastler.Diamond` (+2 more) -- [**Lemma 423**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isotony-directed-system) — The Isotony Family is a Directed System · `Physicslib4.AQFT.HaagKastler.transitionHom` (+1 more) -- [**Lemma 424**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-norm-well-defined) — The Colimit Norm is Well Defined · `Physicslib4.AQFT.HaagKastler.QuasilocalColimit` (+3 more) -- [**Lemma 425**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-common-representatives) — Common Representatives for Two Colimit Elements · `Physicslib4.AQFT.HaagKastler.exists_common_representatives` -- [**Lemma 426**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-norm-axioms) — The Colimit Norm is a Ring Norm and a Normed-Space Norm · `Physicslib4.AQFT.HaagKastler.instNonemptyDiamond` (+3 more) -- [**Lemma 427**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-union-normed-star-algebra) — The Quasilocal Union is a Normed \*-Algebra · `Physicslib4.AQFT.HaagKastler.norm_eq_colimitNorm` (+1 more) -- [**Lemma 428**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-cstar-identity) — The Colimit Satisfies the C\*-Inequality · `Physicslib4.AQFT.HaagKastler.colimitCStarRing` -- [**Definition 429**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completion-standing-hypotheses) — Standing Hypotheses for the Completion Results · `Physicslib4.CStarCompletion` -- [**Definition 430**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completion-star) — The Involution on a Completion · `Physicslib4.instStarCompletion` (+1 more) -- [**Lemma 431**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:star-extends-to-completion) — The Involution Extends to the Completion · `Physicslib4.instStarRingCompletion` (+1 more) -- [**Lemma 432**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-coe-star-alg-hom) — The Completion Coercion as a Bundled \*-Algebra Homomorphism · `Physicslib4.coeStarAlgHom` -- [**Lemma 433**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-cstar-identity) — The C\*-Inequality Passes to the Completion · `Physicslib4.instCStarRingCompletion` -- [**Lemma 434**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-normed-algebra) — The Completion is a Normed $$\mathbb{C}$$-Algebra · `Physicslib4.instNormedAlgebraCompletion` -- [**Lemma 435**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-of-cstar-normed-star-algebra) — The Completion of a C\*-Normed \*-Algebra is a C\*-Algebra · `Physicslib4.instCStarAlgebraCompletion` -- [**Lemma 436**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-completion-cstar) — The Completion of the Quasilocal Colimit is a C\*-Algebra · `Physicslib4.AQFT.HaagKastler.QuasilocalCompletion` (+1 more) -- [**Definition 437**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-algebra) — Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.QuasilocalAlgebra` -- [**Definition 438**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-commutativity) — Axiom 3: Local Commutativity · `Physicslib4.AQFT.HaagKastler.LocalCommutativity` -- [**Lemma 439**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:local-commutativity-any-quasilocal) — Local Commutativity Holds in Every Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.LocalCommutativity.commute_ι` (+1 more) -- [**Definition 440**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-observable) — Quasilocal Observable · `Physicslib4.AQFT.HaagKastler.IsQuasilocalObservable` -- [**Definition 441**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-completeness) — Axiom 4: Quasilocal Completeness · `Physicslib4.AQFT.HaagKastler.ObservableCorrespondence` -- [**Theorem 442**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-algebra-exists) — Existence of a Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.exists_quasilocalAlgebra` -- [**Lemma 443**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding) — The Canonical Embeddings into the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.colimitStarOf` (+1 more) -- [**Lemma 444**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding-injective) — The Canonical Embeddings are Injective · `Physicslib4.AQFT.HaagKastler.quasilocalEmbedding_injective` -- [**Lemma 445**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding-cocone) — The Canonical Embeddings Form a Cocone · `Physicslib4.AQFT.HaagKastler.quasilocalEmbedding_transitionHom` -- [**Lemma 446**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-union-of-insertions) — The Colimit is the Union of the Images of its Insertions · `Physicslib4.AQFT.HaagKastler.exists_eq_colimitStarOf` -- [**Lemma 447**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embeddings-dense) — The Images of the Canonical Embeddings are Dense · `Physicslib4.AQFT.HaagKastler.dense_iUnion_range_quasilocalEmbedding` - -
- -
-§10.5.2 The von Neumann Density Theorem (p. 287) — 11 items - -- [**Lemma 448**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:reducing-subspace-projection-commutes) — Reducing Subspaces Give Commuting Projections · `Physicslib4.commute_starProjection_of_invariant` -- [**Lemma 449**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cyclic-subspace-reduces) — Cyclic Subspaces Reduce the Representation · `Physicslib4.starProjection_cyclic_mem_centralizer` -- [**Lemma 450**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-single-vector) — The Bicommutant on a Single Vector · `Physicslib4.apply_mem_closure_of_mem_bicommutant` -- [**Definition 451**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:finite-amplification) — Finite Amplification · `Physicslib4.diagAmplification` (+2 more) -- [**Lemma 452**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:finite-amplification-star-hom) — The Finite Amplification is a Unital \*-Homomorphism · `Physicslib4.diagAmplification` -- [**Lemma 453**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:commutant-of-amplification-entries) — Block Entries of the Amplified Commutant · `Physicslib4.blockEntry_mem_centralizer` -- [**Lemma 454**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:amplification-block-expansion) — Block Expansion on the Amplified Space · `Physicslib4.apply_eq_sum_blockEntry` -- [**Lemma 455**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:diagonal-in-amplified-bicommutant) — Diagonal Operators in the Amplified Bicommutant · `Physicslib4.ampDiag_mem_bicommutant` -- [**Lemma 456**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-finite-vectors) — The Bicommutant on Finitely Many Vectors · `Physicslib4.exists_forall_norm_sub_lt_of_mem_bicommutant` -- [**Lemma 457**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:strong-neighbourhood-basis) — A Neighbourhood Basis for the Strong Operator Topology · `Physicslib4.AQFT.HaagKastler.hasBasis_nhds_ofFun` -- [**Theorem 458**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-strongly-dense) — Quasilocal Observables are Strongly Dense in the Bicommutant · `Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` — the von Neumann density theorem, proved locally from Lemmas 448–457 (see [Formalisation status](./#formalisation-status)) - -
- -
-§10.5.3 Lorentz Covariance and the Haag–Kastler Net (p. 290) — 2 items - -- [**Definition 459**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:lorentz-covariance) — Axiom 5: Lorentz Covariance · `Physicslib4.AQFT.HaagKastler.LorentzCovariance` -- [**Definition 460**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:haag-kastler-net) — Haag–Kastler Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet` - -
- -
-§10.5.4 Einstein Causality (p. 291) — 1 item - -- [**Theorem 461**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:einstein-causality) — Einstein Causality in a Representation · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.einstein_causality` (+1 more) - -
- -
-§10.5.5 Local von Neumann Algebras (p. 291) — 13 items - -- [**Definition 462**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann) — Local von Neumann Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localOperators` (+1 more) -- [**Lemma 463**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-of-selfadjoint-is-von-neumann) — The Bicommutant of a Self-Adjoint Set is a von Neumann Algebra · `Physicslib4.GNS.vonNeumannOfSelfAdjoint` -- [**Definition 464**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-algebra) — $$R(\mathbf{B})$$ as a von Neumann Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra` -- [**Theorem 465**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-microcausality) — Microcausality at the von Neumann Level · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_subset_centralizer` -- [**Theorem 466**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-isotony) — Isotony of the von Neumann Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_mono` -- [**Theorem 467**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-bundled-order) — Bundled von Neumann Microcausality and Isotony · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_le_commutant` (+1 more) -- [**Definition 468**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-net) — The Net of von Neumann Algebras · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.vonNeumannNet` -- [**Theorem 469**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence) — Statistical Independence (Schlieder Property) · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_separating` (+1 more) -- [**Theorem 470**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-bundled) — Statistical Independence, bundled · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_separating` -- [**Theorem 471**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:additive-free-locality) — Additive-Free Locality via the Spacelike Complement · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement` -- [**Theorem 472**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-geometric-covariance) — Geometric Covariance of the von Neumann Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.lieConj_image_localVonNeumann` (+1 more) -- [**Theorem 473**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-factor-orbit) — Orbit-Invariance of Factoriality · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_isFactor_smul` -- [**Theorem 474**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-covariance-iso) — Geometric Covariance as a von Neumann Algebra Isomorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannEquiv` - -
- -
-§10.5.6 Relative Commutants of Nested Local Algebras (p. 294) — 8 items - -- [**Definition 475**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:relative-commutant) — Relative Commutant of a Nested Pair · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant` -- [**Theorem 476**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-antitone) — Antitonicity of the Commutant · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.commutant_le_commutant_of_le` -- [**Theorem 477**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-le-right) — Relative Commutant Lies in the Larger Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant_le_right` -- [**Theorem 478**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-coe-commutant) — Relative Commutant Commutes with the Smaller Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant_coe_subset_commutant` -- [**Theorem 479**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-center) — Relative Commutant Contains the Centre · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.center_le_relativeCommutant` -- [**Definition 480**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-inclusion) — Irreducible Inclusion · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsIrreducibleInclusion` -- [**Theorem 481**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-inclusion-factor) — An Irreducible Inclusion has Factor Ambient · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isFactor_of_isIrreducibleInclusion` -- [**Theorem 482**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:self-inclusion-factor) — Self-Inclusion is Irreducible iff Factor · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isIrreducibleInclusion_self_iff_isFactor` - -
- -
-§10.5.7 Irreducibility and Schur's Lemma (p. 295) — 23 items - -- [**Definition 483**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-representation) — Irreducible Representation · `Physicslib4.GNS.IsIrreducible` -- [**Theorem 484**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:schur-lemma) — Topological Schur Lemma · `Physicslib4.GNS.eq_smul_one_of_commute_of_cyclic` -- [**Theorem 485**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-scalar-iff) — Commutant Scalar iff Proportional Coefficient · `Physicslib4.GNS.isScalar_iff_coeff_proportional` -- [**Definition 486**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pure-state) — Pure State · `Physicslib4.GNS.IsPure` -- [**Theorem 487**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-implies-irreducible) — Pure Implies Irreducible · `Physicslib4.GNS.isIrreducible_of_isPure` -- [**Theorem 488**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-form-bound) — The GNS Radon–Nikodym Form is Bounded · `Physicslib4.GNS.gns_form_norm_le` (+1 more) -- [**Theorem 489**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-radon-nikodym-operator) — The GNS Radon–Nikodym Operator · `Physicslib4.GNS.rnOp` (+3 more) -- [**Theorem 490**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible) — Pure $$\iff$$ Irreducible · `Physicslib4.GNS.isPure_iff_isIrreducible` -- [**Theorem 491**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-factor) — An Irreducible Representation Generates a Factor · `Physicslib4.GNS.center_gnsVonNeumann_eq_of_isIrreducible` -- [**Theorem 492**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-generates-all) — Irreducibility $$\iff$$ Generating $$\mathcal{B}(H)$$ · `Physicslib4.GNS.isIrreducible_iff_gnsVonNeumann_eq_univ` (+1 more) -- [**Theorem 493**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-generates-all-bundled) — Bundled Density Form of Irreducibility · `Physicslib4.GNS.coe_gnsVonNeumannAlgebra_eq_univ_of_isIrreducible` (+1 more) -- [**Theorem 494**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-factor) — The GNS Representation of a Pure State is a Factor · `Physicslib4.GNS.exists_gns_factor_of_isPure` -- [**Theorem 495**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-generates-all) — The GNS Representation of a Pure State Generates $$\mathcal{B}(H)$$ · `Physicslib4.GNS.exists_gns_generates_all_of_isPure` -- [**Theorem 496**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:norm-positive-functional) — Norm of a Positive Functional · `Physicslib4.GNS.norm_eq_re_apply_one_of_positive` -- [**Definition 497**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:extreme-state) — Extreme Point of the State Space · `Physicslib4.GNS.State.IsExtremePoint` -- [**Theorem 498**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme) — Pure $$\iff$$ Extreme Point · `Physicslib4.GNS.isPure_iff_isExtremePoint` -- [**Theorem 499**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-space-convex-bridge) — State-Space Convexity and the Extreme-Point Bridge · `Physicslib4.GNS.convex_stateSpace` (+1 more) -- [**Definition 500**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:state-pullback) — Pullback of a State · `Physicslib4.GNS.State.comp` -- [**Theorem 501**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-pullback-functorial) — Functoriality of the State Pullback · `Physicslib4.GNS.State.comp_id` (+1 more) -- [**Theorem 502**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-pullback-invariant) — Purity is Invariant under a \*-Isomorphism · `Physicslib4.GNS.isPure_comp_iff` -- [**Theorem 503**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-space-weak-compact) — Weak-\* Compactness of the State Space · `Physicslib4.GNS.isCompact_weakStateSet` -- [**Theorem 504**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme-quasilocal) — Pure $$\iff$$ Extreme Point on the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.pure_iff_extreme` -- [**Theorem 505**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible-quasilocal) — Pure $$\iff$$ Irreducible GNS on the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.exists_gns_pure_iff_irreducible` - -
- -
-§10.5.8 Unitary Equivalence and Superselection (p. 299) — 2 items - -- [**Definition 506**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:unitary-equivalence) — Unitary Equivalence of Representations · `Physicslib4.GNS.UnitaryEquiv` -- [**Theorem 507**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:unitary-equiv-invariants) — Irreducibility and Factoriality are Unitary Invariants · `Physicslib4.GNS.UnitaryEquiv.isIrreducible_iff` (+1 more) - -
- -
-§10.5.9 GNS Covariance (p. 299) — 6 items - -- [**Lemma 508**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cyclic-pullback-surjective) — Cyclicity pulls back along a surjective \*-homomorphism · `Physicslib4.GNS.isCyclicVector_comp_of_surjective` -- [**Theorem 509**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance) — GNS covariance under a \*-isomorphism · `Physicslib4.GNS.exists_unitary_of_gns_comp` -- [**Theorem 510**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-unitary-equiv) — The GNS representation of a pullback state · `Physicslib4.GNS.unitaryEquiv_comp_of_gns` -- [**Lemma 511**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-image-invariants) — Pullback along a surjection preserves the image algebra · `Physicslib4.GNS.range_comp_of_surjective` (+2 more) -- [**Theorem 512**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-sector-transport) — Superselection type transports along a \*-isomorphism · `Physicslib4.GNS.isIrreducible_iff_of_gns_comp` (+1 more) -- [**Theorem 513**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-local) — GNS covariance for local algebras · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.unitaryEquiv_gns_covEquiv` (+2 more) - -
- -
-§10.5.10 Disjointness and Quasi-Equivalence (p. 301) — 18 items - -- [**Definition 514**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:disjoint-representations) — Disjoint Representations · `Physicslib4.GNS.AreDisjoint` -- [**Definition 515**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasi-equivalence) — Quasi-Equivalence of Representations · `Physicslib4.GNS.QuasiEquiv` -- [**Theorem 516**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-dichotomy) — Schur's Lemma and the Irreducible Dichotomy · `Physicslib4.GNS.UnitaryEquiv.of_intertwines_of_isIrreducible` (+1 more) -- [**Lemma 517**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:schur-multiplicity) — Schur Multiplicity · `Physicslib4.GNS.eq_smul_of_intertwines_of_isIrreducible` -- [**Lemma 518**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:endomorphism-scalar) — Endomorphism Algebra of an Irreducible Representation · `Physicslib4.GNS.intertwines_self_iff_isScalar` -- [**Theorem 519**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-von-neumann) — The commutant (self-intertwiner) von Neumann algebra · `Physicslib4.GNS.commutantVonNeumann` (+2 more) -- [**Theorem 520**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:double-commutant-duality) — Double-Commutant Duality · `Physicslib4.GNS.commutant_gnsVonNeumannAlgebra` (+1 more) -- [**Theorem 521**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-factor-duality) — A Factor and its Commutant; Triviality Duality · `Physicslib4.GNS.isFactor_gnsVonNeumann_iff_isFactor_commutant` (+1 more) -- [**Lemma 522**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-abelian-self-commuting) — Abelian $$\iff$$ Self-Commuting · `Physicslib4.GNS.isAbelian_iff_le_commutant` -- [**Definition 523**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-center) — Centre of a von Neumann algebra · `Physicslib4.GNS.vonNeumannCenter` -- [**Lemma 524**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-inter-is-von-neumann) — The centre is a von Neumann algebra · `Physicslib4.GNS.bicommutant_inter_commutant_eq` -- [**Lemma 525**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-inter-general) — The intersection of two von Neumann algebras is a von Neumann algebra · `Physicslib4.GNS.bicommutant_inter_eq` -- [**Theorem 526**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-center-abelian) — The centre of a von Neumann algebra is abelian · `Physicslib4.GNS.vonNeumannCenter_isAbelian` -- [**Lemma 527**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-center-eq-self-iff-abelian) — $$R$$ is abelian iff it equals its centre · `Physicslib4.GNS.vonNeumannCenter_eq_self_iff_isAbelian` -- [**Theorem 528**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:factor-abelian-iff-scalars) — A factor is abelian iff it is the scalars · `Physicslib4.GNS.isAbelian_iff_eq_scalars_of_isFactor` -- [**Theorem 529**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:center-eq-commutant-center) — A von Neumann algebra and its commutant share a centre · `Physicslib4.GNS.vonNeumannCenter_eq_commutant` -- [**Theorem 530**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:factor-iff-center-scalars) — A von Neumann algebra is a factor iff its centre is the scalars · `Physicslib4.GNS.isFactor_iff_center_eq_scalars` -- [**Theorem 531**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-state-dichotomy) — The Pure-State Dichotomy · `Physicslib4.GNS.exists_gns_areDisjoint_or_unitaryEquiv_of_isPure` - -
- -
-§10.5.11 Direct Sums, Amplification, and Reducibility (p. 303) — 4 items - -- [**Definition 532**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:direct-sum-representation) — Direct-Sum Representation · `Physicslib4.GNS.directSum` -- [**Theorem 533**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:direct-sum-subrepresentation) — Subrepresentations and Commutant of a Direct Sum · `Physicslib4.GNS.intertwines_single` (+1 more) -- [**Definition 534**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:amplification) — Amplification · `Physicslib4.GNS.amplification` -- [**Theorem 535**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:direct-sum-reducible) — Reducibility of a Direct Sum · `Physicslib4.GNS.not_isIrreducible_directSum` - -
- -
-§10.5.12 Covariant States and the Covariance Action (p. 304) — 20 items - -- [**Definition 536**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-state-family) — Covariant Family of Local States · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsCovariantFamily` -- [**Lemma 537**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-state-family-compose) — Composition of Covariance · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsCovariantFamily.comp` -- [**Definition 538**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-lift) — Quasilocal Covariance Automorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.QuasilocalLift` -- [**Lemma 539**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-lift-unique) — Uniqueness of the Quasilocal Lift · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.QuasilocalLift.unique` -- [**Lemma 540**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-covariance-compatible) — Every Quasilocal Algebra is Covariance-Compatible · `Physicslib4.AQFT.HaagKastler.isCovariantQuasilocal` -- [**Theorem 541**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-lift-exists) — Existence of the Quasilocal Lift · `Physicslib4.AQFT.HaagKastler.nonempty_quasilocalLift` -- [**Theorem 542**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-lift-trivial) — Existence for the Trivial Net · `Physicslib4.AQFT.HaagKastler.nonempty_trivialQuasilocalLift` -- [**Definition 543**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-quasilocal-algebra) — Covariant Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.action` -- [**Lemma 544**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-action-coherence) — Group-Action Coherence of the Covariance Automorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.action_one` (+1 more) -- [**Definition 545**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:invariant-state) — Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState` -- [**Theorem 546**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:invariant-state-gns-unitary) — GNS Unitary Implementation of an Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState.exists_gns_unitary` -- [**Theorem 547**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-covariant-representation) — Irreducible Covariant Representation of a Pure Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState.exists_gns_irreducible_covariant` -- [**Definition 548**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:positive-energy) — Positive Energy (bounded-generator scaffold) · `Physicslib4.AQFT.IsPositiveEnergy` -- [**Theorem 549**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:positive-energy-api) — Positive-Energy API · `Physicslib4.AQFT.isPositiveEnergy_const_refl` (+3 more) -- [**Definition 550**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:vacuum-state) — Vacuum State (generator-parameterised scaffold) · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState` -- [**Theorem 551**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:vacuum-no-stone) — No-Stone Consequences of a Vacuum State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState.invariant` (+1 more) -- [**Definition 552**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-timelike-translation) — Future-Timelike Translation Subgroup · `Physicslib4.AQFT.HaagKastler.translationSub` (+3 more) -- [**Definition 553**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:vacuum-state-concrete) — Vacuum State with the Concrete Spectrum Condition · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumStateConcrete` -- [**Theorem 554**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:purity-covariance-invariant) — Purity is Covariance-Invariant · `Physicslib4.GNS.isPure_precomp_iff` (+1 more) -- [**Theorem 555**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-quasilocal-action) — GNS covariance along the quasilocal action · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.unitaryEquiv_gns_action` (+2 more) - -
- -
-§10.5.13 The Separating Vector of a Faithful State (p. 307) — 1 item - -- [**Theorem 556**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:separating-faithful) — Separating Vector of a Faithful State · `Physicslib4.GNS.separating_of_faithful` (+1 more) - -
- -
-§10.5.14 The KMS Condition and Thermal Equilibrium (p. 308) — 10 items - -- [**Definition 557**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:one-parameter-aut) — One-Parameter Automorphism Group · `Physicslib4.AQFT.IsOneParameterAut` -- [**Definition 558**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state) — KMS State · `Physicslib4.AQFT.IsKMSState` -- [**Theorem 559**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex) — The KMS State Set is Convex · `Physicslib4.AQFT.IsKMSState.convexCombo` -- [**Lemma 560**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:kms-correlation-one) — Boundary Coincidence for $$a = 1$$ · `Physicslib4.AQFT.IsKMSState.correlationOne` -- [**Definition 561**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:strip-liouville) — Strip-Liouville Principle · `Physicslib4.AQFT.StripLiouville` -- [**Theorem 562**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-periodic-extension) — $$i\beta$$-Periodic Entire Extension (Strip Schwarz Reflection) · `Physicslib4.exists_bounded_entire_extension_of_strip_periodic` -- [**Theorem 563**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-liouville-pos) — Strip-Liouville Holds for $$\beta > 0$$ · `Physicslib4.AQFT.stripLiouville_of_pos` -- [**Theorem 564**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-invariance) — KMS States are Invariant · `Physicslib4.AQFT.IsKMSState.invariant_of_pos` -- [**Theorem 565**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-uniqueness) — Uniqueness on the Strip from Boundary Values · `Physicslib4.eqOn_strip_of_eq_boundary` -- [**Theorem 566**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-correlation-unique) — Uniqueness of the KMS Correlation Function · `Physicslib4.AQFT.IsKMSState.correlation_eqOn` - -
- -
-§10.5.15 KMS States for the Covariance Flow (p. 309) — 5 items - -- [**Definition 567**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:flow-aut-covariance) — Covariance-Flow Automorphism Family · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.flowAut` -- [**Lemma 568**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:one-parameter-aut-flow-covariance) — A Lorentz One-Parameter Subgroup Induces a One-Parameter Group · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isOneParameterAut_flowAut` -- [**Definition 569**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state-for-flow-covariance) — KMS State for the Covariance Flow · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsKMSStateForFlow` -- [**Theorem 570**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex-for-flow-covariance) — Convexity of the Covariance-Flow KMS States · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsKMSStateForFlow.convexCombo` -- [**Definition 571**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:ground-state-for-flow-covariance) — Ground State for a Covariance Flow · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsGroundStateForFlow` (+2 more) - -
- - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · **§10.5 Minkowski** · [§10.6 Curved](sec10-6-curved.html) · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.6 Curved](sec10-6-curved.html) → diff --git a/home_page/sec10-5-spacetime.md b/home_page/sec10-5-spacetime.md new file mode 100644 index 0000000..0a03dd6 --- /dev/null +++ b/home_page/sec10-5-spacetime.md @@ -0,0 +1,212 @@ +--- +title: "§10.5 Spacetime and causal structure (pp. 249–286)" +usemathjax: true +--- + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · **§10.5 Spacetime** · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.4 Stone](sec10-4-stone.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) → + +# §10.5 Spacetime and causal structure (pp. 249–286) + +137 items (Definitions 330–466), building the entire causal and topological apparatus the axioms are indexed on. The trips underlying the chronological and causal relations $$\ll$$ and $$\prec$$ are genuine geodesics of the Levi-Civita connection of the metric, which the section constructs for an arbitrary pseudo-Riemannian metric on top of Mathlib's covariant derivatives (Mathlib itself has only a Riemannian Levi-Civita connection and no geodesics). It proceeds in nine layers. + +- *Spacetime, tangent-vector causality, and curves (pp. 249–254, items 330–353).* Gives precise definitions of spacetime (Definition 330) and standard Minkowski spacetime (Definition 331); classifies tangent vectors as timelike, spacelike, or null (Definition 332) and proves the trichotomy (Lemma 333), the reverse Cauchy–Schwarz and reverse triangle inequalities for timelike vectors (Lemmas 334–335), and the cone geometry—orientation of pointing vectors, the sign lemma, definiteness of the spacelike complement of a timelike vector, and convexity of the cones (Lemmas 338–341)—alongside time orientations (Definition 336) and future- and past-pointing vectors (Definition 337). Then paths, curves, and oriented curves are defined as equivalence classes of paths up to reparametrisation (Definitions 342–347), with causal type and future/past orientation each shown well-defined on the quotient (Theorems 346 and 348) and a forgetful projection from oriented to unoriented curves (Theorem 349). Endpoints (Definition 350), shown to be well defined on curves and smooth curves (Lemma 351), come with two point-set lemmas—an extremal parameter lies in the frontier, and two endpoints force a compact parameter interval (Lemmas 352–353). +- *The Levi-Civita connection and geodesics (pp. 254–258, items 354–369).* A new layer. Pseudo-Riemannian metrics (Definition 354) are smooth, symmetric, non-degenerate families of bilinear forms, with no signature condition, so everything here applies to every spacetime. Covariant derivatives are Mathlib's `IsCovariantDerivativeOn`; metric compatibility and the Levi-Civita condition (compatible and torsion-free) are defined on top of them (Definitions 355–356). The musical isomorphism $$v \mapsto g_x(v, \cdot)$$ is a linear isomorphism at each point (Lemma 357); the smoothness of its inverse (Lemma 358) is stated and proved in the blueprint but is the one node of the layer not yet formalised, and nothing depends on it. The Koszul formula (Lemma 359), the tensoriality of the Koszul expression (Lemma 360), and the verification that the Koszul connection is a covariant derivative (Lemma 361) that is Levi-Civita (Lemma 362) give existence and uniqueness of the Levi-Civita connection (Theorem 363). Five lemmas about smooth paths—a function vanishing along a path has zero derivative along it, the covariant derivative along a curve is local, local vector fields globalise, a smooth path has a local left inverse, and its velocity extends to a smooth vector field (Lemmas 364–368)—make the geodesic condition chart-free, well defined and non-vacuous. A geodesic (Definition 369) is then an affinely parametrised smooth path $$\mu$$ with $$(\nabla_X X)(\mu(s)) = 0$$ at every interior parameter, for every smooth vector field $$X$$ extending the velocity near $$s$$. +- *Trips, futures and pasts (pp. 258–260, items 370–378).* Trips and causal trips (Definitions 370–371) are finite chains of future-oriented timelike (respectively causal) geodesic segments, geodesic in the sense of Definition 369, with matching past and future endpoints. Chronological and causal precedence are transitive (Theorem 372); the causality condition (Definition 373) makes them a strict partial order (Theorem 374); and chronological and causal futures and pasts (Definitions 375–376) come with their basic inclusion and monotonicity properties (Lemmas 377–378). +- *§10.5.1 Causal diamonds (p. 260, items 379–393).* Introduces the causal diamond $$J^+(p) \cap J^-(q)$$ and the chronological (Alexandrov) diamond $$I^+(p) \cap I^-(q)$$ (Definition 379), with the structural properties of the causal diamond—monotonicity under endpoint spread, causal convexity, and that nonemptiness forces $$p \prec q$$ (Lemma 380)—and the containment of chronological diamonds in causal ones, together with the identification of the Alexandrov basis as exactly the chronological diamonds (Theorem 381). It then develops spacelike separation of points and of regions (Definitions 382–383, Lemmas 384–385), the spacelike complement $$\mathbf{B}^\perp$$ (Definition 386) and its order structure—antitone, extensive on the double complement, with the triple complement collapsing, making complementation the Galois connection attached to the spacelike-separation relation (Lemma 387). The double complement is packaged as the causal closure operator (Definition 388, Lemma 389), whose fixed points are the causally complete regions (Definition 390). These form a complete lattice—meets are intersections, joins are causal closures of unions—on which the causal complement is an order-reversing involution (Theorem 391); the set-level De Morgan laws (Lemma 392) then lift to full binary and infinitary De Morgan laws on the lattice (Theorem 393). The blueprint is careful to record what does *not* hold: the full orthocomplement law $$\mathbf{B} \wedge \mathbf{B}^\perp = \bot$$ fails at this generality, because the trip-based causal relation is irreflexive and so a point is spacelike-separated from itself. +- *§10.5.2 Causal convexity (p. 264, items 394–396).* Defines a causally convex region as one containing every point causally between two of its own points (Definition 394), shows causal diamonds are causally convex (Lemma 395), and shows every spacelike complement—hence every causally complete region—is causally convex (Theorem 396). +- *§10.5.3 Causal convexity: closure structure, and the Alexandrov basis theorems (p. 265, items 397–420).* The causally convex regions are shown to form a closure system (Lemma 397), giving the causal-convex hull (Definition 398) as a genuine closure operator whose closed sets are exactly the causally convex regions (Lemmas 399, Theorem 400). The subsection then turns to the Alexandrov topology (Definition 401): every diamond is open (Lemma 402); chronological futures and pasts are open under an explicit "no endpoints" hypothesis (Lemma 403) and unconditionally on standard Minkowski spacetime, where the coordinate-cone description discharges the hypothesis (Lemma 404). On standard Minkowski spacetime the componentwise directional derivative is a Levi-Civita connection (Lemma 405), hence the Levi-Civita connection is flat (Lemma 406) and affinely parametrised straight lines are geodesics (Lemma 407), so trips there are the familiar straight-line segments. Minkowski spacetime and Lorentzian spacetime are then defined (Definitions 408–409, the latter as a spacetime whose Alexandrov topology is Hausdorff), with a bundled form of spacelike separation and basis openness (Lemma 410). A point lying in no diamond is pathological: its only Alexandrov neighbourhood is the whole space (Lemma 411), and the Hausdorff assumption rules this out, forcing the diamonds to cover the space (Lemma 412). Given downward-directedness the diamonds form a genuine topological basis (Theorem 413); past and future interpolation on standard Minkowski (Lemmas 414–415) supply downward-directedness there (Lemma 416), and common chronological predecessors and successors supply upward-directedness (Lemmas 417–419), so on standard Minkowski the diamonds are an unconditional basis (Theorem 420). Upward-directedness is what the quasilocal colimit of §10.6.1 later consumes. +- *§10.5.4 Dilations are causal automorphisms but not isometries (p. 271, items 421–423).* The dilations $$x \mapsto \lambda x$$ preserve the Minkowski cones (Lemma 421) and are therefore causal automorphisms (Theorem 422), yet scale the metric by $$\lambda^2$$ and so are not isometries for $$\lambda \neq 1$$ (Theorem 423). This is the counterexample that forces the general-covariance morphism of §10.8 to be specified geometrically rather than causally. +- *§10.5.5 Isometries and basis-set preservation (p. 272, items 424–434).* Single-metric transport: isometries preserve the causal classification of tangent vectors (Lemma 424), paths have unique differentials and well-defined pushforwards (Lemmas 425–426), and isometries respect the Levi-Civita structure: pullbacks of vector fields and of the metric pairing, their derivatives and Lie brackets transform naturally (Lemmas 427–429), so an isometry preserves the Levi-Civita connection (Lemma 430) and maps geodesics to geodesics and back (Lemma 431). Future-orientation-preserving isometries preserve chronology (Lemma 432) and map Alexandrov-basis diamonds to diamonds (Lemma 433), which is exactly the well-definedness condition for the Axiom 5 action (Lemma 434). +- *§10.5.6 Pullback metrics and cross-metric isometries (p. 274, items 435–466).* The single-metric lemmas above compare a spacetime with itself; general covariance instead compares two different metrics on one carrier, so the transport statements are redone cross-metric. This subsection defines the pullback $$\psi^* g$$ of a spacetime metric as a bundled family of continuous bilinear forms (Definition 435) and verifies every obligation in turn: the differential of a diffeomorphism is a linear equivalence (Lemma 436), with the two round-trip cancellation identities that Mathlib does not supply for a global `Diffeomorph` proved by hand (Lemmas 437–439); the pullback metric is symmetric, non-degenerate, Lorentzian, and a smooth section of the bilinear-form bundle (Lemmas 440–443), so the pullback of a spacetime is a spacetime (Theorem 444). Two-sided preservation of future orientation is then defined (Definition 445) and the pullback time orientation is shown to be bundle-smooth, nowhere vanishing, and everywhere timelike (Lemmas 446–449), with transport of future-pointing timelike and null vectors (Lemmas 450–451) giving two-sided orientation preservation (Lemma 452). Cross-metric isometries are defined (Definition 453) and shown closed under inverses (Lemma 454), to preserve causal classification (Lemma 455), to push paths forward preserving the timelike/causal conditions and endpoints (Lemmas 456–459), and to transport chronological precedence and the chronological future and past (Lemmas 460–462), hence to preserve Alexandrov-basis sets (Lemma 463). A general topological lemma—a bijection matching generating families is a homeomorphism (Lemma 464)—then identifies the pullback Alexandrov topology (Lemma 465) and yields that the pullback of a Lorentzian spacetime is again a Lorentzian spacetime (Theorem 466). Without Theorem 466 the phrase "the net over $$\psi^*(M,g)$$" in §10.8 would have no referent. + +**Where the Lean lives:** `Physicslib4/Geometry/PseudoRiemannian/` (`Basic`, `LeviCivita`, `Flat`), `Physicslib4/Spacetime/` (`Causality`, `Curves`, `AlongPath`, `CausalComplement`, `CausalStructure`, `Minkowski`, `MinkowskiDirected`, `LorentzianSpacetime`, `IsometryCausality`, …) + +## Items + +Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration. + +
+§10.5 opening run — spacetime, tangent-vector causality, curves, the Levi-Civita connection and geodesics, trips, futures and pasts (p. 249) — 49 items + +- [**Definition 330**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacetime) — Spacetime · `Physicslib4.Spacetime` +- [**Definition 331**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:standard-minkowski-spacetime) — Standard Minkowski Spacetime · `Physicslib4.StandardMinkowskiSpacetime` +- [**Definition 332**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:timelike-spacelike-null-vectors) — Timelike, Spacelike, or Null Vectors · `Physicslib4.Spacetime.IsTimelike` (+2 more) +- [**Lemma 333**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-classification) — Causal Classification · `Physicslib4.Spacetime.isTimelike_or_isNull_or_isSpacelike` (+5 more) +- [**Lemma 334**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:reverse-cauchy-schwarz) — Reverse Cauchy–Schwarz for Timelike Vectors · `Physicslib4.reverse_cauchy_schwarz_of_lorentzianAt` (+1 more) +- [**Lemma 335**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:timelike-cone-convexity) — Timelike Cone Convexity and Reverse Triangle Inequality · `Physicslib4.add_isTimelike_of_lorentzianAt` (+3 more) +- [**Definition 336**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:time-orientable) — Time Orientation · `Physicslib4.Spacetime.TimeOrientation` (+1 more) +- [**Definition 337**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-and-past-pointing-vectors) — Future and Past Pointing Vectors · `Physicslib4.Spacetime.IsFuturePointing` (+1 more) +- [**Lemma 338**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pointing-orientation) — Orientation of Pointing Vectors · `Physicslib4.Spacetime.isTimelike_or_isNull_of_isFuturePointing` (+2 more) +- [**Lemma 339**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cone-sign-lemma) — Sign Lemma for the Future Cone · `Physicslib4.nonneg_of_orthogonal_timelike` (+4 more) +- [**Lemma 340**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-definite) — Definiteness of the Spacelike Complement · `Physicslib4.eq_zero_of_forall_bilin_eq_zero` (+2 more) +- [**Lemma 341**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:future-cone-convexity) — Convexity of the Future Cone · `Physicslib4.Spacetime.isFuturePointing_add` (+10 more) +- [**Definition 342**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:paths) — Paths · `Physicslib4.Spacetime.Path` (+1 more) +- [**Definition 343**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:curves) — Curves · `Physicslib4.Spacetime.Curve` (+1 more) +- [**Definition 344**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:timelike-and-causal-smooth-curves) — Timelike and Causal Smooth Curves · `Physicslib4.Spacetime.IsTimelikeSmoothCurve` (+1 more) +- [**Definition 345**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-and-past-oriented-smooth-curves) — Future and Past Oriented Smooth Curves · `Physicslib4.Spacetime.IsFutureOrientedSmoothCurve` (+1 more) +- [**Theorem 346**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:smooth-curve-causal-well-defined) — Reparametrisation-Invariance of the Causal Type · `Physicslib4.Spacetime.isTimelikeSmoothCurve_ofPath_iff` (+1 more) +- [**Definition 347**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:oriented-smooth-curve) — Oriented Smooth Curve · `Physicslib4.Spacetime.OrientedSmoothCurve` +- [**Theorem 348**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:oriented-curve-well-defined) — Reparametrisation-Invariance of Orientation · `Physicslib4.Spacetime.isFutureOrientedCurve_ofPath_iff` (+1 more) +- [**Theorem 349**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:oriented-curve-projection) — The Forgetful Projection of Oriented Curves · `Physicslib4.Spacetime.OrientedSmoothCurve.toSmoothCurve` (+1 more) +- [**Definition 350**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:endpoints) — Endpoints · `Physicslib4.Spacetime.IsEndpoint` (+2 more) +- [**Lemma 351**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:curve-endpoint-well-defined) — Endpoints of curves are well defined · `Physicslib4.Spacetime.IsCurveEndpoint` (+5 more) +- [**Lemma 352**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:extremal-parameter-mem-frontier) — An extremal parameter lies in the frontier · `Physicslib4.Spacetime.mem_frontier_of_isMin` (+3 more) +- [**Lemma 353**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:endpoint-parameter-space-eq-Icc) — Two endpoints force a compact parameter interval · `Physicslib4.Spacetime.parameterSpace_eq_Icc_of_endpoints` +- [**Definition 354**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pseudo-riemannian-metric) — Pseudo-Riemannian Metric · `Physicslib4.Geometry.PseudoRiemannianMetric` (+1 more) +- [**Definition 355**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:metric-compatible-connection) — Covariant Derivative; Metric Compatibility · `Physicslib4.Geometry.CovariantDerivative.IsMetricCompatibleWith` +- [**Definition 356**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:levi-civita-connection) — Levi-Civita Connection · `Physicslib4.Geometry.CovariantDerivative.IsLeviCivitaFor` +- [**Lemma 357**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:musical-isomorphism) — Musical Isomorphism · `Physicslib4.Geometry.PseudoRiemannianMetric.bijective_val` +- [**Lemma 358**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:musical-inverse-smooth) — Smoothness of the Inverse Musical Isomorphism *(not yet formalised: no Lean declaration — see [Formalisation status](./#formalisation-status))* +- [**Lemma 359**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-formula) — Koszul Formula · `Physicslib4.Geometry.CovariantDerivative.IsLeviCivitaFor.koszul` +- [**Lemma 360**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-expression-tensorial) — Tensoriality of the Koszul Expression · `Physicslib4.Geometry.PseudoRiemannianMetric.tensorialAt_koszulAux₁` (+2 more) +- [**Lemma 361**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-connection-is-covariant-derivative) — The Koszul Connection is a Covariant Derivative · `Physicslib4.Geometry.PseudoRiemannianMetric.isCovariantDerivativeOn_leviCivitaAux` +- [**Lemma 362**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:koszul-connection-is-levi-civita) — The Koszul Connection is Levi-Civita · `Physicslib4.Geometry.PseudoRiemannianMetric.isMetricCompatibleWith_koszulConnection` (+1 more) +- [**Theorem 363**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:levi-civita-exists-unique) — Existence and Uniqueness of the Levi-Civita Connection · `Physicslib4.Geometry.PseudoRiemannianMetric.exists_isLeviCivitaFor` (+3 more) +- [**Lemma 364**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:derivative-vanishes-along-path) — A Function Vanishing Along a Path has Zero Derivative Along It · `Physicslib4.Spacetime.SmoothPath.mfderiv_apply_tangent_eq_zero` +- [**Lemma 365**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-derivative-along-curve-local) — Covariant Derivative Along a Curve is Local · `Physicslib4.Spacetime.SmoothPath.covDeriv_eq_of_eventuallyEq` +- [**Lemma 366**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:local-vector-field-globalises) — Local Vector Fields Globalise · `Physicslib4.Spacetime.exists_contMDiff_vectorField_eventuallyEq` +- [**Lemma 367**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:path-local-left-inverse) — Local Left Inverse of a Smooth Path · `Physicslib4.Spacetime.SmoothPath.exists_localLeftInverse` +- [**Lemma 368**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:velocity-extends) — The Velocity of a Smooth Path Extends to a Vector Field · `Physicslib4.Spacetime.SmoothPath.exists_vectorField_eq_tangent` +- [**Definition 369**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:geodesic) — Geodesic · `Physicslib4.Spacetime.IsGeodesic` +- [**Definition 370**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:trip) — Trip · `Physicslib4.Spacetime.IsTripSegment` (+2 more) +- [**Definition 371**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-trip) — Causal Trip · `Physicslib4.Spacetime.IsCausalTripSegment` (+2 more) +- [**Theorem 372**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:precedence-transitive) — Transitivity of chronological and causal precedence · `Physicslib4.Spacetime.chronologicallyPrecedes_trans` (+1 more) +- [**Definition 373**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:no-closed-causal-curve) — No Closed Causal Curve (Causality Condition) · `Physicslib4.Spacetime.NoClosedCausalCurve` +- [**Theorem 374**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-order-refinements) — Irreflexivity and Antisymmetry under Causality · `Physicslib4.Spacetime.chronologicallyPrecedes_irrefl` (+2 more) +- [**Definition 375**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:chronological-future-and-chronological-past) — Chronological Future and Chronological Past · `Physicslib4.Spacetime.chronologicalFuture` (+3 more) +- [**Definition 376**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-future-and-causal-past) — Causal Future and Causal Past · `Physicslib4.Spacetime.causalFuture` (+3 more) +- [**Lemma 377**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:chronological-implies-causal) — Chronological Precedence Implies Causal Precedence · `Physicslib4.Spacetime.isCausal_of_isTimelike` (+3 more) +- [**Lemma 378**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:future-past-monotone) — Monotonicity of Futures and Pasts · `Physicslib4.Spacetime.chronologicalFutureSet_mono` (+3 more) + +
+ +
+§10.5.1 Causal diamonds, spacelike complement, and causal closure (p. 260) — 15 items + +- [**Definition 379**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-diamond) — Causal and chronological diamonds · `Physicslib4.Spacetime.causalDiamond` (+3 more) +- [**Lemma 380**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-diamond-structure) — Structural properties of the causal diamond · `Physicslib4.Spacetime.causalDiamond_subset_of` (+2 more) +- [**Theorem 381**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-diamond-vs-chronological) — Chronological diamonds inside causal diamonds · `Physicslib4.Spacetime.chronologicalDiamond_subset_causalDiamond` (+1 more) +- [**Definition 382**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacelike-related) — Spacelike Related · `Physicslib4.Spacetime.IsSpacelikeRelated` +- [**Definition 383**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completely-spacelike) — Completely Spacelike · `Physicslib4.Spacetime.IsCompletelySpacelike` +- [**Lemma 384**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completely-spacelike-symm) — Symmetry of Spacelike Separation · `Physicslib4.Spacetime.isSpacelikeRelated_comm` (+1 more) +- [**Lemma 385**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completely-spacelike-structural) — Structural Properties of Complete Spacelike Separation · `Physicslib4.Spacetime.isCompletelySpacelike_mono` (+9 more) +- [**Definition 386**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:spacelike-complement) — Spacelike Complement of a Region · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement` +- [**Lemma 387**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-order) — Order Structure of the Spacelike Complement · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement_antitone` (+3 more) +- [**Definition 388**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-closure) — Causal closure operator · `Physicslib4.Spacetime.LorentzianSpacetime.causalClosure` +- [**Lemma 389**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-closure-is-closure-operator) — The Causal Closure is a Closure Operator · `Physicslib4.Spacetime.LorentzianSpacetime.causalClosure` (+1 more) +- [**Definition 390**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causally-complete-region) — Causally complete region · `Physicslib4.Spacetime.LorentzianSpacetime.IsCausallyComplete` +- [**Theorem 391**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causally-complete-lattice) — Lattice of causally complete regions · `Physicslib4.Spacetime.LorentzianSpacetime.CausallyCompleteRegion` (+8 more) +- [**Lemma 392**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:spacelike-complement-de-morgan) — De Morgan Laws for the Spacelike Complement · `Physicslib4.Spacetime.LorentzianSpacetime.spacelikeComplement_union` (+1 more) +- [**Theorem 393**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-complement-de-morgan) — De Morgan Laws for the Causal Complement · `Physicslib4.Spacetime.LorentzianSpacetime.causalComplement_antitone` (+6 more) + +
+ +
+§10.5.2 Causal convexity (p. 264) — 3 items + +- [**Definition 394**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causally-convex-region) — Causally convex region · `Physicslib4.Spacetime.IsCausallyConvex` +- [**Lemma 395**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-diamond-causally-convex) — Causal diamonds are causally convex · `Physicslib4.Spacetime.causalDiamond_isCausallyConvex` +- [**Theorem 396**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causally-complete-convex) — Causally complete regions are causally convex · `Physicslib4.Spacetime.spacelikeComplement_isCausallyConvex` (+2 more) + +
+ +
+§10.5.3 Causal convexity: closure structure, and the Alexandrov basis theorems (p. 265) — 24 items + +- [**Lemma 397**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causally-convex-closure-ops) — Causally convex regions form a closure system · `Physicslib4.Spacetime.isCausallyConvex_univ` (+4 more) +- [**Definition 398**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:causal-convex-hull) — Causal-convex hull · `Physicslib4.Spacetime.causalConvexHull` +- [**Lemma 399**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:causal-convex-hull-extensive) — The Causal-Convex Hull is Extensive and Causally Convex · `Physicslib4.Spacetime.subset_causalConvexHull` (+1 more) +- [**Theorem 400**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:causal-convex-hull-closure) — The causal-convex hull is a closure operator · `Physicslib4.Spacetime.causalConvexHull_minimal` (+3 more) +- [**Definition 401**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:alexandrov-topology) — Alexandrov Topology · `Physicslib4.Spacetime.alexandrovTopology` +- [**Lemma 402**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-basis-open) — Basis Sets Are Alexandrov-Open · `Physicslib4.Spacetime.isOpen_alexandrov_of_mem_basis` +- [**Lemma 403**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:chronological-future-past-open) — Openness of Chronological Futures and Pasts · `Physicslib4.Spacetime.isOpen_chronologicalFuture_inter_chronologicalPast` (+2 more) +- [**Lemma 404**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-chronological-open) — Unconditional Openness of Chronological Futures and Pasts on Standard Minkowski · `Physicslib4.exists_chronologicalFuture_standardMinkowski` (+5 more) +- [**Lemma 405**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-directional-derivative-levi-civita) — The Directional Derivative is Levi-Civita on Standard Minkowski · `Physicslib4.Geometry.PseudoRiemannianMetric.isLeviCivitaFor_flatConnection` (+2 more) +- [**Lemma 406**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-levi-civita-flat) — The Minkowski Levi-Civita Connection is Flat · `Physicslib4.standardMinkowski_leviCivita_apply` (+1 more) +- [**Lemma 407**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-lines-are-geodesics) — Straight Lines are Geodesics in Standard Minkowski · `Physicslib4.standardMinkowskiLineSegmentPath_isGeodesic` (+1 more) +- [**Definition 408**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:minkowski-spacetime) — Minkowski Spacetime · `Physicslib4.MinkowskiSpacetime` +- [**Definition 409**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:lorentzian-spacetime) — Lorentzian Spacetime · `Physicslib4.Spacetime.LorentzianSpacetime` +- [**Lemma 410**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:lorentzian-causal-lifts) — Bundled Spacelike Separation and Basis Openness · `Physicslib4.Spacetime.LorentzianSpacetime.isCompletelySpacelike_comm` (+1 more) +- [**Lemma 411**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-nbhd-univ-of-no-diamond) — No-Diamond Points Have Only the Whole Space as Neighbourhood · `Physicslib4.Spacetime.alexandrov_nbhd_univ_of_no_diamond` +- [**Lemma 412**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-covering-hausdorff) — Covering from the Hausdorff Assumption · `Physicslib4.Spacetime.LorentzianSpacetime.sUnion_alexandrovBasis_eq_univ` +- [**Theorem 413**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:alexandrov-topological-basis) — The Alexandrov Diamonds Form a Topological Basis · `Physicslib4.Spacetime.LorentzianSpacetime.isTopologicalBasis_alexandrovBasis` +- [**Lemma 414**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-past-between) — Past Interpolation on Standard Minkowski · `Physicslib4.Spacetime.exists_past_between_standardMinkowski` +- [**Lemma 415**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-future-between) — Future Interpolation on Standard Minkowski · `Physicslib4.Spacetime.exists_future_between_standardMinkowski` +- [**Lemma 416**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-diamonds-downward-directed) — Standard Minkowski Diamonds Are Downward-Directed · `Physicslib4.Spacetime.alexandrovBasis_exists_subset_inter_standardMinkowski` +- [**Lemma 417**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-exists-common-past) — Common Chronological Predecessor on Standard Minkowski · `Physicslib4.Spacetime.exists_common_past` +- [**Lemma 418**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-exists-common-future) — Common Chronological Successor on Standard Minkowski · `Physicslib4.Spacetime.exists_common_future` +- [**Lemma 419**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-diamonds-upward-directed) — Standard Minkowski Diamonds Are Upward-Directed · `Physicslib4.Spacetime.alexandrovBasis_directed` +- [**Theorem 420**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-alexandrov-basis) — The Alexandrov Diamonds are a Basis on Standard Minkowski · `Physicslib4.Spacetime.isTopologicalBasis_alexandrovBasis_standardMinkowski` + +
+ +
+§10.5.4 Dilations are causal automorphisms but not isometries (p. 271) — 3 items + +- [**Lemma 421**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:minkowski-dilation-cone) — Dilations Preserve the Minkowski Cones · `Physicslib4.minkowskiForwardCone_smul` (+1 more) +- [**Theorem 422**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-dilation-causal-automorphism) — Dilations are Causal Automorphisms · `Physicslib4.alexandrovBasis_image_smul` +- [**Theorem 423**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:minkowski-dilation-not-isometry) — Dilations are Not Isometries · `Physicslib4.minkowskiForm_smul` (+1 more) + +
+ +
+§10.5.5 Isometries and basis-set preservation (p. 272) — 11 items + +- [**Lemma 424**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-classification) — Isometries Preserve the Causal Classification · `Physicslib4.Spacetime.Isometry.preserves_self` (+3 more) +- [**Lemma 425**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:path-parameter-unique-diff) — Unique Differentials Along a Path · `Physicslib4.Spacetime.Path.uniqueDiffOn_parameterSpace` +- [**Lemma 426**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pushforward-path) — Pushforward of a Path Under an Isometry · `Physicslib4.Spacetime.Isometry.pushforwardPath` (+5 more) +- [**Lemma 427**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-metric) — Pullback of Vector Fields and the Metric Under an Isometry · `Physicslib4.Spacetime.Isometry.val_mpullback` (+3 more) +- [**Lemma 428**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-metric-derivative) — Derivatives of Metric Pairings of Pulled-Back Fields · `Physicslib4.Spacetime.Isometry.mfderiv_val_mpullback` (+1 more) +- [**Lemma 429**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-pullback-lie-bracket) — Metric Pairings with Lie Brackets of Pulled-Back Fields · `Physicslib4.Spacetime.Isometry.val_mlieBracket_mpullback` (+1 more) +- [**Lemma 430**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-levi-civita) — Isometries Preserve the Levi-Civita Connection · `Physicslib4.Spacetime.Isometry.mfderiv_leviCivita_mpullback` (+1 more) +- [**Lemma 431**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-geodesics) — Isometries Preserve Geodesics · `Physicslib4.Spacetime.Isometry.pushforwardPath_isGeodesic` (+2 more) +- [**Lemma 432**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-chronology) — Isometries Preserve Chronology · `Physicslib4.Spacetime.Isometry.PreservesFutureOrientation` (+8 more) +- [**Lemma 433**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isometry-preserves-basis-sets) — Isometries Preserve Basis Sets · `Physicslib4.Spacetime.Isometry.futureOrientationPreserving` (+8 more) +- [**Lemma 434**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:axiom5-basis-preservation) — Axiom 5 Basis-Set Preservation · `Physicslib4.Spacetime.LorentzianSpacetime.toAbstractIdentityComponent_isBasisSet_smul` + +
+ +
+§10.5.6 Pullback metrics and cross-metric isometries (p. 274) — 32 items + +- [**Definition 435**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pullback-metric) — Pullback of a Spacetime Metric · `Physicslib4.Spacetime.bilinearPrecomp` (+3 more) +- [**Lemma 436**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-diffeo-linear-equiv) — The Differential of a Diffeomorphism is a Linear Equivalence · `Physicslib4.Spacetime.Diffeo` (+4 more) +- [**Lemma 437**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-symm-cancel-left) — Round-Trip Cancellation: $$d\psi$$ After $$d(\psi^{-1})$$ · `Physicslib4.Spacetime.mfderiv_symm_cancel_left` +- [**Lemma 438**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-symm-cancel-right) — Round-Trip Cancellation: $$d(\psi^{-1})$$ After $$d\psi$$ · `Physicslib4.Spacetime.mfderiv_symm_cancel_right` +- [**Lemma 439**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mfderiv-inverse-eq-symm) — The Formal Inverse of $$d\psi_x$$ is the Inverse Equivalence · `Physicslib4.Spacetime.inverse_mfderiv_eq_symm` (+2 more) +- [**Lemma 440**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-symm) — The Pullback Metric is Symmetric · `Physicslib4.Spacetime.pullbackVal_symm` +- [**Lemma 441**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-nondegenerate) — The Pullback Metric is Non-Degenerate · `Physicslib4.Spacetime.pullbackVal_nondegenerate` +- [**Lemma 442**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-lorentzian) — The Pullback Metric is Lorentzian · `Physicslib4.Spacetime.pullbackVal_lorentzian` +- [**Lemma 443**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-metric-smooth-in-charts) — The Pullback Metric is a Smooth Section of the Bilinear-Form Bundle · `Physicslib4.Spacetime.pullbackVal_contMDiff` +- [**Theorem 444**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pullback-is-spacetime) — The Pullback of a Spacetime is a Spacetime · `Physicslib4.Spacetime.pullback` (+4 more) +- [**Definition 445**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:preserves-future-orientation) — Two-Sided Preservation of Future Orientation · `Physicslib4.Spacetime.PreservesFutureOrientation` (+1 more) +- [**Lemma 446**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:mpullback-vectorField-contMDiff-of-diffeo) — The Pullback of a Bundle-Smooth Vector Field Along a Diffeomorphism is Bundle-Smooth · `Physicslib4.Spacetime.contMDiff_mpullback_vectorField` +- [**Lemma 447**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation-ne-zero) — The Pullback Time Orientation is Nowhere Vanishing · `Physicslib4.Spacetime.mpullback_field_ne_zero` +- [**Lemma 448**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation-timelike) — The Pullback Time Orientation is Everywhere Timelike · `Physicslib4.Spacetime.pullbackVal_mpullback_field_self` (+1 more) +- [**Lemma 449**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-time-orientation) — Pullback of a Time Orientation · `Physicslib4.Spacetime.pullbackTimeOrientation` (+1 more) +- [**Lemma 450**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-future-pointing-timelike) — Transport of Future-Pointing Timelike Vectors · `Physicslib4.Spacetime.pullbackVal_mpullback_field_apply` (+1 more) +- [**Lemma 451**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-future-pointing-null) — Transport of Future-Pointing Null Vectors · `Physicslib4.Spacetime.isFuturePointing_pullback_iff_of_isNull` +- [**Lemma 452**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-preserves-future-orientation) — The Pullback Preserves the Future Orientation Two-Sidedly · `Physicslib4.Spacetime.pullback_preservesFutureOrientationTwoSided` +- [**Definition 453**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:cross-metric-isometry) — Isometry Between Two Metrics on One Manifold · `Physicslib4.Spacetime.CrossIsometry` (+4 more) +- [**Lemma 454**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-symm) — The Inverse of a Cross-Metric Isometry is a Cross-Metric Isometry · `Physicslib4.Spacetime.CrossIsometry.symm_preserves` (+1 more) +- [**Lemma 455**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-classification) — Cross-Metric Isometries Preserve the Causal Classification · `Physicslib4.Spacetime.CrossIsometry.preserves_self` (+3 more) +- [**Lemma 456**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-tangent) — The Tangent Chain Rule Along a Path · `Physicslib4.Spacetime.mfderivWithin_comp_diffeo` (+1 more) +- [**Lemma 457**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path) — Pushforward of a Path Under a Cross-Metric Isometry · `Physicslib4.Spacetime.pushforwardPath` (+2 more) +- [**Lemma 458**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-causal) — The Pushforward Preserves the Timelike and Causal Conditions · `Physicslib4.Spacetime.CrossIsometry.pushforwardPath_isTimelike` (+1 more) +- [**Lemma 459**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-pushforward-path-endpoints) — The Pushforward Transports Endpoints · `Physicslib4.Spacetime.pushforwardPath_isPastEndpoint` (+1 more) +- [**Lemma 460**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-chronology) — Cross-Metric Isometries Transport Chronological Precedence · `Physicslib4.Spacetime.pushforwardPath_isFutureOriented` (+2 more) +- [**Lemma 461**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-chronological-future-image) — Image of the Chronological Future · `Physicslib4.Spacetime.CrossIsometry.chronologicalFuture_image` +- [**Lemma 462**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-chronological-past-image) — Image of the Chronological Past · `Physicslib4.Spacetime.CrossIsometry.chronologicalPast_image` +- [**Lemma 463**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cross-metric-isometry-preserves-basis-sets) — Cross-Metric Isometries Preserve Basis Sets · `Physicslib4.Spacetime.CrossIsometry.alexandrovDiamond_image` (+1 more) +- [**Lemma 464**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bijection-generated-topology-homeomorphism) — A Bijection Matching Generating Families is a Homeomorphism · `Physicslib4.continuous_generateFrom_of_preimage_mem` (+4 more) +- [**Lemma 465**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-alexandrov-homeomorphism) — The Pullback Alexandrov Topology · `Physicslib4.Spacetime.pullback_alexandrovBasis_image` (+3 more) +- [**Theorem 466**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pullback-is-lorentzian-spacetime) — The Pullback of a Lorentzian Spacetime is a Lorentzian Spacetime · `Physicslib4.Spacetime.LorentzianSpacetime.pullback_alexandrov_t2` (+3 more) + +
+ + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · **§10.5 Spacetime** · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.4 Stone](sec10-4-stone.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) → diff --git a/home_page/sec10-6-curved.md b/home_page/sec10-6-curved.md deleted file mode 100644 index c84de05..0000000 --- a/home_page/sec10-6-curved.md +++ /dev/null @@ -1,105 +0,0 @@ ---- -title: "§10.6 Haag–Kastler Axioms in curved spacetime (pp. 310–319)" -usemathjax: true ---- - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · **§10.6 Curved** · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.7 Covariance](sec10-7-general-covariance.html) → - -# §10.6 Haag–Kastler Axioms in curved spacetime (pp. 310–319) - -49 items, Definitions 572–620. The axioms are restated for a Lorentzian spacetime: Local Algebras (Definition 572), Isotony (Definition 573, again supplying the family as chosen data with identity and composition laws), Local Commutativity (Definition 574, which now **consumes** the Axiom 2 family rather than choosing its own witnesses), local observables (Definition 575), Local Completeness (Definition 576), and Isometric Covariance (Definition 577, whose coherence condition, as in Minkowski, is stated for the Axiom 2 isotony family), bundled into a `HaagKastlerNet` in curved spacetime (Definition 578). The change to Axioms 2 and 3 has a visible consequence downstream: statements about nested regions have to factor a three-fold inclusion $$\mathbf{B}_1 \subseteq \mathbf{B}_2 \subseteq \mathbf{B}$$ inside a common containing algebra, and that factorisation is now the composition law of Axiom 2, so **the coherence hypotheses that earlier versions carried at each such site are gone**—curved isotony (Theorem 583) and the curved von Neumann net (Definition 585) are unconditional. An explicit hypothesis remains only where the abstract interface genuinely cannot supply it, namely basis-set preservation in Geometric Covariance (Theorem 589), discharged for nets arising from a concrete geometric spacetime; the coherence of the stabiliser action with the isotony embeddings is no longer a hypothesis there, being condition (3) of Axiom 5 transported along $$g \cdot \mathbf{B} = \mathbf{B}$$. - -- *§10.6.1 Einstein Causality in Curved Spacetime (p. 312, item 579).* The operator form of local commutativity, expressed in a representation of a common containing local algebra rather than of a global quasilocal algebra (Theorem 579). -- *§10.6.2 Local von Neumann Algebras in Curved Spacetime (p. 312, items 580–591).* The Minkowski development of §10.5.5 mirrored relative to a containing region: the local von Neumann algebra of a subregion and its bundled registration (Definitions 580–581), Microcausality (Theorem 582), unconditional Isotony (Theorem 583), the bundled form (Theorem 584), the net as an order-preserving map on the poset of subregions (Definition 585), Statistical Independence in set-level and bundled forms (Theorems 586–587), additive-free locality (Theorem 588), and Geometric Covariance via the stabiliser GNS representation (Theorem 589) with orbit-invariance of factoriality (Theorem 590) and the upgrade to a \*-algebra isomorphism (Theorem 591). -- *§10.6.3 Relative Commutants of Nested Local Algebras in Curved Spacetime (p. 315, items 592–600).* The curved counterpart of §10.5.6: the relative commutant of a nested pair inside a containing region (Definition 592), its containment in the larger algebra, commutation with the smaller, and containment of the centre (Theorems 593–595), irreducible inclusions (Definition 596) and their consequences (Theorems 597–598), plus the abelian/centre facts specialised to curved local algebras (Theorems 599–600). -- *§10.6.4 Purity of States on Local Algebras in Curved Spacetime (p. 316, items 601–605).* Each local algebra is a unital C\*-algebra with its own state space, so the abstract purity characterisations are registered per region: Pure $$\iff$$ Extreme Point (Theorem 601), Pure $$\iff$$ Irreducible GNS (Theorem 602), the GNS representation of a pure state generates a factor and indeed all of $$\mathcal{B}(H)$$ (Theorem 603), the Irreducible Dichotomy for a curved local algebra (Theorem 604), and GNS covariance for curved local algebras (Theorem 605). -- *§10.6.5 Covariant States in Curved Spacetime (p. 317, items 606–607).* Covariant families of local states in curved spacetime (Definition 606) and their composition law (Lemma 607). -- *§10.6.6 The Stabilizer GNS Unitary in Curved Spacetime (p. 317, items 608–614).* Since no quasilocal algebra exists on a generic Lorentzian spacetime, the covariance action restricts to the stabiliser subgroup $$\mathrm{Stab}(\mathbf{B})$$ of a region, giving automorphisms of the single local algebra $$\mathfrak{U}(\mathbf{B})$$ (Definition 608) that form a genuine group action (Lemma 609). A stabiliser-invariant state carries a unitary GNS representation of $$\mathrm{Stab}(\mathbf{B})$$ (Theorem 610), strongly continuous when the matrix coefficients are continuous (Theorem 611); a state both stabiliser-invariant and pure yields an irreducible covariant representation (Theorem 612); purity is invariant under the stabiliser action (Theorem 613), and GNS data transports along it (Theorem 614). -- *§10.6.7 KMS States for a Killing Flow (p. 318, items 615–620).* Killing flows are identified as one-parameter subgroups of the stabiliser of a region, inducing a one-parameter automorphism group on $$\mathfrak{U}(\mathbf{B})$$ (Definition 615, Lemma 616). KMS states for a Killing flow (Definition 617) are the precise algebraic sense in which the Hartle–Hawking and Gibbons–Hawking states are thermal. Such a state at positive inverse temperature automatically carries a strongly continuous one-parameter unitary group on its GNS Hilbert space implementing the flow, yielding the curved-spacetime thermal representation—the analogue of the Minkowski vacuum representation (Theorem 618); these states form a convex set (Theorem 619), and the corresponding ground state is recorded alongside them (Definition 620). - -**Where the Lean lives:** `Physicslib4/AQFT/HaagKastlerCurved/` (`LocalVonNeumann`, `StabilizerAction`, `StabilizerKMS`, `Purity`, `GeometricCovariance`, …) - -## Items - -Every entry links to its node in the web blueprint and names the principal Lean declaration. - - -### §10.6 The axioms (p. 310) - -- [**Definition 572**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-algebras-in-curved-spacetime) — Axiom 1: Local Algebras · `Physicslib4.AQFT.HaagKastlerCurved.LocalNet` -- [**Definition 573**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isotony-in-curved-spacetime) — Axiom 2: Isotony · `Physicslib4.AQFT.HaagKastlerCurved.Isotony` -- [**Definition 574**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-commutativity-in-curved-spacetime) — Axiom 3: Local Commutativity · `Physicslib4.AQFT.HaagKastlerCurved.LocalCommutativity` -- [**Definition 575**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-observable) — Local Observable · `Physicslib4.AQFT.HaagKastlerCurved.IsLocalObservable` -- [**Definition 576**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-completeness-in-curved-spacetime) — Axiom 4: Local Completeness · `Physicslib4.AQFT.HaagKastlerCurved.LocalAlgebra` -- [**Definition 577**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isometric-covariance-in-curved-spacetime) — Axiom 5: Isometric Covariance · `Physicslib4.AQFT.HaagKastlerCurved.IsometricCovariance` *(implemented via the explicitly orientation-preserving subgroup — see [Formalisation status](./#formalisation-status))* -- [**Definition 578**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:haag-kastler-net-in-curved-spacetime) — Haag–Kastler Net in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet` - -### §10.6.1 Einstein Causality in Curved Spacetime (p. 312) - -- [**Theorem 579**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:einstein-causality-in-curved-spacetime) — Einstein Causality in a Representation (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.einstein_causality` (+1 more) - -### §10.6.2 Local von Neumann Algebras in Curved Spacetime (p. 312) - -- [**Definition 580**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-in-curved-spacetime) — Local von Neumann Algebra in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localOperators` (+1 more) -- [**Definition 581**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-algebra-in-curved-spacetime) — $$R(\mathbf{B}')$$ as a von Neumann Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra` -- [**Theorem 582**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-microcausality-in-curved-spacetime) — Microcausality at the von Neumann Level (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_subset_centralizer` -- [**Theorem 583**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-isotony-in-curved-spacetime) — Isotony of the von Neumann Net (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_mono` -- [**Theorem 584**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-bundled-order-in-curved-spacetime) — Bundled von Neumann Microcausality and Isotony (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_le_commutant` (+1 more) -- [**Definition 585**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-net-in-curved-spacetime) — The Net of von Neumann Algebras in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.vonNeumannNet` -- [**Theorem 586**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-in-curved-spacetime) — Statistical Independence (Schlieder Property) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_separating` (+1 more) -- [**Theorem 587**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-bundled-in-curved-spacetime) — Statistical Independence, bundled (curved spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_separating` -- [**Theorem 588**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:additive-free-locality-in-curved-spacetime) — Additive-Free Locality via the Spacelike Complement (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement_geometric` -- [**Theorem 589**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-geometric-covariance-in-curved-spacetime) — Geometric Covariance of the von Neumann Net (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.lieConj_image_localVonNeumann` (+2 more) -- [**Theorem 590**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-factor-orbit-in-curved-spacetime) — Orbit-Invariance of Factoriality (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_isFactor_smul` -- [**Theorem 591**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-covariance-iso-in-curved-spacetime) — Geometric Covariance as a von Neumann Algebra Isomorphism (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannEquiv` - -### §10.6.3 Relative Commutants of Nested Local Algebras in Curved Spacetime (p. 315) - -- [**Definition 592**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:relative-commutant-in-curved-spacetime) — Relative Commutant of a Nested Pair (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant` -- [**Theorem 593**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-le-right-in-curved-spacetime) — Relative Commutant Lies in the Larger Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant_le_right` -- [**Theorem 594**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-coe-commutant-in-curved-spacetime) — Relative Commutant Commutes with the Smaller Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant_coe_subset_commutant` -- [**Theorem 595**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-center-in-curved-spacetime) — Relative Commutant Contains the Centre (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.center_le_relativeCommutant` -- [**Definition 596**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-inclusion-in-curved-spacetime) — Irreducible Inclusion (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsIrreducibleInclusion` -- [**Theorem 597**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-inclusion-factor-in-curved-spacetime) — An Irreducible Inclusion has Factor Ambient (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isFactor_of_isIrreducibleInclusion` -- [**Theorem 598**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:self-inclusion-factor-in-curved-spacetime) — Self-Inclusion is Irreducible iff Factor (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isIrreducibleInclusion_self_iff_isFactor` -- [**Theorem 599**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:abelian-local-von-neumann-in-curved-spacetime) — Abelian Local von Neumann Algebras (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_center_isAbelian` (+1 more) -- [**Theorem 600**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:center-duality-local-von-neumann-in-curved-spacetime) — Centre Duality for Local von Neumann Algebras (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_center_eq_commutant` (+1 more) - -### §10.6.4 Purity of States on Local Algebras in Curved Spacetime (p. 316) - -- [**Theorem 601**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme-in-curved-spacetime) — Pure $$\iff$$ Extreme Point on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.pure_iff_extreme` -- [**Theorem 602**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible-in-curved-spacetime) — Pure $$\iff$$ Irreducible GNS on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_pure_iff_irreducible` -- [**Theorem 603**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-factor-generates-in-curved-spacetime) — Pure GNS on a Local Algebra is a Factor Generating $$\mathcal{B}(H)$$ · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_factor_of_isPure` (+1 more) -- [**Theorem 604**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-dichotomy-in-curved-spacetime) — The Irreducible Dichotomy for a Curved Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.areDisjoint_or_unitaryEquiv_of_isIrreducible` -- [**Theorem 605**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-local-in-curved-spacetime) — GNS covariance for curved local algebras · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.unitaryEquiv_gns_covEquiv` (+2 more) - -### §10.6.5 Covariant States in Curved Spacetime (p. 317) - -- [**Definition 606**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-state-family-in-curved-spacetime) — Covariant Family of Local States in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsCovariantFamily` -- [**Lemma 607**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-state-family-compose-in-curved-spacetime) — Composition of Covariance in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsCovariantFamily.comp` - -### §10.6.6 The Stabiliser GNS Unitary in Curved Spacetime (p. 317) - -- [**Definition 608**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:stabilizer-action-in-curved-spacetime) — Stabiliser Action on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.stabAut` -- [**Lemma 609**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:stabilizer-action-laws-in-curved-spacetime) — The Stabiliser Action is a Group Action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.stabAut_one` (+1 more) -- [**Theorem 610**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-unitary-stabilizer-in-curved-spacetime) — GNS Unitary Representation of the Stabiliser · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_unitary_stabilizer` -- [**Theorem 611**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-unitary-stabilizer-strongly-continuous-in-curved-spacetime) — Strongly Continuous Stabiliser GNS Unitary · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_unitary_stabilizer_strongContinuous` -- [**Theorem 612**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-covariant-representation-in-curved-spacetime) — Irreducible Covariant Representation of a Pure Invariant State (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_irreducible_covariant_stabilizer` -- [**Theorem 613**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:purity-covariance-invariant-in-curved-spacetime) — Purity is Invariant under the Stabiliser Action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isPure_precomp_stabAut_iff` -- [**Theorem 614**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-stabilizer-action) — GNS covariance along the stabiliser action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.unitaryEquiv_gns_stabAut` (+2 more) - -### §10.6.7 KMS States for a Killing Flow (p. 318) - -- [**Definition 615**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:flow-aut-in-curved-spacetime) — Killing-Flow Automorphism Family · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.flowAut` -- [**Lemma 616**](blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:one-parameter-aut-flow-in-curved-spacetime) — A Killing Flow Induces a One-Parameter Group · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isOneParameterAut_flowAut` -- [**Definition 617**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state-for-flow-in-curved-spacetime) — KMS State for a Killing Flow · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow` -- [**Theorem 618**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-thermal-representation-in-curved-spacetime) — The Killing-Flow KMS Thermal Representation · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow.exists_gns_unitary_strongContinuous` -- [**Theorem 619**](blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex-for-flow-in-curved-spacetime) — Convexity of the Killing-Flow KMS States · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow.convexCombo` -- [**Definition 620**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:ground-state-for-flow-in-curved-spacetime) — Ground State for a Killing Flow · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsGroundStateForFlow` (+2 more) - - -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · **§10.6 Curved** · [§10.7 Covariance](sec10-7-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) - -← [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.7 Covariance](sec10-7-general-covariance.html) → diff --git a/home_page/sec10-6-haag-kastler.md b/home_page/sec10-6-haag-kastler.md new file mode 100644 index 0000000..3d3dfd3 --- /dev/null +++ b/home_page/sec10-6-haag-kastler.md @@ -0,0 +1,294 @@ +--- +title: "§10.6 Haag–Kastler Axioms in Minkowski spacetime (pp. 286–327)" +usemathjax: true +--- + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · **§10.6 Minkowski** · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.7 Curved](sec10-7-curved.html) → + +# §10.6 Haag–Kastler Axioms in Minkowski spacetime (pp. 286–327) + +The largest section by definition and theorem count (159 items, Definitions 467–625). Each axiom is stated as a definition so that it appears as a node in the declaration graph. + +- *The axioms and the quasilocal colimit (§10.6 and §10.6.1, pp. 286–303, items 467–494).* Axiom 1 (Local Algebras, Definition 467) assigns an abstract C\*-algebra to every Alexandrov-basis set, with $$\emptyset \mapsto \mathbb{C}1$$. Axiom 2 (Isotony, Definition 468) now supplies the family of unital \*-monomorphisms $$i_{\mathbf{B}_1 \mathbf{B}_2}$$ **as chosen data**, subject to injectivity, an identity law, and a composition law—so that $$\mathbf{B} \mapsto \mathfrak{U}(\mathbf{B})$$ is a functor on the inclusion order of basis sets. The blueprint is explicit that the family cannot be an existence statement (the identity and composition conditions are equations between the maps themselves) and that the inclusion hypothesis is non-strict, matching the Lean. §10.6.1 then cashes this in: the diamonds are directed under inclusion (Lemma 469), the isotony family is a directed system in Mathlib's sense (Lemma 470), and the direct limit carries a well-defined norm (Lemmas 471–473) making it a normed \*-algebra (Lemma 474) satisfying the C\*-inequality (Lemma 475) but not, in general, complete. A block of results stated for an arbitrary normed \*-algebra under standing hypotheses (Definition 476) then carries the structure through completion—the involution and its extension (Definition 477, Lemma 478), the completion coercion as a bundled \*-algebra homomorphism (Lemma 479), and the passage of the C\*-inequality, the normed $$\mathbb{C}$$-algebra structure, and finally the C\*-algebra property to the completion (Lemmas 480–482)—yielding that the completion of the quasilocal colimit is a C\*-algebra (Lemma 483). The quasilocal algebra $$\mathfrak{U}$$ is defined as that colimit-then-completion (Definition 484); the blueprint records why the shortcut of realising $$\mathfrak{U}$$ as a closed \*-subalgebra of an ambient C\*-algebra is rejected—it would assume an ambient algebra containing copies of every $$\mathfrak{U}(\mathbf{B})$$, for which the physics supplies no justification. Axiom 3 (Local Commutativity, Definition 485) follows, together with the new Lemma 486: local commutativity transfers from any one quasilocal algebra to every other, so the choice of quasilocal algebra in Axiom 3 is immaterial and the canonical $$\mathfrak{U}$$ of a net can be used throughout. The quasilocal observable (Definition 487) follows. **Axiom 4 is now split in two.** Axiom 4 (Quasilocal Completeness, Definition 488) is presented as a bridge principle—the one axiom joining physical reality to the formalism, asserting the one-way inclusion that every physical observable corresponds to a quasilocal observable, and therefore having no mathematical consumers. The mathematical content previously conflated with it is separated out as a theorem: every local net satisfying Axiom 2 admits a quasilocal algebra, with an injective cocone of canonical embeddings whose images are dense (Theorem 489, with the supporting Lemmas 490–494). The indexing over Alexandrov-basis sets only is essential and not stylistic, since the algebras attached to non-basis subsets are junk fibres about which the axioms say nothing. +- *§10.6.2 The von Neumann Density Theorem (pp. 303–306, items 495–505).* A new subsection of general operator theory for a unital \*-homomorphism $$\pi : \mathfrak{A} \to \mathcal{B}(H)$$, whose only consumer is Theorem 505, the density result that keeps the bridge principle tenable in the presence of larger bicommutants: $$\pi_\omega(\mathfrak{U})$$ is strongly dense in $$\pi_\omega(\mathfrak{U})$$. Mathlib lacks the density theorem, so it is proved here following Murphy, Lemma 4.1.4. A closed subspace invariant under an operator and its adjoint has a commuting orthogonal projection (Lemma 495), so the closed cyclic subspace $$\overline{\pi(\mathfrak{A})\xi}$$ reduces the representation (Lemma 496) and every $$T \in \pi(\mathfrak{A})$$ maps $$\xi$$ into it (Lemma 497). The finite amplification $$\pi^\iota$$ on $$\ell^2(\iota; H)$$ (Definition 498) is a unital \*-homomorphism (Lemma 499); the block entries of an operator in its commutant lie in $$\pi(\mathfrak{A})'$$ (Lemma 500), an operator on $$\ell^2(\iota; H)$$ is recovered from its block entries (Lemma 501), and so $$\mathrm{diag}(T)$$ lies in the amplified bicommutant (Lemma 502). Applying the one-vector case to the amplification approximates $$T$$ on any finite set of vectors (Lemma 503), and a neighbourhood basis for the strong operator topology (Lemma 504) turns this into the density theorem (Theorem 505), now fully proved. The Kaplansky density theorem, which would also keep approximants self-adjoint, remains out of scope; nothing needs it. +- *§10.6.3 Lorentz Covariance and the Haag–Kastler Net (p. 306, items 506–507).* Axiom 5 (Lorentz Covariance, Definition 506), whose coherence condition is now stated for the Axiom 2 isotony family itself, and the bundled `HaagKastlerNet` (Definition 507) close the axiomatic block. +- *§10.6.4 Einstein Causality (p. 307, item 508).* Derives the operator form of local commutativity in any \*-representation of the quasilocal algebra (Theorem 508). +- *§10.6.5 Local von Neumann Algebras (p. 307, items 509–521).* Defines the local von Neumann algebra $$R(\mathbf{B}) = \pi(\mathfrak{U}(\mathbf{B}))''$$ of a region in a representation (Definition 509), registers it as a first-class `VonNeumannAlgebra` via the bicommutant-of-a-self-adjoint-set lemma (Lemma 510, Definition 511), and proves Microcausality (Theorem 512) and Isotony of the von Neumann net (Theorem 513), together with their bundled forms (Theorem 514) and the region-indexed assignment $$\mathbf{B} \mapsto R(\mathbf{B})$$ as an order-preserving map—the net of von Neumann algebras itself (Definition 515). It then proves the Statistical Independence (Schlieder) property in set-level and bundled forms (Theorems 516–517): if the cyclic vector of one region is cyclic for its local observables, it is separating for the local von Neumann algebra of any spacelike-separated region. Additive-free locality (Theorem 518) expresses locality through the spacelike complement without attaching an algebra to the unbounded complement itself. Geometric Covariance (Theorem 519) shows conjugation by the implementing unitary carries $$R(\mathbf{B})$$ onto $$R(L \cdot \mathbf{B})$$; being a factor is therefore constant along the Lorentz orbit of a region (Theorem 520), and the set equality upgrades to a first-class \*-algebra isomorphism of the bundled algebras (Theorem 521). +- *§10.6.6 Relative Commutants of Nested Local Algebras (p. 310, items 522–529).* A new block organising the theory of inclusions $$R(\mathbf{B}_1) \subseteq R(\mathbf{B}_2)$$ around the relative commutant $$R(\mathbf{B}_1)' \cap R(\mathbf{B}_2)$$ (Definition 522). It proves antitonicity of the commutant (Theorem 523), that the relative commutant lies in the larger algebra and commutes with the smaller (Theorems 524–525), and that it always contains the centre of the ambient algebra (Theorem 526). An inclusion is irreducible when its relative commutant is trivial (Definition 527); an irreducible inclusion forces the ambient algebra to be a factor (Theorem 528), and the trivial self-inclusion is irreducible exactly when the algebra is a factor (Theorem 529). +- *§10.6.7 Irreducibility and Schur's Lemma (p. 311, items 530–552).* Introduces irreducible representations via their commutant (Definition 530) and establishes the Topological Schur Lemma for cyclic representations (Theorem 531) together with the operator-theoretic bridge identifying commutant scalars with coefficients proportional to the state (Theorem 532). Defines pure states (Definition 533) and proves "pure implies irreducible" directly (Theorem 534), then the full equivalence Pure $$\iff$$ Irreducible (Theorem 537) via a GNS Radon–Nikodym theorem realising every dominated positive functional as an operator in the commutant (Theorems 535–536). An irreducible representation generates a factor (Theorem 538) and, more sharply, all of $$\mathcal{B}(H)$$ (Theorem 539), with a bundled density form (Theorem 540); consequently the GNS representation of a pure state generates a factor (Theorem 541) and all of $$\mathcal{B}(H)$$ (Theorem 542). The norm of a positive linear functional on a unital C\*-algebra equals its value on the unit (Theorem 543), which supports Pure $$\iff$$ Extreme Point of the state space (Definition 544, Theorem 545), the underlying convexity and the bridge to Mathlib's extreme-points API (Theorem 546), and weak-\* compactness of the state space (Theorem 550), which supplies the existence of pure states via Krein–Milman. The pullback of a state along a unital \*-homomorphism is introduced as its own object (Definition 547) with functoriality (Theorem 548) and the invariance of purity under a \*-isomorphism (Theorem 549). The section closes by specialising to the quasilocal algebra (Theorems 551–552). +- *§10.6.8 Unitary Equivalence and Superselection (p. 315, items 553–554).* Defines unitary equivalence of representations (Definition 553) and shows irreducibility and factoriality are unitary invariants, transported by the cross-space conjugation induced by the implementing unitary (Theorem 554). +- *§10.6.9 GNS Covariance (p. 315, items 555–560).* A new block. Cyclicity pulls back along a surjective \*-homomorphism (Lemma 555), so GNS data transports covariantly along a \*-isomorphism of the algebras (Theorem 556), restated as a unitary equivalence (Theorem 557). Pullback along a surjection preserves the image algebra (Lemma 558), whence superselection type transports along a \*-isomorphism (Theorem 559): the whole sector structure is an invariant of the algebra, not of its presentation. Applied to the covariance equivalence $$\alpha_L : \mathfrak{U}(\mathbf{B}) \simeq \mathfrak{U}(L \cdot \mathbf{B})$$ supplied by Axiom 5, this says the superselection type of a local state is constant along the Lorentz orbit of its region (Theorem 560). +- *§10.6.10 Disjointness and Quasi-Equivalence (p. 317, items 561–578).* Defines disjointness via the vanishing of all intertwiners (Definition 561) and the coarser quasi-equivalence via a \*-isomorphism of generated von Neumann algebras (Definition 562). Proves Schur's Lemma in the form of the Irreducible Dichotomy—two irreducible representations are either disjoint or unitarily equivalent (Theorem 563)—together with Schur multiplicity (Lemma 564) and the triviality of the endomorphism algebra of an irreducible representation (Lemma 565). The commutant is packaged as the self-intertwiner (gauge) von Neumann algebra, trivial exactly when the representation is irreducible (Theorem 566), with double-commutant duality (Theorem 567) and the factor/triviality duality between an algebra and its commutant (Theorem 568). A supporting run develops the centre from scratch: abelian $$\iff$$ self-commuting (Lemma 569), the centre $$Z(R) = R \cap R'$$ (Definition 570) and its being a von Neumann algebra (Lemma 571), the general two-algebra intersection lemma that the relative commutants of §10.6.6 need (Lemma 572), the centre is abelian (Theorem 573), $$R$$ is abelian iff it equals its centre (Lemma 574), a factor is abelian iff it is the scalars (Theorem 575), an algebra and its commutant share a centre (Theorem 576), and factoriality is triviality of the centre (Theorem 577). The Pure-State Dichotomy underlying superselection sectors (Theorem 578) closes the block. +- *§10.6.11 Direct Sums, Amplification, and Reducibility (p. 319, items 579–582).* Defines the direct-sum representation on the $$\ell^2$$-direct sum (Definition 579), shows each summand embeds as a subrepresentation whose projection lies in the commutant of the sum (Theorem 580), defines the $$\iota$$-fold amplification (Definition 581), and proves a direct sum with at least two nonzero summands is reducible, so a multiply-amplified representation is never irreducible (Theorem 582). +- *§10.6.12 Covariant States and the Covariance Action (p. 320, items 583–609).* Defines covariant families of local states (Definition 583) with their composition law (Lemma 584), and the lift of the fibrewise covariance action to a \*-automorphism of the quasilocal algebra (Definition 585), with uniqueness (Lemma 586) and existence for every quasilocal algebra (Theorem 588), no covariance-compatibility hypothesis being needed because every quasilocal algebra is automatically covariance-compatible (Lemma 587, new), and the trivial net as a special case (Theorem 589). The covariant quasilocal algebra of a net is then simply its canonical quasilocal algebra together with the covariance action (Definition 590, realised in Lean as `HaagKastlerNet.action`, so the covariance dynamics are stated directly for the net), which is a genuine group action (Lemma 591). Invariant states are defined (Definition 592) and shown to be implemented by GNS unitaries (Theorem 593); a state that is both invariant and pure yields a GNS representation that is simultaneously covariant and irreducible (Theorem 594). The spectrum condition follows. Positive energy (Definition 595) asks that a one-parameter unitary group be strongly continuous with positive generator; the trivial group has positive energy (Lemma 596), the generator is unique (Lemma 597), positivity and positive energy are unitarily invariant (Lemmas 598–599), a positive-energy group is strongly continuous (Lemma 600), the bounded case $$\exp(itP)$$ is included (Lemma 601), and, by Stone's Theorem, positive energy says exactly that $$V(t) = e^{itA}$$ with $$A$$ positive and self-adjoint (Theorem 602), all collected in Theorem 603. A vacuum state (Definition 604) is an invariant state whose translation groups have positive energy, with the consequences of invariance alone (Theorem 605), the future-timelike translation subgroup (Definition 606), and the vacuum state with that concrete predicate substituted in, leaving no free parameter (Definition 607). Purity is preserved by any \*-automorphism and is therefore covariance-invariant (Theorem 608), and GNS data transports along the quasilocal covariance action (Theorem 609). +- *§10.6.13 The Separating Vector of a Faithful State (p. 325, item 610).* The cyclic vector of a faithful state is also separating for the image of the representation (Theorem 610)—the basic datum of Tomita–Takesaki modular theory. This holds in any representation reproducing a faithful state, not only the canonical GNS one. +- *§10.6.14 The KMS Condition and Thermal Equilibrium (p. 325, items 611–620).* Introduces one-parameter automorphism groups (Definition 611) and KMS states (Definition 612) as the algebraic characterisation of thermal equilibrium. The condition is phrased purely as an analyticity statement about correlation functions, so—unlike the spectrum condition—it needs no unbounded-operator theory. The KMS state set is convex (Theorem 613); a boundary-coincidence argument at $$a = 1$$ (Lemma 614) together with the Strip-Liouville Principle (Definition 615), proved at positive inverse temperature via an $$i\beta$$-periodic entire extension (Theorem 616) and Liouville's theorem (Theorem 617), yields that KMS states are automatically invariant under the time evolution (Theorem 618); uniqueness on the strip from boundary values (Theorem 619) gives uniqueness of the analytic completion of a KMS correlation function (Theorem 620). +- *§10.6.15 KMS States for the Covariance Flow (p. 326, items 621–625).* A one-parameter subgroup of the inhomogeneous Lorentz group induces a one-parameter automorphism group on the quasilocal algebra via the covariance lift (Definition 621, Lemma 622); KMS states for that flow are defined accordingly (Definition 623) and shown convex (Theorem 624). The zero-temperature ($$\beta \to \infty$$) counterpart—a ground state for a covariance flow, whose GNS-implementing unitary group has positive energy—is recorded alongside it (Definition 625). + +**Where the Lean lives:** `Physicslib4/AQFT/HaagKastler/`, `Physicslib4/GNS/` (`Irreducibility`, `Superselection`, `RadonNikodym`, `ExtremeState`, …), `Physicslib4/Operators/` (`ReducingSubspace`, `DensityTheorem`), `Physicslib4/AQFT/KMS.lean`, `Physicslib4/Analysis/StripPeriodicExtension.lean` + +## Items + +Each blueprint subsection below is collapsed; click a heading to see its items. Every entry links to its node in the web blueprint and names the principal Lean declaration. + +
+§10.6 The axioms (p. 286) — 2 items + +- [**Definition 467**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-algebras) — Axiom 1: Local Algebras · `Physicslib4.AQFT.HaagKastler.LocalNet` +- [**Definition 468**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isotony) — Axiom 2: Isotony · `Physicslib4.AQFT.HaagKastler.Isotony` + +
+ +
+§10.6.1 The Quasilocal Colimit (p. 288) — 26 items + +- [**Lemma 469**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:alexandrov-diamonds-isDirected) — Alexandrov Diamonds are Directed under Inclusion · `Physicslib4.AQFT.HaagKastler.Diamond` (+2 more) +- [**Lemma 470**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:isotony-directed-system) — The Isotony Family is a Directed System · `Physicslib4.AQFT.HaagKastler.transitionHom` (+1 more) +- [**Lemma 471**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-norm-well-defined) — The Colimit Norm is Well Defined · `Physicslib4.AQFT.HaagKastler.QuasilocalColimit` (+3 more) +- [**Lemma 472**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-common-representatives) — Common Representatives for Two Colimit Elements · `Physicslib4.AQFT.HaagKastler.exists_common_representatives` +- [**Lemma 473**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-norm-axioms) — The Colimit Norm is a Ring Norm and a Normed-Space Norm · `Physicslib4.AQFT.HaagKastler.instNonemptyDiamond` (+3 more) +- [**Lemma 474**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-union-normed-star-algebra) — The Quasilocal Union is a Normed \*-Algebra · `Physicslib4.AQFT.HaagKastler.norm_eq_colimitNorm` (+1 more) +- [**Lemma 475**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-cstar-identity) — The Colimit Satisfies the C\*-Inequality · `Physicslib4.AQFT.HaagKastler.colimitCStarRing` +- [**Definition 476**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completion-standing-hypotheses) — Standing Hypotheses for the Completion Results · `Physicslib4.CStarCompletion` +- [**Definition 477**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:completion-star) — The Involution on a Completion · `Physicslib4.instStarCompletion` (+1 more) +- [**Lemma 478**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:star-extends-to-completion) — The Involution Extends to the Completion · `Physicslib4.instStarRingCompletion` (+1 more) +- [**Lemma 479**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-coe-star-alg-hom) — The Completion Coercion as a Bundled \*-Algebra Homomorphism · `Physicslib4.coeStarAlgHom` +- [**Lemma 480**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-cstar-identity) — The C\*-Inequality Passes to the Completion · `Physicslib4.instCStarRingCompletion` +- [**Lemma 481**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-normed-algebra) — The Completion is a Normed $$\mathbb{C}$$-Algebra · `Physicslib4.instNormedAlgebraCompletion` +- [**Lemma 482**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:completion-of-cstar-normed-star-algebra) — The Completion of a C\*-Normed \*-Algebra is a C\*-Algebra · `Physicslib4.instCStarAlgebraCompletion` +- [**Lemma 483**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-completion-cstar) — The Completion of the Quasilocal Colimit is a C\*-Algebra · `Physicslib4.AQFT.HaagKastler.QuasilocalCompletion` (+1 more) +- [**Definition 484**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-algebra) — Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.QuasilocalAlgebra` +- [**Definition 485**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-commutativity) — Axiom 3: Local Commutativity · `Physicslib4.AQFT.HaagKastler.LocalCommutativity` +- [**Lemma 486**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:local-commutativity-any-quasilocal) — Local Commutativity Holds in Every Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.LocalCommutativity.commute_ι` (+1 more) +- [**Definition 487**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-observable) — Quasilocal Observable · `Physicslib4.AQFT.HaagKastler.IsQuasilocalObservable` +- [**Definition 488**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-completeness) — Axiom 4: Quasilocal Completeness · `Physicslib4.AQFT.HaagKastler.ObservableCorrespondence` +- [**Theorem 489**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-algebra-exists) — Existence of a Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.exists_quasilocalAlgebra` +- [**Lemma 490**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding) — The Canonical Embeddings into the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.colimitStarOf` (+1 more) +- [**Lemma 491**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding-injective) — The Canonical Embeddings are Injective · `Physicslib4.AQFT.HaagKastler.quasilocalEmbedding_injective` +- [**Lemma 492**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embedding-cocone) — The Canonical Embeddings Form a Cocone · `Physicslib4.AQFT.HaagKastler.quasilocalEmbedding_transitionHom` +- [**Lemma 493**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-colimit-union-of-insertions) — The Colimit is the Union of the Images of its Insertions · `Physicslib4.AQFT.HaagKastler.exists_eq_colimitStarOf` +- [**Lemma 494**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-embeddings-dense) — The Images of the Canonical Embeddings are Dense · `Physicslib4.AQFT.HaagKastler.dense_iUnion_range_quasilocalEmbedding` + +
+ +
+§10.6.2 The von Neumann Density Theorem (p. 303) — 11 items + +- [**Lemma 495**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:reducing-subspace-projection-commutes) — Reducing Subspaces Give Commuting Projections · `Physicslib4.commute_starProjection_of_invariant` +- [**Lemma 496**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cyclic-subspace-reduces) — Cyclic Subspaces Reduce the Representation · `Physicslib4.starProjection_cyclic_mem_centralizer` +- [**Lemma 497**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-single-vector) — The Bicommutant on a Single Vector · `Physicslib4.apply_mem_closure_of_mem_bicommutant` +- [**Definition 498**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:finite-amplification) — Finite Amplification · `Physicslib4.diagAmplification` (+2 more) +- [**Lemma 499**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:finite-amplification-star-hom) — The Finite Amplification is a Unital \*-Homomorphism · `Physicslib4.diagAmplification` +- [**Lemma 500**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:commutant-of-amplification-entries) — Block Entries of the Amplified Commutant · `Physicslib4.blockEntry_mem_centralizer` +- [**Lemma 501**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:amplification-block-expansion) — Block Expansion on the Amplified Space · `Physicslib4.apply_eq_sum_blockEntry` +- [**Lemma 502**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:diagonal-in-amplified-bicommutant) — Diagonal Operators in the Amplified Bicommutant · `Physicslib4.ampDiag_mem_bicommutant` +- [**Lemma 503**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-finite-vectors) — The Bicommutant on Finitely Many Vectors · `Physicslib4.exists_forall_norm_sub_lt_of_mem_bicommutant` +- [**Lemma 504**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:strong-neighbourhood-basis) — A Neighbourhood Basis for the Strong Operator Topology · `Physicslib4.AQFT.HaagKastler.hasBasis_nhds_ofFun` +- [**Theorem 505**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-strongly-dense) — Quasilocal Observables are Strongly Dense in the Bicommutant · `Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` — the von Neumann density theorem, proved locally from Lemmas 448–457 (see [Formalisation status](./#formalisation-status)) + +
+ +
+§10.6.3 Lorentz Covariance and the Haag–Kastler Net (p. 306) — 2 items + +- [**Definition 506**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:lorentz-covariance) — Axiom 5: Lorentz Covariance · `Physicslib4.AQFT.HaagKastler.LorentzCovariance` +- [**Definition 507**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:haag-kastler-net) — Haag–Kastler Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet` + +
+ +
+§10.6.4 Einstein Causality (p. 307) — 1 item + +- [**Theorem 508**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:einstein-causality) — Einstein Causality in a Representation · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.einstein_causality` (+1 more) + +
+ +
+§10.6.5 Local von Neumann Algebras (p. 307) — 13 items + +- [**Definition 509**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann) — Local von Neumann Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localOperators` (+1 more) +- [**Lemma 510**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:bicommutant-of-selfadjoint-is-von-neumann) — The Bicommutant of a Self-Adjoint Set is a von Neumann Algebra · `Physicslib4.GNS.vonNeumannOfSelfAdjoint` +- [**Definition 511**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-algebra) — $$R(\mathbf{B})$$ as a von Neumann Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra` +- [**Theorem 512**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-microcausality) — Microcausality at the von Neumann Level · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_subset_centralizer` +- [**Theorem 513**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-isotony) — Isotony of the von Neumann Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_mono` +- [**Theorem 514**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-bundled-order) — Bundled von Neumann Microcausality and Isotony · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_le_commutant` (+1 more) +- [**Definition 515**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-net) — The Net of von Neumann Algebras · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.vonNeumannNet` +- [**Theorem 516**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence) — Statistical Independence (Schlieder Property) · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_separating` (+1 more) +- [**Theorem 517**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-bundled) — Statistical Independence, bundled · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_separating` +- [**Theorem 518**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:additive-free-locality) — Additive-Free Locality via the Spacelike Complement · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement` +- [**Theorem 519**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-geometric-covariance) — Geometric Covariance of the von Neumann Net · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.lieConj_image_localVonNeumann` (+1 more) +- [**Theorem 520**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-factor-orbit) — Orbit-Invariance of Factoriality · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumann_isFactor_smul` +- [**Theorem 521**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-covariance-iso) — Geometric Covariance as a von Neumann Algebra Isomorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.localVonNeumannEquiv` + +
+ +
+§10.6.6 Relative Commutants of Nested Local Algebras (p. 310) — 8 items + +- [**Definition 522**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:relative-commutant) — Relative Commutant of a Nested Pair · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant` +- [**Theorem 523**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-antitone) — Antitonicity of the Commutant · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.commutant_le_commutant_of_le` +- [**Theorem 524**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-le-right) — Relative Commutant Lies in the Larger Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant_le_right` +- [**Theorem 525**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-coe-commutant) — Relative Commutant Commutes with the Smaller Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.relativeCommutant_coe_subset_commutant` +- [**Theorem 526**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-center) — Relative Commutant Contains the Centre · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.center_le_relativeCommutant` +- [**Definition 527**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-inclusion) — Irreducible Inclusion · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsIrreducibleInclusion` +- [**Theorem 528**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-inclusion-factor) — An Irreducible Inclusion has Factor Ambient · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isFactor_of_isIrreducibleInclusion` +- [**Theorem 529**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:self-inclusion-factor) — Self-Inclusion is Irreducible iff Factor · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isIrreducibleInclusion_self_iff_isFactor` + +
+ +
+§10.6.7 Irreducibility and Schur's Lemma (p. 311) — 23 items + +- [**Definition 530**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-representation) — Irreducible Representation · `Physicslib4.GNS.IsIrreducible` +- [**Theorem 531**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:schur-lemma) — Topological Schur Lemma · `Physicslib4.GNS.eq_smul_one_of_commute_of_cyclic` +- [**Theorem 532**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-scalar-iff) — Commutant Scalar iff Proportional Coefficient · `Physicslib4.GNS.isScalar_iff_coeff_proportional` +- [**Definition 533**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:pure-state) — Pure State · `Physicslib4.GNS.IsPure` +- [**Theorem 534**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-implies-irreducible) — Pure Implies Irreducible · `Physicslib4.GNS.isIrreducible_of_isPure` +- [**Theorem 535**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-form-bound) — The GNS Radon–Nikodym Form is Bounded · `Physicslib4.GNS.gns_form_norm_le` (+1 more) +- [**Theorem 536**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-radon-nikodym-operator) — The GNS Radon–Nikodym Operator · `Physicslib4.GNS.rnOp` (+3 more) +- [**Theorem 537**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible) — Pure $$\iff$$ Irreducible · `Physicslib4.GNS.isPure_iff_isIrreducible` +- [**Theorem 538**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-factor) — An Irreducible Representation Generates a Factor · `Physicslib4.GNS.center_gnsVonNeumann_eq_of_isIrreducible` +- [**Theorem 539**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-generates-all) — Irreducibility $$\iff$$ Generating $$\mathcal{B}(H)$$ · `Physicslib4.GNS.isIrreducible_iff_gnsVonNeumann_eq_univ` (+1 more) +- [**Theorem 540**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-generates-all-bundled) — Bundled Density Form of Irreducibility · `Physicslib4.GNS.coe_gnsVonNeumannAlgebra_eq_univ_of_isIrreducible` (+1 more) +- [**Theorem 541**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-factor) — The GNS Representation of a Pure State is a Factor · `Physicslib4.GNS.exists_gns_factor_of_isPure` +- [**Theorem 542**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-generates-all) — The GNS Representation of a Pure State Generates $$\mathcal{B}(H)$$ · `Physicslib4.GNS.exists_gns_generates_all_of_isPure` +- [**Theorem 543**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:norm-positive-functional) — Norm of a Positive Functional · `Physicslib4.GNS.norm_eq_re_apply_one_of_positive` +- [**Definition 544**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:extreme-state) — Extreme Point of the State Space · `Physicslib4.GNS.State.IsExtremePoint` +- [**Theorem 545**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme) — Pure $$\iff$$ Extreme Point · `Physicslib4.GNS.isPure_iff_isExtremePoint` +- [**Theorem 546**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-space-convex-bridge) — State-Space Convexity and the Extreme-Point Bridge · `Physicslib4.GNS.convex_stateSpace` (+1 more) +- [**Definition 547**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:state-pullback) — Pullback of a State · `Physicslib4.GNS.State.comp` +- [**Theorem 548**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-pullback-functorial) — Functoriality of the State Pullback · `Physicslib4.GNS.State.comp_id` (+1 more) +- [**Theorem 549**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-pullback-invariant) — Purity is Invariant under a \*-Isomorphism · `Physicslib4.GNS.isPure_comp_iff` +- [**Theorem 550**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:state-space-weak-compact) — Weak-\* Compactness of the State Space · `Physicslib4.GNS.isCompact_weakStateSet` +- [**Theorem 551**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme-quasilocal) — Pure $$\iff$$ Extreme Point on the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.pure_iff_extreme` +- [**Theorem 552**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible-quasilocal) — Pure $$\iff$$ Irreducible GNS on the Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.exists_gns_pure_iff_irreducible` + +
+ +
+§10.6.8 Unitary Equivalence and Superselection (p. 315) — 2 items + +- [**Definition 553**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:unitary-equivalence) — Unitary Equivalence of Representations · `Physicslib4.GNS.UnitaryEquiv` +- [**Theorem 554**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:unitary-equiv-invariants) — Irreducibility and Factoriality are Unitary Invariants · `Physicslib4.GNS.UnitaryEquiv.isIrreducible_iff` (+1 more) + +
+ +
+§10.6.9 GNS Covariance (p. 315) — 6 items + +- [**Lemma 555**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:cyclic-pullback-surjective) — Cyclicity pulls back along a surjective \*-homomorphism · `Physicslib4.GNS.isCyclicVector_comp_of_surjective` +- [**Theorem 556**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance) — GNS covariance under a \*-isomorphism · `Physicslib4.GNS.exists_unitary_of_gns_comp` +- [**Theorem 557**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-unitary-equiv) — The GNS representation of a pullback state · `Physicslib4.GNS.unitaryEquiv_comp_of_gns` +- [**Lemma 558**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:pullback-image-invariants) — Pullback along a surjection preserves the image algebra · `Physicslib4.GNS.range_comp_of_surjective` (+2 more) +- [**Theorem 559**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-sector-transport) — Superselection type transports along a \*-isomorphism · `Physicslib4.GNS.isIrreducible_iff_of_gns_comp` (+1 more) +- [**Theorem 560**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-local) — GNS covariance for local algebras · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.unitaryEquiv_gns_covEquiv` (+2 more) + +
+ +
+§10.6.10 Disjointness and Quasi-Equivalence (p. 317) — 18 items + +- [**Definition 561**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:disjoint-representations) — Disjoint Representations · `Physicslib4.GNS.AreDisjoint` +- [**Definition 562**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasi-equivalence) — Quasi-Equivalence of Representations · `Physicslib4.GNS.QuasiEquiv` +- [**Theorem 563**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-dichotomy) — Schur's Lemma and the Irreducible Dichotomy · `Physicslib4.GNS.UnitaryEquiv.of_intertwines_of_isIrreducible` (+1 more) +- [**Lemma 564**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:schur-multiplicity) — Schur Multiplicity · `Physicslib4.GNS.eq_smul_of_intertwines_of_isIrreducible` +- [**Lemma 565**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:endomorphism-scalar) — Endomorphism Algebra of an Irreducible Representation · `Physicslib4.GNS.intertwines_self_iff_isScalar` +- [**Theorem 566**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-von-neumann) — The commutant (self-intertwiner) von Neumann algebra · `Physicslib4.GNS.commutantVonNeumann` (+2 more) +- [**Theorem 567**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:double-commutant-duality) — Double-Commutant Duality · `Physicslib4.GNS.commutant_gnsVonNeumannAlgebra` (+1 more) +- [**Theorem 568**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:commutant-factor-duality) — A Factor and its Commutant; Triviality Duality · `Physicslib4.GNS.isFactor_gnsVonNeumann_iff_isFactor_commutant` (+1 more) +- [**Lemma 569**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-abelian-self-commuting) — Abelian $$\iff$$ Self-Commuting · `Physicslib4.GNS.isAbelian_iff_le_commutant` +- [**Definition 570**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-center) — Centre of a von Neumann algebra · `Physicslib4.GNS.vonNeumannCenter` +- [**Lemma 571**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-inter-is-von-neumann) — The centre is a von Neumann algebra · `Physicslib4.GNS.bicommutant_inter_commutant_eq` +- [**Lemma 572**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-inter-general) — The intersection of two von Neumann algebras is a von Neumann algebra · `Physicslib4.GNS.bicommutant_inter_eq` +- [**Theorem 573**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-center-abelian) — The centre of a von Neumann algebra is abelian · `Physicslib4.GNS.vonNeumannCenter_isAbelian` +- [**Lemma 574**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:von-neumann-center-eq-self-iff-abelian) — $$R$$ is abelian iff it equals its centre · `Physicslib4.GNS.vonNeumannCenter_eq_self_iff_isAbelian` +- [**Theorem 575**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:factor-abelian-iff-scalars) — A factor is abelian iff it is the scalars · `Physicslib4.GNS.isAbelian_iff_eq_scalars_of_isFactor` +- [**Theorem 576**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:center-eq-commutant-center) — A von Neumann algebra and its commutant share a centre · `Physicslib4.GNS.vonNeumannCenter_eq_commutant` +- [**Theorem 577**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:factor-iff-center-scalars) — A von Neumann algebra is a factor iff its centre is the scalars · `Physicslib4.GNS.isFactor_iff_center_eq_scalars` +- [**Theorem 578**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-state-dichotomy) — The Pure-State Dichotomy · `Physicslib4.GNS.exists_gns_areDisjoint_or_unitaryEquiv_of_isPure` + +
+ +
+§10.6.11 Direct Sums, Amplification, and Reducibility (p. 319) — 4 items + +- [**Definition 579**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:direct-sum-representation) — Direct-Sum Representation · `Physicslib4.GNS.directSum` +- [**Theorem 580**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:direct-sum-subrepresentation) — Subrepresentations and Commutant of a Direct Sum · `Physicslib4.GNS.intertwines_single` (+1 more) +- [**Definition 581**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:amplification) — Amplification · `Physicslib4.GNS.amplification` +- [**Theorem 582**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:direct-sum-reducible) — Reducibility of a Direct Sum · `Physicslib4.GNS.not_isIrreducible_directSum` + +
+ +
+§10.6.12 Covariant States and the Covariance Action (p. 320) — 27 items + +- [**Definition 583**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-state-family) — Covariant Family of Local States · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsCovariantFamily` +- [**Lemma 584**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-state-family-compose) — Composition of Covariance · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsCovariantFamily.comp` +- [**Definition 585**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:quasilocal-lift) — Quasilocal Covariance Automorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.QuasilocalLift` +- [**Lemma 586**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-lift-unique) — Uniqueness of the Quasilocal Lift · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.QuasilocalLift.unique` +- [**Lemma 587**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-covariance-compatible) — Every Quasilocal Algebra is Covariance-Compatible · `Physicslib4.AQFT.HaagKastler.isCovariantQuasilocal` +- [**Theorem 588**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-lift-exists) — Existence of the Quasilocal Lift · `Physicslib4.AQFT.HaagKastler.nonempty_quasilocalLift` +- [**Theorem 589**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:quasilocal-lift-trivial) — Existence for the Trivial Net · `Physicslib4.AQFT.HaagKastler.nonempty_trivialQuasilocalLift` +- [**Definition 590**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-quasilocal-algebra) — Covariant Quasilocal Algebra · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.action` +- [**Lemma 591**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:quasilocal-action-coherence) — Group-Action Coherence of the Covariance Automorphism · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.action_one` (+1 more) +- [**Definition 592**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:invariant-state) — Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState` +- [**Theorem 593**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:invariant-state-gns-unitary) — GNS Unitary Implementation of an Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState.exists_gns_unitary` +- [**Theorem 594**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-covariant-representation) — Irreducible Covariant Representation of a Pure Invariant State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsInvariantState.exists_gns_irreducible_covariant` +- [**Definition 595**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:positive-energy) — Positive Energy · `Physicslib4.AQFT.IsPositiveEnergy` +- [**Lemma 596**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-energy-const) — The Trivial Group has Positive Energy · `Physicslib4.AQFT.isPositiveEnergy_const_refl` +- [**Lemma 597**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:exp-generator-unique) — Uniqueness of the Generator · `Physicslib4.AQFT.generator_eq_of_eq_expUnitary` (+1 more) +- [**Lemma 598**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-conj) — Unitary Conjugation Preserves Positivity · `Physicslib4.Spectral.Unbounded.IsPositive.of_conj` +- [**Lemma 599**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-energy-conj) — Positive Energy is Unitarily Invariant · `Physicslib4.AQFT.IsPositiveEnergy.conj` +- [**Lemma 600**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-energy-strong-continuous) — A Positive-Energy Group is Strongly Continuous · `Physicslib4.AQFT.IsPositiveEnergy.strongContinuous` +- [**Lemma 601**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:positive-energy-exp-bounded) — The Bounded Case · `Physicslib4.AQFT.isPositiveEnergy_exp` +- [**Theorem 602**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:positive-energy-iff-exp) — Positive Energy in Exponential Form · `Physicslib4.AQFT.isPositiveEnergy_iff_exists_exp` +- [**Theorem 603**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:positive-energy-api) — Properties of Positive Energy · `Physicslib4.AQFT.isPositiveEnergy_const_refl` (+5 more) +- [**Definition 604**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:vacuum-state) — Vacuum State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState` +- [**Theorem 605**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:vacuum-invariance-consequences) — Consequences of Invariance for a Vacuum State · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumState.invariant` (+1 more) +- [**Definition 606**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:future-timelike-translation) — Future-Timelike Translation Subgroup · `Physicslib4.AQFT.HaagKastler.translationSub` (+3 more) +- [**Definition 607**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:vacuum-state-concrete) — Vacuum State with the Concrete Spectrum Condition · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsVacuumStateConcrete` +- [**Theorem 608**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:purity-covariance-invariant) — Purity is Covariance-Invariant · `Physicslib4.GNS.isPure_precomp_iff` (+1 more) +- [**Theorem 609**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-quasilocal-action) — GNS covariance along the quasilocal action · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.unitaryEquiv_gns_action` (+2 more) + +
+ +
+§10.6.13 The Separating Vector of a Faithful State (p. 325) — 1 item + +- [**Theorem 610**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:separating-faithful) — Separating Vector of a Faithful State · `Physicslib4.GNS.separating_of_faithful` (+1 more) + +
+ +
+§10.6.14 The KMS Condition and Thermal Equilibrium (p. 325) — 10 items + +- [**Definition 611**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:one-parameter-aut) — One-Parameter Automorphism Group · `Physicslib4.AQFT.IsOneParameterAut` +- [**Definition 612**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state) — KMS State · `Physicslib4.AQFT.IsKMSState` +- [**Theorem 613**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex) — The KMS State Set is Convex · `Physicslib4.AQFT.IsKMSState.convexCombo` +- [**Lemma 614**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:kms-correlation-one) — Boundary Coincidence for $$a = 1$$ · `Physicslib4.AQFT.IsKMSState.correlationOne` +- [**Definition 615**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:strip-liouville) — Strip-Liouville Principle · `Physicslib4.AQFT.StripLiouville` +- [**Theorem 616**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-periodic-extension) — $$i\beta$$-Periodic Entire Extension (Strip Schwarz Reflection) · `Physicslib4.exists_bounded_entire_extension_of_strip_periodic` +- [**Theorem 617**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-liouville-pos) — Strip-Liouville Holds for $$\beta > 0$$ · `Physicslib4.AQFT.stripLiouville_of_pos` +- [**Theorem 618**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-invariance) — KMS States are Invariant · `Physicslib4.AQFT.IsKMSState.invariant_of_pos` +- [**Theorem 619**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:strip-uniqueness) — Uniqueness on the Strip from Boundary Values · `Physicslib4.eqOn_strip_of_eq_boundary` +- [**Theorem 620**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-correlation-unique) — Uniqueness of the KMS Correlation Function · `Physicslib4.AQFT.IsKMSState.correlation_eqOn` + +
+ +
+§10.6.15 KMS States for the Covariance Flow (p. 326) — 5 items + +- [**Definition 621**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:flow-aut-covariance) — Covariance-Flow Automorphism Family · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.flowAut` +- [**Lemma 622**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:one-parameter-aut-flow-covariance) — A Lorentz One-Parameter Subgroup Induces a One-Parameter Group · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isOneParameterAut_flowAut` +- [**Definition 623**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state-for-flow-covariance) — KMS State for the Covariance Flow · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsKMSStateForFlow` +- [**Theorem 624**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex-for-flow-covariance) — Convexity of the Covariance-Flow KMS States · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsKMSStateForFlow.convexCombo` +- [**Definition 625**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:ground-state-for-flow-covariance) — Ground State for a Covariance Flow · `Physicslib4.AQFT.HaagKastler.HaagKastlerNet.IsGroundStateForFlow` (+2 more) + +
+ + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · **§10.6 Minkowski** · [§10.7 Curved](sec10-7-curved.html) · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.7 Curved](sec10-7-curved.html) → diff --git a/home_page/sec10-7-curved.md b/home_page/sec10-7-curved.md new file mode 100644 index 0000000..bdbe8ac --- /dev/null +++ b/home_page/sec10-7-curved.md @@ -0,0 +1,105 @@ +--- +title: "§10.7 Haag–Kastler Axioms in curved spacetime (pp. 327–337)" +usemathjax: true +--- + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · **§10.7 Curved** · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.8 Covariance](sec10-8-general-covariance.html) → + +# §10.7 Haag–Kastler Axioms in curved spacetime (pp. 327–337) + +49 items, Definitions 626–674. The axioms are restated for a Lorentzian spacetime: Local Algebras (Definition 626), Isotony (Definition 627, again supplying the family as chosen data with identity and composition laws), Local Commutativity (Definition 628, which now **consumes** the Axiom 2 family rather than choosing its own witnesses), local observables (Definition 629), Local Completeness (Definition 630), and Isometric Covariance (Definition 631, whose coherence condition, as in Minkowski, is stated for the Axiom 2 isotony family), bundled into a `HaagKastlerNet` in curved spacetime (Definition 632). The change to Axioms 2 and 3 has a visible consequence downstream: statements about nested regions have to factor a three-fold inclusion $$\mathbf{B}_1 \subseteq \mathbf{B}_2 \subseteq \mathbf{B}$$ inside a common containing algebra, and that factorisation is now the composition law of Axiom 2, so **the coherence hypotheses that earlier versions carried at each such site are gone**—curved isotony (Theorem 637) and the curved von Neumann net (Definition 639) are unconditional. An explicit hypothesis remains only where the abstract interface genuinely cannot supply it, namely basis-set preservation in Geometric Covariance (Theorem 643), discharged for nets arising from a concrete geometric spacetime; the coherence of the stabiliser action with the isotony embeddings is no longer a hypothesis there, being condition (3) of Axiom 5 transported along $$g \cdot \mathbf{B} = \mathbf{B}$$. + +- *§10.7.1 Einstein Causality in Curved Spacetime (p. 329, item 633).* The operator form of local commutativity, expressed in a representation of a common containing local algebra rather than of a global quasilocal algebra (Theorem 633). +- *§10.7.2 Local von Neumann Algebras in Curved Spacetime (p. 329, items 634–645).* The Minkowski development of §10.6.5 mirrored relative to a containing region: the local von Neumann algebra of a subregion and its bundled registration (Definitions 634–635), Microcausality (Theorem 636), unconditional Isotony (Theorem 637), the bundled form (Theorem 638), the net as an order-preserving map on the poset of subregions (Definition 639), Statistical Independence in set-level and bundled forms (Theorems 640–641), additive-free locality (Theorem 642), and Geometric Covariance via the stabiliser GNS representation (Theorem 643) with orbit-invariance of factoriality (Theorem 644) and the upgrade to a \*-algebra isomorphism (Theorem 645). +- *§10.7.3 Relative Commutants of Nested Local Algebras in Curved Spacetime (p. 332, items 646–654).* The curved counterpart of §10.6.6: the relative commutant of a nested pair inside a containing region (Definition 646), its containment in the larger algebra, commutation with the smaller, and containment of the centre (Theorems 647–649), irreducible inclusions (Definition 650) and their consequences (Theorems 651–652), plus the abelian/centre facts specialised to curved local algebras (Theorems 653–654). +- *§10.7.4 Purity of States on Local Algebras in Curved Spacetime (p. 333, items 655–659).* Each local algebra is a unital C\*-algebra with its own state space, so the abstract purity characterisations are registered per region: Pure $$\iff$$ Extreme Point (Theorem 655), Pure $$\iff$$ Irreducible GNS (Theorem 656), the GNS representation of a pure state generates a factor and indeed all of $$\mathcal{B}(H)$$ (Theorem 657), the Irreducible Dichotomy for a curved local algebra (Theorem 658), and GNS covariance for curved local algebras (Theorem 659). +- *§10.7.5 Covariant States in Curved Spacetime (p. 334, items 660–661).* Covariant families of local states in curved spacetime (Definition 660) and their composition law (Lemma 661). +- *§10.7.6 The Stabilizer GNS Unitary in Curved Spacetime (p. 334, items 662–668).* Since no quasilocal algebra exists on a generic Lorentzian spacetime, the covariance action restricts to the stabiliser subgroup $$\mathrm{Stab}(\mathbf{B})$$ of a region, giving automorphisms of the single local algebra $$\mathfrak{U}(\mathbf{B})$$ (Definition 662) that form a genuine group action (Lemma 663). A stabiliser-invariant state carries a unitary GNS representation of $$\mathrm{Stab}(\mathbf{B})$$ (Theorem 664), strongly continuous when the matrix coefficients are continuous (Theorem 665); a state both stabiliser-invariant and pure yields an irreducible covariant representation (Theorem 666); purity is invariant under the stabiliser action (Theorem 667), and GNS data transports along it (Theorem 668). +- *§10.7.7 KMS States for a Killing Flow (p. 336, items 669–674).* Killing flows are identified as one-parameter subgroups of the stabiliser of a region, inducing a one-parameter automorphism group on $$\mathfrak{U}(\mathbf{B})$$ (Definition 669, Lemma 670). KMS states for a Killing flow (Definition 671) are the precise algebraic sense in which the Hartle–Hawking and Gibbons–Hawking states are thermal. Such a state at positive inverse temperature automatically carries a strongly continuous one-parameter unitary group on its GNS Hilbert space implementing the flow, yielding the curved-spacetime thermal representation—the analogue of the Minkowski vacuum representation (Theorem 672); these states form a convex set (Theorem 673), and the corresponding ground state is recorded alongside them (Definition 674). + +**Where the Lean lives:** `Physicslib4/AQFT/HaagKastlerCurved/` (`LocalVonNeumann`, `StabilizerAction`, `StabilizerKMS`, `Purity`, `GeometricCovariance`, …) + +## Items + +Every entry links to its node in the web blueprint and names the principal Lean declaration. + + +### §10.7 The axioms (p. 327) + +- [**Definition 626**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-algebras-in-curved-spacetime) — Axiom 1: Local Algebras · `Physicslib4.AQFT.HaagKastlerCurved.LocalNet` +- [**Definition 627**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isotony-in-curved-spacetime) — Axiom 2: Isotony · `Physicslib4.AQFT.HaagKastlerCurved.Isotony` +- [**Definition 628**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-commutativity-in-curved-spacetime) — Axiom 3: Local Commutativity · `Physicslib4.AQFT.HaagKastlerCurved.LocalCommutativity` +- [**Definition 629**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-observable) — Local Observable · `Physicslib4.AQFT.HaagKastlerCurved.IsLocalObservable` +- [**Definition 630**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-completeness-in-curved-spacetime) — Axiom 4: Local Completeness · `Physicslib4.AQFT.HaagKastlerCurved.LocalAlgebra` +- [**Definition 631**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:isometric-covariance-in-curved-spacetime) — Axiom 5: Isometric Covariance · `Physicslib4.AQFT.HaagKastlerCurved.IsometricCovariance` *(implemented via the explicitly orientation-preserving subgroup — see [Formalisation status](./#formalisation-status))* +- [**Definition 632**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:haag-kastler-net-in-curved-spacetime) — Haag–Kastler Net in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet` + +### §10.7.1 Einstein Causality in Curved Spacetime (p. 329) + +- [**Theorem 633**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:einstein-causality-in-curved-spacetime) — Einstein Causality in a Representation (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.einstein_causality` (+1 more) + +### §10.7.2 Local von Neumann Algebras in Curved Spacetime (p. 329) + +- [**Definition 634**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-in-curved-spacetime) — Local von Neumann Algebra in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localOperators` (+1 more) +- [**Definition 635**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:local-von-neumann-algebra-in-curved-spacetime) — $$R(\mathbf{B}')$$ as a von Neumann Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra` +- [**Theorem 636**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-microcausality-in-curved-spacetime) — Microcausality at the von Neumann Level (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_subset_centralizer` +- [**Theorem 637**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-isotony-in-curved-spacetime) — Isotony of the von Neumann Net (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_mono` +- [**Theorem 638**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-bundled-order-in-curved-spacetime) — Bundled von Neumann Microcausality and Isotony (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_le_commutant` (+1 more) +- [**Definition 639**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:von-neumann-net-in-curved-spacetime) — The Net of von Neumann Algebras in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.vonNeumannNet` +- [**Theorem 640**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-in-curved-spacetime) — Statistical Independence (Schlieder Property) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_separating` (+1 more) +- [**Theorem 641**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:statistical-independence-bundled-in-curved-spacetime) — Statistical Independence, bundled (curved spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_separating` +- [**Theorem 642**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:additive-free-locality-in-curved-spacetime) — Additive-Free Locality via the Spacelike Complement (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement_geometric` +- [**Theorem 643**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-geometric-covariance-in-curved-spacetime) — Geometric Covariance of the von Neumann Net (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.lieConj_image_localVonNeumann` (+2 more) +- [**Theorem 644**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-factor-orbit-in-curved-spacetime) — Orbit-Invariance of Factoriality (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumann_isFactor_smul` +- [**Theorem 645**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:von-neumann-covariance-iso-in-curved-spacetime) — Geometric Covariance as a von Neumann Algebra Isomorphism (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannEquiv` + +### §10.7.3 Relative Commutants of Nested Local Algebras in Curved Spacetime (p. 332) + +- [**Definition 646**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:relative-commutant-in-curved-spacetime) — Relative Commutant of a Nested Pair (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant` +- [**Theorem 647**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-le-right-in-curved-spacetime) — Relative Commutant Lies in the Larger Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant_le_right` +- [**Theorem 648**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-coe-commutant-in-curved-spacetime) — Relative Commutant Commutes with the Smaller Algebra (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.relativeCommutant_coe_subset_commutant` +- [**Theorem 649**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:relative-commutant-center-in-curved-spacetime) — Relative Commutant Contains the Centre (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.center_le_relativeCommutant` +- [**Definition 650**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:irreducible-inclusion-in-curved-spacetime) — Irreducible Inclusion (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsIrreducibleInclusion` +- [**Theorem 651**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-inclusion-factor-in-curved-spacetime) — An Irreducible Inclusion has Factor Ambient (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isFactor_of_isIrreducibleInclusion` +- [**Theorem 652**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:self-inclusion-factor-in-curved-spacetime) — Self-Inclusion is Irreducible iff Factor (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isIrreducibleInclusion_self_iff_isFactor` +- [**Theorem 653**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:abelian-local-von-neumann-in-curved-spacetime) — Abelian Local von Neumann Algebras (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_center_isAbelian` (+1 more) +- [**Theorem 654**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:center-duality-local-von-neumann-in-curved-spacetime) — Centre Duality for Local von Neumann Algebras (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.localVonNeumannAlgebra_center_eq_commutant` (+1 more) + +### §10.7.4 Purity of States on Local Algebras in Curved Spacetime (p. 333) + +- [**Theorem 655**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-extreme-in-curved-spacetime) — Pure $$\iff$$ Extreme Point on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.pure_iff_extreme` +- [**Theorem 656**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-iff-irreducible-in-curved-spacetime) — Pure $$\iff$$ Irreducible GNS on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_pure_iff_irreducible` +- [**Theorem 657**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:pure-factor-generates-in-curved-spacetime) — Pure GNS on a Local Algebra is a Factor Generating $$\mathcal{B}(H)$$ · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_factor_of_isPure` (+1 more) +- [**Theorem 658**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-dichotomy-in-curved-spacetime) — The Irreducible Dichotomy for a Curved Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.areDisjoint_or_unitaryEquiv_of_isIrreducible` +- [**Theorem 659**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-local-in-curved-spacetime) — GNS covariance for curved local algebras · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.unitaryEquiv_gns_covEquiv` (+2 more) + +### §10.7.5 Covariant States in Curved Spacetime (p. 334) + +- [**Definition 660**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:covariant-state-family-in-curved-spacetime) — Covariant Family of Local States in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsCovariantFamily` +- [**Lemma 661**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:covariant-state-family-compose-in-curved-spacetime) — Composition of Covariance in Curved Spacetime · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsCovariantFamily.comp` + +### §10.7.6 The Stabiliser GNS Unitary in Curved Spacetime (p. 334) + +- [**Definition 662**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:stabilizer-action-in-curved-spacetime) — Stabiliser Action on a Local Algebra · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.stabAut` +- [**Lemma 663**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:stabilizer-action-laws-in-curved-spacetime) — The Stabiliser Action is a Group Action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.stabAut_one` (+1 more) +- [**Theorem 664**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-unitary-stabilizer-in-curved-spacetime) — GNS Unitary Representation of the Stabiliser · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_unitary_stabilizer` +- [**Theorem 665**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-unitary-stabilizer-strongly-continuous-in-curved-spacetime) — Strongly Continuous Stabiliser GNS Unitary · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_unitary_stabilizer_strongContinuous` +- [**Theorem 666**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:irreducible-covariant-representation-in-curved-spacetime) — Irreducible Covariant Representation of a Pure Invariant State (Curved Spacetime) · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.exists_gns_irreducible_covariant_stabilizer` +- [**Theorem 667**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:purity-covariance-invariant-in-curved-spacetime) — Purity is Invariant under the Stabiliser Action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isPure_precomp_stabAut_iff` +- [**Theorem 668**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:gns-covariance-stabilizer-action) — GNS covariance along the stabiliser action · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.unitaryEquiv_gns_stabAut` (+2 more) + +### §10.7.7 KMS States for a Killing Flow (p. 336) + +- [**Definition 669**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:flow-aut-in-curved-spacetime) — Killing-Flow Automorphism Family · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.flowAut` +- [**Lemma 670**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#lmm:one-parameter-aut-flow-in-curved-spacetime) — A Killing Flow Induces a One-Parameter Group · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.isOneParameterAut_flowAut` +- [**Definition 671**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:kms-state-for-flow-in-curved-spacetime) — KMS State for a Killing Flow · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow` +- [**Theorem 672**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-thermal-representation-in-curved-spacetime) — The Killing-Flow KMS Thermal Representation · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow.exists_gns_unitary_strongContinuous` +- [**Theorem 673**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#thrm:kms-convex-for-flow-in-curved-spacetime) — Convexity of the Killing-Flow KMS States · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsKMSStateForFlow.convexCombo` +- [**Definition 674**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:ground-state-for-flow-in-curved-spacetime) — Ground State for a Killing Flow · `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.IsGroundStateForFlow` (+2 more) + + +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · **§10.7 Curved** · [§10.8 Covariance](sec10-8-general-covariance.html) · [Axioms](axioms.html) · [Guide](guide.html) + +← [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.8 Covariance](sec10-8-general-covariance.html) → diff --git a/home_page/sec10-7-general-covariance.md b/home_page/sec10-8-general-covariance.md similarity index 61% rename from home_page/sec10-7-general-covariance.md rename to home_page/sec10-8-general-covariance.md index 893f7fc..f0c19a4 100644 --- a/home_page/sec10-7-general-covariance.md +++ b/home_page/sec10-8-general-covariance.md @@ -1,15 +1,15 @@ --- -title: "§10.7 General Covariance: Nets on Pullback-Related Metrics (pp. 319–321)" +title: "§10.8 General Covariance: Nets on Pullback-Related Metrics (pp. 337–339)" usemathjax: true --- -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · **§10.7 Covariance** · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · **§10.8 Covariance** · [Axioms](axioms.html) · [Guide](guide.html) -← [§10.6 Curved](sec10-6-curved.html) +← [§10.7 Curved](sec10-7-curved.html) -# §10.7 General Covariance: Nets on Pullback-Related Metrics (pp. 319–321) +# §10.8 General Covariance: Nets on Pullback-Related Metrics (pp. 337–339) -Two definitions, and the newest structural addition to the blueprint. The gauge group of general relativity is the full diffeomorphism group of $$M$$, so the physical content of a spacetime is its diffeomorphism-equivalence class and not the pair $$(M, g)$$; the hole argument shows that treating a relabelling as physical would destroy determinism, and Leibniz equivalence resolves it by declaring diffeomorphic models to represent the same physical situation. Accordingly, an equivalence of Haag–Kastler nets is defined (Definition 621) as a chosen family of unital \*-isomorphisms $$\Theta_\mathbf{B} : \mathfrak{U}_1(\mathbf{B}) \to \mathfrak{U}_2(e(\mathbf{B}))$$ along a basis-set-preserving bijection $$e$$ of carriers, natural with respect to the isotony embeddings. The carriers are related by data rather than by a type equality, deliberately: an equality of carrier types cannot be transported along and would force every comparison through a cast. A net theory is then a section assigning a net to every Lorentzian spacetime, and it is generally covariant when the nets over $$L$$ and over its pullback $$\psi^* L$$ are equivalent along $$\psi$$ (Definition 622). In Lean the nets are indexed over the identity-component bridge `toAbstractIdentityComponent`, so Axiom 5 of each net asks only for isometries connected to the identity, as in the blueprint. Four points are worth carrying away: this is a **postulate, not a theorem**—nothing forces the two nets to be isomorphic, and it says nothing about backgrounds that are not diffeomorphism-related; the morphism is specified geometrically rather than causally, because a purely causal morphism would admit the dilations (Theorems 375–376) and thereby demand a scale covariance that is false for a massive theory; the relabelling must be $$\psi$$ and not the identity, since a basis set of one metric is in general not a basis set of the other; and general covariance is a property of the section $$L \mapsto \mathfrak{U}_L$$, not a sixth field of the net structure, so no restriction to diffeomorphisms connected to the identity is needed here. +Two definitions, and the newest structural addition to the blueprint. The gauge group of general relativity is the full diffeomorphism group of $$M$$, so the physical content of a spacetime is its diffeomorphism-equivalence class and not the pair $$(M, g)$$; the hole argument shows that treating a relabelling as physical would destroy determinism, and Leibniz equivalence resolves it by declaring diffeomorphic models to represent the same physical situation. Accordingly, an equivalence of Haag–Kastler nets is defined (Definition 675) as a chosen family of unital \*-isomorphisms $$\Theta_\mathbf{B} : \mathfrak{U}_1(\mathbf{B}) \to \mathfrak{U}_2(e(\mathbf{B}))$$ along a basis-set-preserving bijection $$e$$ of carriers, natural with respect to the isotony embeddings. The carriers are related by data rather than by a type equality, deliberately: an equality of carrier types cannot be transported along and would force every comparison through a cast. A net theory is then a section assigning a net to every Lorentzian spacetime, and it is generally covariant when the nets over $$L$$ and over its pullback $$\psi^* L$$ are equivalent along $$\psi$$ (Definition 676). In Lean the nets are indexed over the identity-component bridge `toAbstractIdentityComponent`, so Axiom 5 of each net asks only for isometries connected to the identity, as in the blueprint. Four points are worth carrying away: this is a **postulate, not a theorem**—nothing forces the two nets to be isomorphic, and it says nothing about backgrounds that are not diffeomorphism-related; the morphism is specified geometrically rather than causally, because a purely causal morphism would admit the dilations (Theorems 422–423) and thereby demand a scale covariance that is false for a massive theory; the relabelling must be $$\psi$$ and not the identity, since a basis set of one metric is in general not a basis set of the other; and general covariance is a property of the section $$L \mapsto \mathfrak{U}_L$$, not a sixth field of the net structure, so no restriction to diffeomorphisms connected to the identity is needed here. **Where the Lean lives:** `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` @@ -19,12 +19,12 @@ Two definitions, and the newest structural addition to the blueprint. The gauge Every entry links to its node in the web blueprint and names the principal Lean declaration. -### §10.7 General Covariance: Nets on Pullback-Related Metrics (p. 319) +### §10.8 General Covariance: Nets on Pullback-Related Metrics (p. 337) -- [**Definition 621**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:net-equivalence-in-curved-spacetime) — Equivalence of Haag–Kastler Nets · `Physicslib4.AQFT.HaagKastlerCurved.NetEquivalence` -- [**Definition 622**](blueprint/chptr-haag-kastler-axioms-blueprint.html#def:general-covariance-in-curved-spacetime) — General Covariance · `Physicslib4.AQFT.HaagKastlerCurved.NetTheory` (+4 more) +- [**Definition 675**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:net-equivalence-in-curved-spacetime) — Equivalence of Haag–Kastler Nets · `Physicslib4.AQFT.HaagKastlerCurved.NetEquivalence` +- [**Definition 676**](https://physicslib.github.io/physicslib4/blueprint/chptr-haag-kastler-axioms-blueprint.html#def:general-covariance-in-curved-spacetime) — General Covariance · `Physicslib4.AQFT.HaagKastlerCurved.NetTheory` (+4 more) -[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Spacetime](sec10-4-spacetime.html) · [§10.5 Minkowski](sec10-5-haag-kastler.html) · [§10.6 Curved](sec10-6-curved.html) · **§10.7 Covariance** · [Axioms](axioms.html) · [Guide](guide.html) +[Home](./) · [§10.1 GNS](sec10-1-gns.html) · [§10.2 Spectral](sec10-2-spectral.html) · [§10.3 Unbounded](sec10-3-unbounded.html) · [§10.4 Stone](sec10-4-stone.html) · [§10.5 Spacetime](sec10-5-spacetime.html) · [§10.6 Minkowski](sec10-6-haag-kastler.html) · [§10.7 Curved](sec10-7-curved.html) · **§10.8 Covariance** · [Axioms](axioms.html) · [Guide](guide.html) -← [§10.6 Curved](sec10-6-curved.html) +← [§10.7 Curved](sec10-7-curved.html) diff --git a/notes/agents/audits/audit-positive-energy-2026-10-07.md b/notes/agents/audits/audit-positive-energy-2026-10-07.md new file mode 100644 index 0000000..af1d5e9 --- /dev/null +++ b/notes/agents/audits/audit-positive-energy-2026-10-07.md @@ -0,0 +1,260 @@ +# Audit: unbounded positive-energy condition (`numina/positive-energy` vs b1cf7d9) + +Date: 2026-10-07. Base: `b1cf7d9` (tip of `numina/aqft-in-lean`). Branch under audit: +`numina/positive-energy`, working tree at commit `85c1072`. Plan audited against: +`notes/agents/plan-positive-energy-2026-10-07.md` (decisions D1–D5, D2 refinement, both approved +2026-10-07). + +## 1. Protected-definition changes (`git diff b1cf7d9 -- Physicslib4`) + +`python3 ~/.claude/lean-kit/lean_guard.py check --base b1cf7d9` reports two `Physicslib4/` +protected changes (plus guard-context and blueprint-prose findings, below). + +**1a. `Physicslib4.AQFT.IsPositiveEnergy`, `Physicslib4/AQFT/PositiveEnergy.lean`.** Changed from +a `def` to a `structure`: + +- Old: `def IsPositiveEnergy (V : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop := ∃ P : H →L[ℂ] H, P.IsPositive ∧ ∀ t x, V t x = exp((t·I) • P) x` — bounded generator only. +- New: `structure IsPositiveEnergy (V : ℝ → (H ≃ₗᵢ[ℂ] H)) : Prop where isOneParameterUnitaryGroup : IsOneParameterUnitaryGroup V; isStronglyContinuous : IsStronglyContinuous V; isPositive_generator : Spectral.Unbounded.IsPositive (generator V)`. + +This is **exactly D1(a)**, the recommended intrinsic shape: one-parameter unitary group ∧ +strongly continuous ∧ positive generator, naming `generator V` rather than quantifying over a +bounded witness. **Matches the approved design.** The outer type `V : ℝ → (H ≃ₗᵢ[ℂ] H)` is +unchanged, so this is a strict generalization (every old instance, with `P` bounded, now gives an +instance of the new structure via `isPositiveEnergy_exp`; the converse needs Stone and does not +hold the other way, which is the intended effect of lifting the restriction). + +**1b. `Physicslib4.Spectral.Unbounded.IsPositive`, `Physicslib4/Spectral/Unbounded/Basic.lean` +(new def).** `def IsPositive (A : H →ₗ.[ℂ] H) : Prop := IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ (⟪(ψ:H), A ψ⟫_ℂ).re`. +This is **exactly D2 as refined** (quadratic-form positivity, with the symmetric conjunct +mirroring `ContinuousLinearMap.IsPositive`). The guard flags new `def`s as reserved for the user +by policy; this one is a verbatim implementation of the text the user already approved in the +plan ("D2 refinement accepted 2026-10-07: `Unbounded.IsPositive A := IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ re ⟪ψ, A ψ⟫`"). **No deviation found**, but per the guard's own policy this still needs the +user's sign-off on the committed text, not just the plan's prose — flagging it here is that +sign-off request. + +**1c. Guard also flags a `variable`/`open`-style change in the same file**: `open Spectral.Stone` +was added before the kept declarations (`exp_generator_unique`, etc.). I checked each kept +theorem's binders and statement text against `b1cf7d9`; none changed (see §2). The new `open` +does not introduce a name clash with anything the kept statements reference. Benign. + +**No other `def`/`structure`/`class`/`abbrev`/`instance` or structure field changed** in +`Physicslib4/`. `Spectral/Stone/Basic.lean` and the new `Spectral/Stone/Bounded.lean` only add +`theorem`s (allowed by policy); `VacuumState.lean`, `QuasilocalKMS.lean`, `StabilizerKMS.lean`, +`CovariantState.lean` change only docstrings/module comments — the `def`s +`IsVacuumState`, `IsVacuumStateConcrete`, and both `IsGroundStateForFlow` are byte-for-byte +unchanged in body (see §2). + +**Unrelated guard findings, not from this branch's work:** the guard also lists `.claude/CLAUDE.md` +and `.claude/lean-policy.json` as "changed protected files." These are artifacts of the sandbox: +`.claude/` is entirely untracked in this repository's git history (`git show b1cf7d9:.claude/CLAUDE.md` +and `git show HEAD:.claude/lean-policy.json` both fail with "exists on disk, but not in "), +so the guard's working-tree comparison treats the whole directory as new/changed relative to any +base commit. This is not an edit made on `numina/positive-energy`; it is the environment's copy of +agent configuration, which was never committed. Flagging for completeness, not as a finding against +the branch. + +## 2. Statement changes, removals, renames + +**Changed statements** (beyond the `IsPositiveEnergy` structure itself, §1a), all in +`PositiveEnergy.lean`: + +- `isPositiveEnergy_const_refl` — same statement (`IsPositiveEnergy (fun _ => refl)`); proof + changed to match the new structure. Unchanged `omit [CompleteSpace H]` added (generalization, + not a restriction — `CompleteSpace H` was never needed by this particular theorem). +- `IsPositiveEnergy.conj` — same statement (`IsPositiveEnergy V → IsPositiveEnergy (conjugate by W)`); proof rewritten against the new structure fields and the new `Unbounded.IsPositive.of_conj`/`mem_generator_conj_domain_iff`/`generator_conj_apply` lemmas. +- `IsPositiveEnergy.strongContinuous` — same statement and conclusion (`Continuous (fun t => V t x)`); now a one-line projection of the `isStronglyContinuous` field rather than a computation from the bounded exponential. +- `exp_generator_unique` — **kept, statement unchanged** (two bounded `P`,`Q` with the same + `exp(itP) = exp(itQ)` for all `t` are equal); this is still a true, self-contained statement + about `exp`, per D3. + +**New theorems** (not renames — genuinely new content, all per the plan's stage 3/4): +`generator_eq_of_eq_expUnitary` (the D4 uniqueness lemma: `V t = e^{itB}`, `B` self-adjoint ⟹ +`generator V = B`), `isPositiveEnergy_exp` (bounded case, D3's promised backward-compatibility +lemma), `isPositiveEnergy_iff_exists_exp` (the existential/exponential form, proved as an +equivalence via Stone, per the D1(a)/D1(b) reconciliation in the plan). In +`Spectral/Stone/Basic.lean`: `isOneParameterUnitaryGroup_refl`, `isStronglyContinuous_refl`, +`generator_refl`, `IsOneParameterUnitaryGroup.conj`, `IsStronglyContinuous.conj`, +`mem_generator_conj_domain_iff`, `generator_conj_apply` (plus a private helper +`tendsto_generatorQuotient_conj_iff`). New file `Spectral/Stone/Bounded.lean`: +`hasDerivAt_exp_smul_I`, `exists_isOneParameterUnitaryGroup_exp`, `isStronglyContinuous_of_eq_exp`, +`generator_eq_of_eq_exp`. In `Spectral/Unbounded/Basic.lean`: `isPositive_toPMap_iff`, +`IsPositive.of_conj`. + +**No theorem was removed or renamed** in `Physicslib4/` on this branch. (The blueprint label +`thrm:vacuum-no-stone` was renamed to `thrm:vacuum-invariance-consequences` in commit `79f642a`; +that is a blueprint-label rename, not a Lean rename — the underlying Lean theorems +`IsVacuumState.invariant` and `IsVacuumState.exists_gns_irreducible_covariant` are unaffected.) + +**Confirmed unchanged statements**, by diffing body text against `b1cf7d9`: + +- `HaagKastlerNet.IsVacuumState` (`VacuumState.lean`) — identical `def` body (invariance ∧ + ∀ future-timelike-translation subgroup, `IsPositiveEnergy (fun t => U (γ t))`). Only the + docstring changed (dropped "scaffold"/"Stone-gated" wording and the `**Restriction:**` line). +- `HaagKastlerNet.IsVacuumStateConcrete` — identical (`IsVacuumState IsFutureTimelikeTranslation ω`); docstring-only change, `**Restriction:**` line dropped. +- `HaagKastlerNet.IsGroundStateForFlow` in `QuasilocalKMS.lean` (Minkowski/covariance-flow form) + — identical body; docstring-only change, `**Restriction:**` line dropped. +- `HaagKastlerNet.IsGroundStateForFlow` in `StabilizerKMS.lean` (curved/Killing-flow form) — + identical body; docstring-only change, `**Restriction:**` line dropped. + +Since `IsPositiveEnergy` itself became strictly more general (not narrower), every statement that +takes it as a hypothesis or field became correspondingly more general (weaker hypothesis to +discharge, same conclusion) rather than changed in shape — consistent with the plan's stated risk +("the new definition is strictly weaker than the old bounded one... today no consumer theorem +silently assumed a bounded generator"). + +## 3. Axioms, `sorry`, restrictions + +- `#print axioms` (via `lake env lean` on a temp file, against the current `.lake` build — the + `.olean` for `PositiveEnergy.lean` is newer than its source, so the build is current): + - `Physicslib4.AQFT.isPositiveEnergy_iff_exists_exp`: `[propext, Classical.choice, Quot.sound]` + - `Physicslib4.AQFT.IsPositiveEnergy.conj`: `[propext, Classical.choice, Quot.sound]` + - `Physicslib4.AQFT.isPositiveEnergy_exp`: `[propext, Classical.choice, Quot.sound]` + - `Physicslib4.Spectral.Stone.stone`: `[propext, Classical.choice, Quot.sound]` + + No axiom beyond the three standard ones. +- `grep -rn "sorry\|admit\b\|native_decide\|debug.skipKernelTC\|implemented_by" Physicslib4/`: + no hits that are actual tactics/attributes — the only matches are two prose uses of the word + "sorry" inside comments in `Spacetime/Basic.lean` and `Spacetime/Curves.lean` (pre-existing, + unrelated to this branch, describing that a structure is *free of* `sorry`). **No `sorry` in + the project.** +- `**Restriction:**` lines: **none remain anywhere in `Physicslib4/`.** All four + (`PositiveEnergy.lean`'s old `IsPositiveEnergy`, `VacuumState.lean`'s `IsVacuumState` and + `IsVacuumStateConcrete`, `QuasilocalKMS.lean`'s and `StabilizerKMS.lean`'s + `IsGroundStateForFlow`) were removed in stage 5 (commit `85c1072`), consistent with lifting the + restriction. One process note, already flagged in the plan's own log: CLAUDE.md's worked + example of the marker convention ("the positive-energy docstring in + `Physicslib4/AQFT/HaagKastler/VacuumState.lean` (bounded generators until Stone's theorem is + available)") no longer exists as written — CLAUDE.md itself is a protected file and wasn't + touched, so this is a now-stale example the user may want to update, not a bug in the branch. +- No new unrecorded restriction found: D5 (scope of the vacuum spectrum condition — per-direction + positive energy, not the joint-spectrum form) is documented in `def:vacuum-state`'s new remark + paragraph as a textbook-equivalent simplification, not silently dropped; stage 4b (the + spectral-support characterization of `Unbounded.IsPositive`) was deferred by the plan and is + absent from the Lean and the blueprint alike (no dangling reference to it), so it is not an + unrecorded gap either. +- `nolint`: two pre-existing uses, both predating this branch and untouched by it — + `Physicslib4/Analysis/CStarCompletion.lean:84` and `Physicslib4/Spectral/BorelClasses.lean:279`, + both `@[nolint unusedArguments]`. Out of scope for this audit (no diff touches either file). +- Verify receipt: `.git/lean-kit/verify-receipt.json` records `lake build` and `lake lint` both + exit 0, but at `2026-09-29T11:11:06Z` — **before** this branch's commits (2026-10-07). The + receipt does not reflect the current sources; a fresh `lake build`/`lake lint` has not been + recorded since. (The `.lake` build artifacts on disk are newer than the sources and the + `#print axioms` queries above resolved cleanly against them, so the tree appears to build, but + this has not been captured in a verify receipt.) +- Approvals: `.git/lean-kit/approvals.json` does not exist (no approvals recorded through + `lean_guard.py approve`). The user's approval for D1–D5 and the D2 refinement is recorded only + in the plan file's prose ("Status: approved 2026-10-07 ... D2 refinement accepted 2026-10-07"). + That is a real approval from the user in conversation, but it is not in the guard's approvals + ledger, so `lean_guard.py check` continues to flag the two `def` changes on every run. This + report is the review the guard is asking for; it does not and cannot itself grant the approval. + +## 4. Blueprint consistency (sec10 nodes changed since `b1cf7d9`) + +Files changed: `haag-kastler-axioms.tex`, `stones-theorem.tex`, `unbounded-spectral-theorems.tex`, +`haag-kastler-axioms-in-curved-spacetime.tex`. Every `\lean{...}` name introduced or kept in these +diffs was checked against `blueprint/lean_decls` (a declaration-name cache dated today) and, for +the positive-energy nodes, against the Lean source directly: + +- `def:positive-energy` (`Physicslib4.AQFT.IsPositiveEnergy`) — **match**. Blueprint: "a family + $V(t)$ ... has positive energy when $V$ is a strongly continuous one-parameter unitary group + ... whose infinitesimal generator $A$ ... is a positive operator ... By Stone's Theorem the + generator $A$ is then ... self-adjoint, and $V(t)=e^{itA}$ ..." — this is exactly the three + structure fields plus the Stone-theorem consequence stated as a remark (proved separately as + `thrm:positive-energy-iff-exp` / `isPositiveEnergy_iff_exists_exp`). Title and prose no longer + say "bounded-generator scaffold"; good. +- `def:positive-unbounded-operator` (`Physicslib4.Spectral.Unbounded.IsPositive`) — **match**. + Blueprint: "symmetric ... and $\mathrm{Re}\langle\psi,A\psi\rangle \ge 0$ for all + $\psi\in\mathrm{Dom}(A)$," explicitly density-free — matches the Lean `IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ re ⟪ψ, A ψ⟫` exactly, including the density-free framing. +- `lmm:positive-conj` (`Spectral.Unbounded.IsPositive.of_conj`) — **match**. Blueprint states + domain-and-formula form ("$WAW^{-1}$ with domain $W\,\mathrm{Dom}(A)$ is positive"); Lean states + it via the `hdom`/`happ` characterization rather than building `WAW⁻¹` as a `LinearPMap` + directly — a deliberate, reviewer-recommended proof-engineering choice (stage-2 log), and the + blueprint proof text (lines 1940-1948) walks through exactly that domain/formula argument, so + this is match, not merely notation-only. +- `thrm:positive-energy-iff-exp` (`isPositiveEnergy_iff_exists_exp`) — **match**. Blueprint: "$V$ + has positive energy iff there is a positive self-adjoint operator $A$ with $V(t)=e^{itA}$ for + all $t$" — matches `IsPositiveEnergy V ↔ ∃ A hA, Unbounded.IsPositive A ∧ ∀ t, V t = expUnitary hA t` exactly (`expUnitary hA t` is the Lean realization of $e^{itA}$ for self-adjoint `A`). +- `lmm:generator-conj` (`Stone.mem_generator_conj_domain_iff`, `Stone.generator_conj_apply`) — + **match**. Blueprint: "$\mathrm{Dom}(B)=W\,\mathrm{Dom}(A)$ and $B=WAW^{-1}$," stated as the + iff-membership + pointwise-value pair — matches the two Lean lemmas' signatures exactly (same + split, for the same domain-care reason given in the plan's risk section). +- `lmm:generator-exp-bounded` (`Stone.generator_eq_of_eq_exp`) — **match**. Blueprint: "the + one-parameter unitary group $V(t)=\exp(itP)$ ... is strongly continuous, and its infinitesimal + generator is $P$, with domain $\mathbf{H}$" — matches `generator V = (P : H →ₗ[ℂ] H).toPMap ⊤` + (`⊤` domain, i.e. all of `H`) plus `isStronglyContinuous_of_eq_exp`, the companion lemma stated + immediately above it with the same hypothesis pattern. + +All `\lean{}` names cited in the diffs of these four files were verified present in +`blueprint/lean_decls` (18 names checked, all present) and, for the five spot-checked nodes above, +read directly against the Lean declarations. + +**One unresolved loose end, already flagged by the plan's own stage-2 log and left for the user's +call**: `thrm:positive-energy-api` (kept, same label, rewritten body) carries +`\lean{Physicslib4.AQFT.isPositiveEnergy_const_refl, Physicslib4.AQFT.exp_generator_unique, Physicslib4.AQFT.IsPositiveEnergy.conj, Physicslib4.AQFT.IsPositiveEnergy.strongContinuous}` +and `\leanok`, but its body now states six parts (i)-(vi), and its own `\uses` line correctly +points the *proof* at the newer, finer-grained lemmas +(`lmm:positive-energy-const, lmm:exp-generator-unique, lmm:positive-conj, lmm:positive-energy-conj, lmm:positive-energy-strong-continuous, lmm:positive-energy-exp-bounded, thrm:positive-energy-iff-exp`). +Concretely: +- part (ii) ("if $B$ is self-adjoint and $V(t)=e^{itB}$ ... then $B$ is the generator") is proved + by `generator_eq_of_eq_expUnitary`, not by the `\lean`-listed `exp_generator_unique` (which is + the narrower bounded-$P,Q$ statement, D3's keeper); +- parts (v) (`isPositiveEnergy_exp`) and (vi) (`isPositiveEnergy_iff_exists_exp`) are not in the + `\lean` list at all. + +This does not fail `leanblueprint checkdecls` (every name in the stale list still exists as a +declaration), but the tag no longer documents what the theorem's six parts actually cite, for a +reader following the `\lean` link rather than the `\uses` graph. The plan's own stage-2 log already +recorded this as deferred ("its `\lean` line still names the old declarations ... reviewer notes +for stage 3: `exp_generator_unique` must be restated (or a new name used) for the D4 form"), +and it does not appear to have been revisited in stages 3-5. Worth a decision: either update the +`\lean` line to the six underlying declarations, or drop it from the summary theorem now that each +part has its own fully-tagged lemma node. + +- `def:ground-state-for-flow-in-curved-spacetime` and the Minkowski `def:vacuum-state`/ + `thrm:vacuum-invariance-consequences` — prose-only changes (dropped "Stone-free"/"Stone-gated" + wording, added `lmm:positive-energy-strong-continuous` to the curved node's `\uses`, removed a + stale `\leanfile{}` tag from the curved node); `\lean{}` targets unchanged and still correct, + since the underlying `def`s/`theorem`s did not change (§2). + +## Verdict + +No unapproved *definition* changes: the one changed `def` (`IsPositiveEnergy`, now a `structure`) +and the one new `def` (`Spectral.Unbounded.IsPositive`) both implement, verbatim, the forms the +user approved in the plan (D1(a) and D2-refined respectively). The guard's flags on these two are +the expected "this touches a protected surface, get it reviewed" signal, not evidence of scope +creep — I checked both against the plan text word-for-word and found no deviation. + +No statement regressions: `IsVacuumState`, `IsVacuumStateConcrete`, and both +`IsGroundStateForFlow` definitions are byte-identical to `b1cf7d9`; no theorem was removed, and +the only theorem whose *statement* changed is the `IsPositiveEnergy` structure itself, which is a +strict generalization, not a narrowing. Axioms are clean (only `propext`/`Classical.choice`/ +`Quot.sound`), there is no `sorry`, and all four `**Restriction:**` lines were removed with the +restriction actually lifted (not just the marker deleted) — the new structure genuinely drops the +bounded-generator requirement. All five spot-checked blueprint nodes match the Lean exactly. + +Things for the user to decide, none blocking: +1. Sign off on the two protected-definition changes (§1a, §1b) — both match the approved plan; no + change recommended, just the formal "I looked, it's as specified" this report provides. +2. `thrm:positive-energy-api`'s stale `\lean` tag (§4) — cosmetic/documentation-only, flagged by + the plan's own authors and not yet fixed; decide whether to update it to the six underlying + declarations or retire it now that per-part lemma nodes exist. +3. The verify receipt is stale relative to this branch (§3) — rerun `lake build && lake lint` + (or `lean_guard.py verify`) to get a current receipt before merging, even though the build + artifacts and `#print axioms` queries here suggest it currently builds clean. +4. CLAUDE.md's worked example of a `**Restriction:**` docstring (the old `IsPositiveEnergy` one) + no longer exists; CLAUDE.md is protected and wasn't touched by this branch, so this is just a + note that the example will need a replacement next time CLAUDE.md is edited. + +## What was tool-verified vs. read-judged + +- Tool-verified: the guard's list of protected changes (`lean_guard.py check --base b1cf7d9`); + axiom dependencies for the four named theorems (`lake env lean` + `#print axioms`, against the + current, source-newer-than-build-confirmed `.lake` build); presence of every cited `\lean{}` + name in `blueprint/lean_decls`; absence of `sorry`/`admit`/`native_decide`/ + `debug.skipKernelTC`/`implemented_by` and of `**Restriction:**` lines (`grep`); `nolint` sites + and that they predate this branch (`git diff --stat`); the verify receipt's timestamp vs. the + branch's commit timestamps; the absence of an approvals ledger. +- Read-judged: every statement-vs-blueprint comparison in §4 (translating Lean signatures to + prose and comparing against the `.tex`); the classification of each docstring-only change in + §2 as not touching the `def` body; the "no name clash from the new `open`" claim in §1c (checked + by reading the kept statements' full text, not by re-elaborating them in isolation). diff --git a/notes/agents/audits/review-2026-09-29-sec10.5.md b/notes/agents/audits/review-2026-09-29-sec10.5.md new file mode 100644 index 0000000..6fb2b7d --- /dev/null +++ b/notes/agents/audits/review-2026-09-29-sec10.5.md @@ -0,0 +1,223 @@ +# Review: Blueprint §10.5 "Haag–Kastler Axioms (Minkowski)" vs Lean — fresh audit + +Date: 2026-09-29 +Reviewer: audit subagent (read-only) +Predecessors read only *after* forming conclusions, per task instructions: +`notes/agents/review-2026-09-sec10.5.md`, `review-2026-09-25-sec10.5.md`, +`review-2026-09-26-sec10.5.md`. + +## Scope and starting facts + +- Blueprint: `blueprint/src/sections/sec10/haag-kastler-axioms.tex` (2062 + lines), read in full. +- Lean: `Physicslib4/AQFT/HaagKastler/*.lean`, `Physicslib4/AQFT/PositiveEnergy.lean`, + `Physicslib4/AQFT/KMS.lean`, and (as linked dependencies of the tex's later + nodes) `Physicslib4/GNS/*.lean`. +- `git log -1` = `15b3ce6` ("Fix second-round chapter 10 review findings"). + This is the **same commit** the 09-26 predecessor audited (confirmed by that + memo's own text). So no tracked `.lean`/`.tex` file in scope has changed + since that review; my independent read is a genuine re-derivation, not a + delta check, and where I disagree with a predecessor's verdict below it is + a correction, not a report of new work. +- `.claude/`, `notes/`, `blueprint/lean_decls`, `blueprint/print/`, + `blueprint/web/`, `lean_inventory.py`, `leanloc.py` are untracked + agent/tooling artifacts, not in-scope source. + +## What I verified with a tool (new this session — prior audits did not run this) + +Built a temp file outside the repo (`/tmp/axcheck_sec10_5.lean`) importing the +in-scope files and ran `lake env lean` (build cache present, so this used the +existing `.lake/build`) on `#print axioms` for a spread of main theorems: +`exists_quasilocalAlgebra`, `HaagKastlerNet.einstein_causality`, +`HaagKastlerNet.exists_gns_einstein_causality`, +`HaagKastlerNet.localVonNeumann_subset_centralizer`, +`HaagKastlerNet.localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement`, +`dense_range_in_bicommutant`, `ObservableCorrespondence.maximal`, +`IsPositiveEnergy.strongContinuous`, +`HaagKastlerNet.IsVacuumState.exists_gns_irreducible_covariant`, +`IsKMSState.invariant_of_pos`, `IsGroundStateForFlow.exists_strongContinuous_unitary`. + +Result: all depend only on `[propext, Classical.choice, Quot.sound]` **except** +`dense_range_in_bicommutant`, which additionally depends on `sorryAx` — exactly +the one disclosed, documented gap (`StrongDensity.lean:74`, marked +`**Restriction:**`). No undisclosed axiom or `sorry` leakage anywhere in the +sample. + +Also ran, by tool: a Python sweep of every `\lean{...}` identifier in the tex +(196, matching prior counts) against `Physicslib4/` — 0 unresolved. And +`python3 ~/.claude/lean-kit/lean_guard.py check --base HEAD`, which reports +only the untracked `.claude/` config files as protected changes (no in-scope +source change). + +## What I verified by reading (this session, independently, not by trusting priors) + +Read in full and compared clause-by-clause against the blueprint prose: +`LocalAlgebras.lean` (`LocalNet`, Axiom 1), `Isotony.lean` (Axiom 2, data vs. +existence, non-strict inclusion), `LorentzCovariance.lean` (Axiom 5, including +the `InhomogeneousLorentzGroup` construction), `Net.lean` (`HaagKastlerNet`, +correctly omitting Axiom 4), `LocalCommutativity.lean` (Axiom 3, the +any-quasilocal-algebra transfer), `QuasilocalAlgebra.lean` (carrier tied to +`Type u`, `ι` restricted to Alexandrov-basis sets, `dense_range`, +`ι_inclusion` against the Axiom 2 family — the three historical mismatches +the tex narrates are all absent), `ObservableBridge.lean` (Axiom 4 as a bridge +principle, no mathematical consumers, deliberately non-surjective `measure`), +`PositiveEnergy.lean`, `StrongDensity.lean`, `VacuumState.lean`, +`QuasilocalKMS.lean`, `KMS.lean`, `EinsteinCausality.lean`, and the opening of +`LocalVonNeumann.lean` (`localOperators`, `localVonNeumann`, microcausality, +isotony of the net, statistical independence). + +All of the above: **match**, except the one disclosed **Lean assumes more** +item at `IsPositiveEnergy` (bounded generator standing in for the physically +unbounded generator, pending Stone's theorem), which is correctly marked +`**Restriction:**` in all four sites (`PositiveEnergy.lean:49`, +`VacuumState.lean:137,198`, `QuasilocalKMS.lean:97`), and is not re-reported +as a new finding per the task's instructions. + +Given the depth of the three predecessor audits (which between them walked +essentially every node in the 2062-line file, including the GNS +irreducibility/purity/disjointness/direct-sum material this task's scope note +treats as "linked"), I did not re-derive every one of those ~150 remaining +nodes from scratch; I spot-checked the axiom/definition backbone above (the +highest-leverage material, since a mismatch there propagates to everything +downstream) plus the disclosed-restriction sites, and used the tool-verified +axiom check and `\lean{}`-resolution sweep to independently corroborate the +rest of the graph's integrity. + +## Hygiene, verified by grep this session + +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`: exactly one + hit in scope, `StrongDensity.lean:74` (`dense_range_in_bicommutant`) — + documented, and correctly reflected in the tex (the *statement* of + `thrm:quasilocal-strongly-dense` carries `\leanok`, its *proof* block does + not). +- `nolint`: one hit inside the HaagKastler-adjacent completion machinery, + `Physicslib4/Analysis/CStarCompletion.lean:84` (`@[nolint unusedArguments]` + on `CStarCompletion`), justified by the docstring immediately above it + (the two unused typeclass arguments are kept because the abbreviation is + literally `def:completion-standing-hypotheses`, and dropping them would + make the notation say less than the blueprint node it stands for). Two + further `nolint` hits exist in the repository + (`Physicslib4/Spectral/BorelClasses.lean:279`, + `Physicslib4/Spacetime/Causality.lean:81`) but are outside this task's + file scope (chapters other than 10.5); noted for completeness, not audited. +- `Restriction:` marker: exactly four hits, all in the disclosed sites listed + above; none undocumented. + +## Correction to the audit trail (not a code defect) + +**The predecessor "N2" finding is stale/incorrect — `isPure_precomp_action_iff` +already has a blueprint node.** + +- The 09-25 review reported `Physicslib4.AQFT.HaagKastler.isPure_precomp_action_iff` + as having "no blueprint node", and the 09-26 review repeated this verbatim + ("N2 ... still true, unchanged"). +- Independently grepping the current tex: line 1837 (`thrm:purity-covariance-invariant`) + reads + `\lean{Physicslib4.GNS.isPure_precomp_iff, Physicslib4.AQFT.HaagKastler.HaagKastlerNet.isPure_precomp_action_iff}`, + with `\leanok` on both the statement and proof. +- `git log -p -S"HaagKastlerNet.isPure_precomp_action_iff" -- blueprint/src/sections/sec10/haag-kastler-axioms.tex` + shows this citation was rewritten at commit `a743ce0` ("Replace + CovariantQuasilocalAlgebra with a net's canonical N.quasilocal", dated Sep + 25 2026) from an earlier tag citing `CovariantQuasilocalAlgebra.isPure_precomp_action_iff` + (a name that no longer exists — `CovariantQuasilocalAlgebra` was removed). + The declaration itself lives in `Physicslib4/AQFT/HaagKastler/QuasilocalIntertwiner.lean:688`, + inside `namespace HaagKastlerNet` (opened at line 451 of that file), so its + fully-qualified name is exactly `...HaagKastlerNet.isPure_precomp_action_iff` + — matching the tex. +- Reading the timestamps: it is plausible the 09-25 review ran before the + `a743ce0` rename landed (same day), and the 09-26 review then copied + forward the finding without re-grepping the current tex against the + *current* (post-rename) fully-qualified name. Either way, as of the present + commit the finding does not hold: this identifier is linked, with `\leanok`, + to a real blueprint node, and matches it (purity is preserved under + precomposition by the covariance automorphism `β_L`). +- No action needed on the source; recorded here so a future auditor does not + keep carrying this forward as an open item. + +## Confirmed-still-open items (not re-derived as new, verified by reading) + +- **O1** — `IsWeaklyContinuousAction` (`CovariantState.lean:91–131`) still has + no blueprint node: `grep -in "weaklycontinuous\|weakly continuous"` on the + tex returns nothing, and the declaration has no consumer in + `Physicslib4/AQFT/HaagKastler/` (its only other occurrence in the repo is + the curved-spacetime analogue in `HaagKastlerCurved/CovariantState.lean`, + out of this task's scope). Low severity: a real, well-documented Lean-only + definition, unused, so it cannot mislead a downstream theorem. Candidate + for a short blueprint node near `def:covariant-state-family`, or an + explicit "Lean-only scaffold" note in the file, but not a faithfulness + defect. +- **N1** — the verify-receipt (`.git/lean-kit/verify-receipt.json`) is + timestamped 2026-09-18 (151 files, `lake build` + `lake lint` both exit 0) + but `HEAD` is `15b3ce6`, and the commit log shows at least eight commits + after that receipt's implied baseline touching `.lean`/`.tex` files + (`3166de7` through `15b3ce6`, several explicitly in the HaagKastler/GNS + tree). The receipt therefore does not attest to the current tree. This was + first reported by the 09-25 review and repeated by 09-26; I re-verified it + independently by reading the receipt and `git log` myself rather than + trusting the prior claim. Still open; the task's instruction not to + re-report only names the `StrongDensity` sorry and the `IsPositiveEnergy` + restriction, so I am recording this integrity gap rather than silently + dropping it. + +## Blueprint-math correctness + +None found. The core axiom chain (Axioms 1–5, quasilocal colimit/completion, +`HaagKastlerNet`, Einstein causality, local von Neumann microcausality) that +I re-derived by direct reading is mathematically sound and matches the Lean +term for term, including the subtle points the blueprint prose itself flags +(non-strict vs. strict inclusion in Axiom 2/5; the "chosen data, not +existence" shape of Axioms 2 and 5; the universe/indexing history of +`QuasilocalAlgebra`; the deliberately one-way, non-surjective shape of Axiom +4; the deliberately-not-claimed uniqueness of the complete C*-norm). + +## Summary + +- Classification counts (this session's directly-read sample, the + axiom/definition backbone plus all four disclosed-restriction sites): match + — all, except one **Lean assumes more** (`IsPositiveEnergy`, already + disclosed, not newly reported). +- Non-matches ordered by how much they narrow the project's claims: none + beyond the one already-disclosed, correctly-marked restriction. +- Verified by tool this session: `#print axioms` on 11 main theorems via + `lake env lean` on a temp file outside the repo (only propext/choice/Quot.sound, + plus the one documented `sorryAx`); the 196/196 `\lean{}`-identifier + resolution sweep; `lean_guard.py check --base HEAD` (no in-scope source + change); `git log -p -S` on the `isPure_precomp_action_iff` citation (used + to correct the stale N2 finding). +- Verified by reading: the full Axiom-1–5 / `HaagKastlerNet` / quasilocal + algebra / Einstein-causality / local-von-Neumann chain, the four + restriction-marked declarations, `ObservableBridge.lean`, and the KMS/ground + -state definitions in `QuasilocalKMS.lean` and `KMS.lean`; the hygiene greps + (`sorry`, `nolint`, `Restriction:`); and the O1/N1 open-item confirmations. +- Not re-derived from scratch this session (relied on the very thorough, + full-file 09-26 predecessor plus this session's tool-verified backbone + checks as corroboration): the ~150 GNS irreducibility/purity/Schur/ + disjointness/direct-sum/superselection nodes in the back half of the tex + file, since the code is byte-identical to what that review already walked + node-by-node and my spot checks of the load-bearing definitions found + nothing to contradict it. + +## Files referenced + +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/src/sections/sec10/haag-kastler-axioms.tex` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/LocalAlgebras.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/Isotony.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/LorentzCovariance.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/Net.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/QuasilocalAlgebra.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/ObservableBridge.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/EinsteinCausality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/LocalVonNeumann.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/StrongDensity.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/VacuumState.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/QuasilocalKMS.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/QuasilocalIntertwiner.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastler/CovariantState.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/PositiveEnergy.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/KMS.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Analysis/CStarCompletion.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/.git/lean-kit/verify-receipt.json` +- Predecessor memos: + `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-25-sec10.5.md`, + `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-26-sec10.5.md` diff --git a/notes/agents/plan-levi-civita-geodesics-2026-09-29.md b/notes/agents/plan-levi-civita-geodesics-2026-09-29.md new file mode 100644 index 0000000..9f0bd4d --- /dev/null +++ b/notes/agents/plan-levi-civita-geodesics-2026-09-29.md @@ -0,0 +1,277 @@ +# Plan: a Levi-Civita connection for `Spacetime` and a real `IsGeodesic` + +Date: 2026-09-29. Toolchain: Lean / Mathlib v4.34.1 (commit `3ff1a59`). +Status: plan only. Nothing below is implemented. + +## Goal + +Replace the placeholder `IsGeodesic := True` (`Physicslib4/Spacetime/Causality.lean`, +with its `**Restriction:**` line) by "γ is a geodesic of the Levi-Civita connection of +the spacetime metric", built on Mathlib's covariant-derivative API rather than on +hand-written chart Christoffel symbols (the alternative in +`notes/agents/scout/isgeodesic-christoffel-2026-09-29.md`). Then retire the 57 +formalization notes in `blueprint/src/sections/sec10/spacetime.tex`. + +## What Mathlib v4.34.1 provides + +Folder `Mathlib/Geometry/Manifold/VectorBundle/CovariantDerivative/`: + +| File | Content | Usable for a Lorentzian metric? | +|---|---|---| +| `Basic.lean` | `IsCovariantDerivativeOn`, bundled `CovariantDerivative I F V`, `ContMDiffCovariantDerivative`, `difference`, `addOneForm` | Yes, as is (any field, any bundle, no metric) | +| `Torsion.lean` | `CovariantDerivative.torsion`, `torsion_eq_zero_iff` | Yes, as is | +| `Metric.lean` | `derivMetricTensorAux/derivMetricTensor`, `IsMetricCompatible` | Pattern only: stated with `inner`/`innerSL` and `[IsContMDiffRiemannianBundle I 1 F V]` | +| `LeviCivita.lean` | `IsLeviCivitaConnection` (structure), `.uniqueness`, Koszul `leviCivitaAuxInner`, `leviCivitaAux`, `leviCivitaConnection`, `isLeviCivitaConnection_leviCivitaConnection` | Pattern only: uses `InnerProductSpace.toDual` (line ~313) and `injective_inner_*` lemmas | + +Mathlib has no covariant derivative along a curve, no parallel transport, no geodesics. + +Our side (`Physicslib4/Spacetime/Basic.lean`, `structure Spacetime`): the metric is +`val : ∀ x, TangentSpace model x →L[ℝ] TangentSpace model x →L[ℝ] ℝ`, with fields +`symm`, `nondegenerate`, `lorentzian`, `tangent_findim`, and a `contMDiff` field stating +smoothness as a bundle section, deliberately the same shape as +`Bundle.ContMDiffRiemannianMetric.contMDiff`. So Mathlib's constructions transfer once +`innerSL ℝ v` is replaced by `M.val x v` and `InnerProductSpace.toDual` by the +musical isomorphism obtained from `nondegenerate` + finite dimension. + +## Design decisions for the user (settle before Stage 2) + +1. **Generality.** DECIDED (2026-09-29): build a small general pseudo-Riemannian layer + and instantiate it by `Spacetime`. Original note: build the metric-compatibility / Levi-Civita layer for a general + smooth nondegenerate symmetric bilinear bundle metric (reusable, closer to a future + Mathlib pseudo-Riemannian API), or specialise directly to `Spacetime`. Recommendation: + a small general layer (`PseudoRiemannian`-style section `g` + `symm` + `nondegenerate`) + instantiated by `Spacetime`, in a new folder `Physicslib4/Geometry/`. +2. **Derivative along a curve** (Mathlib has none). DECIDED (2026-09-29): chart-free + extension definition. `μ` is a geodesic iff for every `s` in the parameter space and + every smooth vector field `X` with `X (μ t) = μ' t` for `t` near `s` (within the + parameter space), `(∇_X X)(μ s) = 0`. Required lemmas: (i) independence: `∇_X Y` at + `μ s` in direction `μ' s` depends only on `Y` along `μ` near `s` (local frames inside + the proof only); (ii) existence of such extensions near each `s` (smooth paths have + nonvanishing velocity, hence are local injective immersions), which rules out + vacuity. No chart appears in any definition. Original options: + - (a) Pullback connection: define `D_t V` for vector fields `V` along γ via + `∇` applied to a local extension, prove independence of the extension + (needs a tensoriality-in-direction plus "depends only on values along γ" lemma). + - (b) Local frame: in the chart trivialization at γ(t), `D_t V = V' + A(γ')(V)`, where + `A` is the connection one-form of `∇` in that trivialization (Mathlib's + `difference` of `∇` and the trivial connection of the trivialization). Chart + independence is then a lemma, not part of the definition. + Recommendation: (b) for the definition (concrete, reuses `difference`), prove the + extension characterisation (a) as a theorem later if needed. +3. **Which curves.** DECIDED (2026-09-29): affinely parametrised geodesics on paths + (`IsGeodesic μ` means `μ` itself satisfies the geodesic equation); the curve-level + notion stays "some representative path is a geodesic", as in the trip definitions. + Original note: Geodesic condition for `M.SmoothPath` on its parameter space + (closed interval, possibly with endpoints): use within-derivatives on the parameter + space, matching the existing `SmoothPath.tangent` API. Affinely parametrised (the + usual definition) vs. pregeodesic up to reparametrisation: trips use curves up to + reparametrisation (`SmoothCurve`), so decide whether `IsGeodesic` on a path means + "affinely parametrised geodesic" (then trips quantify over a representative, as now) + or "pregeodesic". Recommendation: affinely parametrised on the path; the curve-level + notion is "some representative is a geodesic", as the trip definitions already do. +4. **Scope of the blueprint.** These are new chapter-10 definitions (§10.4), not + motivation. The blueprint text is the spec, so it must be written and reviewed first. + +## Stages + +Each stage ends with `lake build`, `lake lint`, `leanblueprint checkdecls`, a commit, +and (for stages touching statements) a formalizer-reviewer or lean-auditor pass. + +### Stage 1: blueprint (fuse:blueprint + fuse:blueprint-reviewer) + +Add to `spacetime.tex`, after the metric / time-orientation definitions and before +`def:trip`: +- `def:metric-compatible-connection`: a covariant derivative ∇ on TM is compatible with + g if X(g(σ,τ)) = g(∇_Xσ,τ) + g(σ,∇_Xτ). +- `def:levi-civita-connection`: torsion-free and metric-compatible. +- `lmm:koszul-formula`: 2g(∇_XY,Z) = X g(Y,Z) + Y g(X,Z) − Z g(X,Y) + + g([X,Y],Z) − g([X,Z],Y) − g([Y,Z],X). +- `lmm:musical-isomorphism`: nondegeneracy gives an isomorphism T_xM ≅ T_x*M + (finite dimension). +- `thrm:levi-civita-exists-unique`: every spacetime has a unique Levi-Civita connection. +- `lmm:covariant-derivative-along-curve-local`: for vector fields X, Y, Y' with + Y = Y' along a smooth path μ near s and X(μ s) = μ'(s), (∇_X Y)(μ s) = (∇_X Y')(μ s). +- `lmm:velocity-extends`: the velocity of a smooth path extends near each parameter to a + smooth vector field. +- `def:geodesic`: extension definition of decision 2 (affinely parametrised). +- `lmm:isometry-preserves-levi-civita`: an isometry φ intertwines ∇ (by uniqueness). +- `lmm:isometry-preserves-geodesics`: φ ∘ γ is a geodesic iff γ is. +- `lmm:minkowski-levi-civita-flat` and `lmm:minkowski-lines-are-geodesics`: in standard + Minkowski space ∇ is the trivial connection, and affine lines are geodesics. +Update `def:trip` / `def:causal-trip` to cite `def:geodesic`. Mark the 57 notes for +removal only after Stage 5. +Deliverable: reviewed blueprint; `blueprint_validate` clean apart from the known `conv:` +errors. + +### Stage 2: definitions and sorry'd statements (fuse:formalizer + reviewer) + +New file(s), e.g. `Physicslib4/Geometry/PseudoRiemannian/Musical.lean`, +`.../MetricCompatible.lean`, `.../LeviCivita.lean`: +- `musical` : `TangentSpace I x ≃L[ℝ] (TangentSpace I x →L[ℝ] ℝ)` from `val x`, + `nondegenerate`, `tangent_findim` (via `LinearMap.BilinForm`/`ContinuousLinearMap` + and `LinearEquiv.ofInjectiveEndo`-style finite-dimensional arguments). +- `derivMetricTensor` / `IsMetricCompatible` mirroring `Metric.lean` with `val` in + place of `innerSL`. +- `IsLeviCivitaConnection` (torsion `= 0` via Mathlib `torsion`, plus + `IsMetricCompatible`). +- Statements (sorry): `IsLeviCivitaConnection.uniqueness`, `exists_leviCivita`, + `leviCivita : CovariantDerivative ...` (as `Classical.choose` of existence, or direct + construction once Stage 3 lands). +This stage is cheap (definitions only), about 150–250 lines. + +### Stage 3: existence and uniqueness (fuse:prover, parallel where independent) + +Port `LeviCivita.lean` (414 lines) with these substitutions: +- `injective_inner_mdifferentiableAt_vectorField` etc. → injectivity of + `v ↦ val x v` from `nondegenerate`. +- `leviCivitaAuxInner` (the Koszul right-hand side) → same, with `val`. +- `InnerProductSpace.toDual.symm` → `musical.symm`. +- smoothness of `musical.symm` in `x` from the `contMDiff` field (the inverse of a + smooth family of invertible maps is smooth: `ContMDiff` of `Ring.inverse`/ + `ContinuousLinearEquiv` inverse in the hom-bundle trivialization). This is the one + genuinely new analytic lemma; budget it separately. +Proof decomposition (each ≤ ~10 tactic lines, per project style): tensoriality of the +Koszul expression in each slot; Leibniz rule; additivity; torsion-free; metric +compatibility; uniqueness (Koszul determines g(∇_XY, ·), then nondegeneracy). +Expected size: 400–700 lines. Largest risk: the smooth inverse of the metric. + +### Stage 4: derivative along curves and the new `IsGeodesic` (definition change) + +- Define `IsGeodesic M μ` by the chart-free extension condition of decision 2, with the + independence and existence lemmas proved first (the existence lemma is what makes the + definition non-vacuous). +- Replace the placeholder in `Causality.lean`; remove its `**Restriction:**` line. +- Proofs that currently get the geodesic conjunct for free and must be repaired + (from the scout memo §4; re-grep `IsGeodesic`, `IsTripSegment`, + `IsCausalTripSegment` before starting): + `Spacetime/IsometryCausality.lean` (isometry pushforward of trips), + `Spacetime/CrossMetricIsometry.lean`, `Spacetime/DiffeoPath.lean`, + `Spacetime/LorentzCausality.lean` (Lorentz images of trips), + `Spacetime/Minkowski.lean` (straight-line trips, the trip-tangent lemma). +- New supporting lemmas: + - Minkowski: the Levi-Civita connection of the constant metric in the identity chart + is the trivial connection (by uniqueness: the trivial connection is torsion-free and + compatible); affine lines have zero covariant acceleration. Moderate. + - Isometries: φ*∇ is Levi-Civita for φ*g = g, so equals ∇ (uniqueness); hence + `covDerivAlong` commutes with φ and geodesics map to geodesics. Moderate given + Stage 3; this is where the connection approach beats hand-written Christoffel + symbols. + - Cross-metric isometries (`CrossMetricIsometry.lean`): same argument between two + metrics; check the existing hypotheses supply smoothness of the map. +Expected size: 300–600 lines, depending on decision 2. + +### Stage 5: clean-up + +- Remove the 57 "Formalization note" paragraphs in `spacetime.tex` and the remark after + `def:causal-trip`; update docstrings of `IsTripSegment`, `IsCausalTripSegment`. +- Re-run `leanblueprint pdf/web`, `checkdecls`, refresh `home_page/index.md`. +- Full chapter-10 §10.4 review (lean-auditor) against the new blueprint text. + +## Risks and mitigations + +- **Smooth inverse metric** (Stage 3): if the hom-bundle smoothness of `musical.symm` + is hard, first prove existence pointwise and smoothness in charts, or add + smoothness of the inverse as a derived lemma via the chart matrix inverse. +- **Mathlib API churn**: the covariant-derivative files are new (2025–26) and may change + in later Mathlib versions. Keep the port close to Mathlib's naming to ease rebasing, + and consider upstreaming the pseudo-Riemannian generalisation. +- **Boundary behaviour**: parameter spaces are closed intervals; use within-derivatives + on `μ.parameterSpace` consistently (`Path.uniqueDiffOn_parameterSpace` exists). +- **Downstream breakage in Stage 4**: do Stage 4 on its own branch; the build stays + green through Stages 1–3 because nothing uses the new definitions yet. +- **Guard hook**: new `def`s and changes to `IsGeodesic` are protected; the orchestrator + (or the user via `lean_guard.py approve`) must apply or approve those edits. + +## Suggested session breakdown + +1. Stage 1 + design decisions 1–3 (one session). +2. Stage 2 (short) and the start of Stage 3. +3. Finish Stage 3 (possibly two sessions; the smooth inverse lemma first). +4. Stage 4 on a branch. +5. Stage 5 and review. + +## Progress log + +- 2026-09-29, Stage 1: blueprint nodes drafted in `spacetime.tex` (fuse:blueprint) and + reviewed (fuse:blueprint-reviewer: REVISE, then PASS). Not committed. + - Refinement of decision 2 adopted on review: the geodesic condition is imposed only at + interior parameters of Σ (non-vacuous, since the interior of a non-degenerate + interval is non-empty). This removes the need for a Borel-lemma extension of paths + past their endpoints (not in Mathlib). + - Open decision for the user: the general layer assumes a boundaryless model; the Lean + `Spacetime` does not currently require `model.Boundaryless`. Either add that field / + hypothesis or keep "a spacetime is pseudo-Riemannian" informal. + - Reviewer note: `lmm:musical-inverse-smooth` is not needed for existence, uniqueness or + geodesics (Mathlib's `IsCovariantDerivativeOn` imposes no smoothness), so the plan's + "largest risk" is off the critical path. Two claims in `def:geodesic` (endpoint + continuity, affine reparametrisations) are informal remarks, not targets. +- 2026-09-30, Stage 2: `Physicslib4/Geometry/PseudoRiemannian/Basic.lean` + (`PseudoRiemannianMetric`, `bijective_val` [sorry], `Spacetime.toPseudoRiemannianMetric`) + and `.../LeviCivita.lean` (`IsMetricCompatibleWith`, `IsLeviCivitaFor`, `koszul`, + `uniqueness`, `exists_isLeviCivitaFor` [all sorry], `leviCivita` via `choose`). + Spacetime gained `boundaryless : model.Boundaryless` (commit `334c309`); the reviewer + notes the layer itself does not need it yet (keep it out of these statements). + Formalizer-reviewer: PASS. Blueprint statuses recorded. Not yet formalized: the Koszul + construction helpers (`lmm:koszul-expression-tensorial`, `...-is-covariant-derivative`, + `...-is-levi-civita`) and `lmm:musical-inverse-smooth` (off the critical path); these + belong with the Stage 3 proofs. +- 2026-09-30, Stage 2 committed as `b581f07`. Stage 3 started: `bijective_val`, + `IsLeviCivitaFor.koszul` and `IsLeviCivitaFor.uniqueness` proved (standard axioms only; + uniqueness via Mathlib's `VectorBundle.injective_eval_mdifferentiableAt_sec`). Remaining + in Stage 3: `exists_isLeviCivitaFor` (port `leviCivitaAuxInner`/`leviCivitaAux`/ + `isCovariantDerivativeOn_leviCivitaAux` and the torsion/compatibility checks from + Mathlib's LeviCivita.lean, with `(g.val x)`'s inverse from `bijective_val` in place of + `InnerProductSpace.toDual.symm`). Not committed. +- 2026-09-30, Stage 3 complete (commit of the first three proofs: `7947eeb`). Existence + proved via `koszulAux`, `flatEquiv`, `leviCivitaAux`, `koszulConnection` (defs written by + the orchestrator; guard blocks agent defs), with helpers `mdifferentiableAt_val_apply`, + `mfderiv_apply_eq_mvfderiv`, `eq_of_forall_val_apply_eq`. No sorry in the layer; standard + axioms only. `thrm:levi-civita-exists-unique` proved. Not yet committed. Next: Stage 4. +- 2026-09-30, Stage 3 committed as `9068056`. Stage 4 started on branch `numina/geodesics`: + new `Physicslib4/Spacetime/AlongPath.lean` with the five along-the-curve lemmas, all + proved (standard axioms): `SmoothPath.mfderiv_apply_tangent_eq_zero`, + `SmoothPath.covDeriv_eq_of_eventuallyEq` (local frame from `trivializationAt` + + `Basis.ofVectorSpace`), `exists_contMDiff_vectorField_eventuallyEq` (Mathlib + `ContMDiffOn.smul_section_of_tsupport`), `SmoothPath.exists_localLeftInverse` (1-D inverse + function theorem), `SmoothPath.exists_vectorField_eq_tangent`. Not yet committed. + Next: define the new `IsGeodesic` and repair the trip proofs. +- 2026-09-30, along-path lemmas committed as `ac2fa2e`. New `IsGeodesic` defined in + `Causality.lean` (chart-free, interior parameters, `M.toPseudoRiemannianMetric.leviCivita`); + placeholder and its Restriction line removed. Not committed: the build breaks at exactly + five places that discharged the geodesic conjunct with `trivial`: + 1. `Minkowski.lean:1381` (straight segment trip) — needs `lmm:minkowski-lines-are-geodesics` + (via `lmm:minkowski-levi-civita-flat`). + 2. `IsometryCausality.lean:230` `segmentPrecedes_pushforward` — needs + `lmm:isometry-preserves-geodesics`. + 3. `CrossMetricIsometry.lean:327` `CrossIsometry.segmentPrecedes` — needs the cross-metric + version (blueprint currently marks it deferred). + 4–5. `LorentzCausality.lean:309` `causalSegmentPrecedes_smul` and `:395` (timelike + version) — needs Lorentz transformations (affine isometries of Minkowski) to preserve + geodesics; via the isometry lemma plus a bridge from the Lorentz action to `Isometry`, + or directly from flatness (∇ = directional derivative, affine maps preserve it). + Every other module failed only because it imports one of these files. +- 2026-09-30, breakages 1, 2, 4, 5 repaired (not committed): new + `Physicslib4/Geometry/PseudoRiemannian/Flat.lean` (`flatConnection`, Levi-Civita for a + constant metric, `leviCivita_apply_eq_fderiv`); in `Minkowski.lean` + `standardMinkowski_leviCivita_apply`, `standardMinkowski_isGeodesic_iff` (geodesic ⟺ velocity + has derivative 0 at interior parameters), `standardMinkowskiLineSegmentPath_isGeodesic`; in + `LorentzCausality.lean` `lorentzPath_isGeodesic`; in `IsometryCausality.lean` + `Isometry.pushforwardPath_isGeodesic` via `mfderiv_leviCivita_mpullback` (naturality proved + term-by-term from the Koszul formula, not via a pullback connection, so + `lmm:diffeo-pullback-connection`, `lmm:diffeo-pullback-torsion-free`, + `lmm:isometry-pullback-compatible` remain unformalized — the blueprint proof route differs). + Standard axioms only. Remaining: breakage 3 (`CrossMetricIsometry.lean:327`), which blocks + `lake lint` and the modules importing that file. +- 2026-09-30, breakage 3 repaired: `CrossIsometry.pushforwardPath_isGeodesic` with cross-metric + ports of the naturality helpers (incl. `CrossIsometry.mfderiv_leviCivita_mpullback`). Build, + lint, checkdecls green; only the deliberate StrongDensity sorry remains. Stage 4 committed on + `numina/geodesics`. Remaining: Stage 5 (retire the 57 formalization notes, the remark after + def:causal-trip, and update the blueprint proof route of the isometry lemmas; refresh home page). +- 2026-09-30, Stage 5 started (not committed): removed the 57 formalization notes and the + placeholder remark after def:causal-trip; updated stale placeholder docstrings in + Causality.lean and Minkowski.lean; blueprint isometry section rewritten to the + Koszul-invariance route (new lmm:isometry-pullback-metric, -metric-derivative, + -lie-bracket; old pullback-connection nodes deleted), all linked and proved. Remaining: + rebuild blueprint PDF/web, refresh home_page/index.md (still describes the placeholder), + merge numina/geodesics into numina/aqft-in-lean. Only unformalized new node: + lmm:musical-inverse-smooth (unused). diff --git a/notes/agents/plan-positive-energy-2026-10-07.md b/notes/agents/plan-positive-energy-2026-10-07.md new file mode 100644 index 0000000..0d2df81 --- /dev/null +++ b/notes/agents/plan-positive-energy-2026-10-07.md @@ -0,0 +1,255 @@ +# Plan: lift the bounded-generator restriction on IsPositiveEnergy + +Date: 2026-10-07. Toolchain: Lean / Mathlib v4.34.1. Proposed branch: `numina/positive-energy` +off `numina/aqft-in-lean`. Status: approved 2026-10-07 (D1–D5 as recommended; stage 4b, the spectral-support +equivalence, deferred). D2 refinement accepted 2026-10-07: `Unbounded.IsPositive A := +IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ re ⟪ψ, A ψ⟫`. + +Stage 9 of `plan-stones-theorem-2026-10-04.md`. It changes definitions, so per CLAUDE.md +nothing is changed until the user approves. + +## Current state + +- `Physicslib4/AQFT/PositiveEnergy.lean:54`: + `IsPositiveEnergy V := ∃ P : H →L[ℂ] H, P.IsPositive ∧ ∀ t x, V t x = exp((t I) • P) x`. + - It has a `**Restriction:**` docstring line saying it is waiting on Stone's theorem. + - API, all in the same file: + - `isPositiveEnergy_const_refl`; + - `exp_generator_unique`, uniqueness of a bounded generator; + - `IsPositiveEnergy.conj`; + - `IsPositiveEnergy.strongContinuous`. +- Consumers. Each one uses `IsPositiveEnergy` as a hypothesis or a field. The only API they + use is `strongContinuous`. + - `HaagKastler/VacuumState.lean`: `IsVacuumState` (Restriction line 137) and + `IsVacuumStateConcrete` (Restriction line 198). + - `HaagKastler/QuasilocalKMS.lean`: `IsGroundStateForFlow` (Restriction line 97), and + `exists_strongContinuous_unitary`. + - `HaagKastlerCurved/StabilizerKMS.lean`: `IsGroundStateForFlow` (Restriction line 147), and + `exists_strongContinuous_unitary`. +- Blueprint (`haag-kastler-axioms.tex` and `haag-kastler-axioms-in-curved-spacetime.tex`). These + nodes describe the bounded scaffold or call it "Stone-gated": + - `def:positive-energy` and `thrm:positive-energy-api` (around line 1900); + - `def:vacuum-state`, `def:vacuum-state-concrete`, and the two ground-state nodes. + - Some carry a stale `\leanfile{}` tag. +- Now available, from §10.3 and §10.4: + - `IsOneParameterUnitaryGroup`, `IsStronglyContinuous`, `generator`; + - `expUnitary hA`, `generator_expUnitary`, and `stone`, which gives uniqueness; + - `Unbounded.IsSelfAdjoint` and `spectralMeasure`. +- There is no positivity notion for unbounded operators, in Mathlib (no `LinearPMap.IsPositive`) + or in the project. + +## Decisions needed + +**D1. Shape of the new definition.** +- (a) **Intrinsic (recommended).** The definition is + `IsOneParameterUnitaryGroup V ∧ IsStronglyContinuous V ∧ Unbounded.IsPositive (generator V)`. + - It names the generator instead of quantifying over one. + - Stone's theorem then gives `V t = e^{itA}` with `A = generator V` self-adjoint, as a + theorem. + - The API is easy: + - strong continuity is a field; + - the conjugate group's generator is the conjugated generator, straight from the limit + definition; + - the constant group's generator is `0` on all of `H`. +- (b) **Existential, mirroring today's form.** The definition is + `∃ A (hA : IsSelfAdjoint A), Unbounded.IsPositive A ∧ ∀ t, V t = expUnitary hA t`. + - It reads closest to the current definition and to "V = e^{itP}, P ≥ 0". + - But `conj` and `const_refl` then need the functional calculus to commute with unitary + conjugation and to send `0` to `1`. That needs new spectral-measure lemmas. +- Either way, the other form becomes a proved equivalence (`isPositiveEnergy_iff_exists_exp`), + via `stone` and `generator_expUnitary`. + +**D2. Positivity of an unbounded operator** (a new definition, `Unbounded.IsPositive`, in §10.3). +- (a) **Quadratic form (recommended).** `∀ ψ : A.domain, 0 ≤ re ⟪ψ, A ψ⟫`. + - It is elementary. + - For a symmetric `A` the inner product is real, so this is the textbook `⟪ψ, Aψ⟫ ≥ 0`. + - For a bounded `P` it agrees with Mathlib's `ContinuousLinearMap.IsPositive`, which is a short + lemma. +- (b) **Spectral.** The spectral measure is concentrated on `[0, ∞)`. + - This is the form physicists quote as the spectrum condition, but it needs self-adjointness + just to be stated. +- Recommendation: define (a), and add (b) as an optional proved equivalence for self-adjoint `A` + (stage 4b). The equivalence is not needed by any consumer. + +**D3. The bounded case.** +- Drop the bounded predicate. +- Keep backward compatibility with one lemma, `isPositiveEnergy_exp`: for a positive bounded `P`, + `t ↦ exp(itP)` has positive energy. + - Its proof computes the generator directly as `P` on all of `H`, from the derivative of + `NormedSpace.exp`. + - No spectral theory is needed. +- `exp_generator_unique` (bounded uniqueness) can stay as is; it is a true lemma about `exp`. + +**D4. Uniqueness, part (ii) of `thrm:positive-energy-api`.** +- Under D1(a) the generator is unique by definition. +- Replace (ii) by the meaningful statement: if `V t = e^{itB}` with `B` self-adjoint, then + `B = generator V`. This is the uniqueness half of `stone`. + +**D5. Scope of the vacuum spectrum condition.** +- Keep it as it is: positive energy for every future-timelike translation subgroup. +- That is equivalent to the joint energy-momentum spectrum lying in the closed forward cone. +- Formalising the joint-spectrum form needs a joint spectral measure for commuting unbounded + operators. That is out of scope; the docstring will note it as the textbook form, not as a + Restriction. + +## Stages + +1. **Scout (read-only).** + - Confirm that no other file unfolds `IsPositiveEnergy` (the grep above found none). + - Find Mathlib's derivative of `t ↦ exp(t • X)` at `0` (used in `exp_generator_unique`). + - Find `ContinuousLinearMap.IsPositive`'s API, for the bounded-agreement lemma. +2. **Blueprint** (writer, then reviewer; targeted edits to the user's chapters). + - §10.3, new nodes: + - `def:positive-unbounded-operator`; + - `lmm:positive-bounded-agrees`; + - optionally `lmm:positive-iff-spectral-support`. + - `haag-kastler-axioms.tex`: + - rewrite `def:positive-energy` in the D1 form, with no "scaffold" or "Stone-gated" wording; + - restate `thrm:positive-energy-api`: (i) trivial group, (ii) uniqueness per D4, (iii) + unitary invariance, (iv) strong continuity, plus (v) the bounded special case and (vi) the + exponential form via Stone; + - decompose any part with a nontrivial proof into its own lemma, per the small-proof + convention. + - Vacuum and ground-state nodes: change prose only. Their statements are unchanged, because + they reference `def:positive-energy`. + - Remove the stale `\leanfile{}` tags from these nodes. The convention forbids them. +3. **Lean definitions** (orchestrator; these are protected definitions). + - `Unbounded.IsPositive`, in `Spectral/Unbounded/Basic.lean`. + - The new `IsPositiveEnergy`. `PositiveEnergy.lean` then imports `Spectral/Stone/Theorem`. + - Update the module docstring, and delete the `**Restriction:**` line. + - State the API lemmas with `sorry`, then run formalizer-reviewer. +4. **Proofs** (provers, in parallel). + - Generator lemmas in `Stone/Basic.lean`: + - `generator_const_refl`: the generator of `t ↦ id` is `0` on `⊤`; + - `generator_conj`: the generator of `W V W⁻¹` is `W A W⁻¹`, with domain `W(Dom A)`; + - `generator_exp_bounded`: the generator of `exp(itP)` is `P.toPMap ⊤`. + - Then, in `PositiveEnergy.lean`: + - `isPositiveEnergy_const_refl`; + - `IsPositiveEnergy.conj`, where positivity transports under `W`; + - `IsPositiveEnergy.strongContinuous`, which is a projection; + - `isPositiveEnergy_exp`; + - `isPositiveEnergy_iff_exists_exp`, via `stone` and `generator_expUnitary`; + - the D4 uniqueness lemma. + - Optional 4b: `isPositive_iff_spectralMeasure_Iio_eq_zero`. This needs the spectral measure + to be supported on the spectrum, plus the norm identity. It is the hardest item and can be + deferred. +5. **Consumers.** + - Delete the `**Restriction:**` lines and the "Stone-gated" wording in `VacuumState.lean`, + `QuasilocalKMS.lean` and `StabilizerKMS.lean`. + - Their proofs use only `strongContinuous`, so they should compile unchanged; fix them if not. + - Grep the repo for remaining "Stone" and "scaffold" wording and fix it. +6. **Verify.** + - Build, lint, `leanblueprint checkdecls`, and `#print axioms` on the key results. + - Have the lean-auditor list the protected-definition changes since the branch point, for + the user to review. +7. **Publish locally.** + - Rebuild the PDF and web blueprint. + - Refresh the home page: the axioms page (spectrum condition), the §10.6 and §10.7 pages, the + index counts, and the Formalisation status (remove any mention of the restriction). + - Commit, then merge into `numina/aqft-in-lean`. Don't push unless asked. + +## Risks + +- **Universe and instance mismatch.** `IsPositiveEnergy` lives in `Physicslib4.AQFT`, and the + Stone API is in `Physicslib4.Spectral.Stone`, which needs `[CompleteSpace H]`. That is already + required here. +- **Conjugation lemma.** `generator_conj` changes the domain (`W(Dom A)`). Stating it as an + equation of `LinearPMap`s needs care with domains; an `∃ h, … = …` characterisation, as in + `exists_generator_eq_iff`, avoids casts. +- **Weaker definition.** The new definition is strictly weaker than the old bounded one. That is + the point, but any future theorem that silently assumed a bounded generator will no longer go + through. Today none does: the only consumer API is `strongContinuous`. + +## Estimate + +- About 3 new definitions and 8–10 lemmas. +- Most lemmas are short, because Stone's theorem carries the analysis. +- Stage 4b is the only substantial piece, and it is optional. + +## Progress log + +- 2026-10-07, Stage 1 (scout) done, on branch `numina/positive-energy`. + - Code consumers: only three statements mention `IsPositiveEnergy` (VacuumState:153, + QuasilocalKMS:109, StabilizerKMS:160). None unfolds it; the only API they use is + `hpe.strongContinuous ψ` (QuasilocalKMS:135, StabilizerKMS:186). Keeping that name and + signature means no consumer proof changes. + - Imports: no `Spectral/` or `Operators/` file imports `AQFT/`, so `AQFT/PositiveEnergy.lean` + can import `Spectral/Stone/Theorem` without a cycle. The existing `Operators.Conjugation` + import (`lieConj`, `exp_lieConj`) is still needed by `isPositiveEnergy_exp`/`conj` if kept. + - Exponential derivative: `hasDerivAt_exp_smul_const (𝕂 := ℝ) X t` (as already used in + `exp_generator_unique`) gives `generator_exp_bounded` directly. + - Mathlib positivity: `ContinuousLinearMap.IsPositive T := T.IsSymmetric ∧ ∀ x, + 0 ≤ re ⟪T x, x⟫` (Positive.lean:273); `isPositive_iff_complex` (line 457) shows that over ℂ + the symmetric conjunct is not implied by `re ≥ 0` alone (e.g. `T = i·1`). + **Refinement of D2 (needed for D2's stated property):** define + `Unbounded.IsPositive A := IsSymmetric A ∧ ∀ ψ : A.domain, 0 ≤ re ⟪(ψ : H), A ψ⟫`, mirroring + Mathlib, so that `Unbounded.IsPositive (P.toPMap ⊤) ↔ P.IsPositive` holds. For generators the + symmetric conjunct is free (`isSymmetric_generator`). + - Blueprint nodes to touch: `def:positive-energy` (haag-kastler-axioms.tex:1899, title + "bounded-generator scaffold"), `thrm:positive-energy-api` (1907, "all Stone-free"), + `def:vacuum-state` (1921, title "generator-parameterized scaffold"), `thrm:vacuum-no-stone` + (1930, title "No-Stone Consequences"; label kept, title/prose only), the Minkowski ground-state + node (2187) and the curved one (curved.tex:694). Stale `\leanfile{}` tags on 1902, 1910, 1924, + 1933. + - Home page: §10.6 page entries 587–590 carry the old titles; the axioms page does not mention + positive energy. +- 2026-10-07, Stage 2 done (writer + reviewer; REVISE then PASS). New nodes: + §10.3 `def:positive-unbounded-operator` (symmetric, density-free, and Re⟨ψ,Aψ⟩ ≥ 0), + `lmm:positive-bounded-agrees`; §10.4.1 `lmm:generator-const`, `lmm:conj-unitary-group`, + `lmm:generator-conj`, `lmm:exp-bounded-unitary-group`, `lmm:exp-bounded-hasDerivAt`, + `lmm:generator-exp-bounded`; haag-kastler-axioms.tex `lmm:positive-energy-const`, + `lmm:exp-generator-unique` (D4 form), `lmm:positive-conj`, `lmm:positive-energy-conj`, + `lmm:positive-energy-strong-continuous`, `lmm:positive-energy-exp-bounded`, + `thrm:positive-energy-iff-exp`. `thrm:positive-energy-api` kept as a summary (label is the + user's); its \lean line still names the old declarations and its \leanok was removed, as was + def:positive-energy's. Retitled def:positive-energy, def:vacuum-state, thrm:vacuum-no-stone (label + kept); "Stone-gated"/"scaffold" prose gone; stale \leanfile removed from the touched nodes; + line ≈1883 now points forward to def:vacuum-state. + Reviewer notes for stage 3: put each Lean name on its split lemma; state lmm:positive-conj as + "Dom(B) = W·Dom(A) and B = WAW⁻¹ there ⇒ B positive" to avoid building WAW⁻¹ as a LinearPMap; + `exp_generator_unique` must be restated (or a new name used) for the D4 form. Optional: the + label `thrm:vacuum-no-stone` is now a misnomer (user's call). +- 2026-10-07, Rename: `thrm:vacuum-no-stone` → `thrm:vacuum-invariance-consequences` (79f642a). +- 2026-10-07, Stage 3 done (statements; 20 `sorry`s on this branch until stage 4): + - Defs (orchestrator): `Spectral.Unbounded.IsPositive` (Basic.lean); `AQFT.IsPositiveEnergy` + rewritten as a structure (`isOneParameterUnitaryGroup`, `isStronglyContinuous`, + `isPositive_generator`); PositiveEnergy.lean now imports Stone.Theorem and Stone.Bounded. + - Statements: Unbounded/Basic `isPositive_toPMap_iff`, `IsPositive.of_conj`; Stone/Basic + `isOneParameterUnitaryGroup_refl`, `isStronglyContinuous_refl`, `generator_refl` (= 0), + `IsOneParameterUnitaryGroup.conj`, `IsStronglyContinuous.conj`, + `mem_generator_conj_domain_iff`, `generator_conj_apply`; new Stone/Bounded + `hasDerivAt_exp_smul_I`, `exists_isOneParameterUnitaryGroup_exp`, + `isStronglyContinuous_of_eq_exp`, `generator_eq_of_eq_exp`; PositiveEnergy + `isPositiveEnergy_const_refl`, `generator_eq_of_eq_expUnitary`, `IsPositiveEnergy.conj`, + `IsPositiveEnergy.strongContinuous` (same signature), `isPositiveEnergy_exp`, + `isPositiveEnergy_iff_exists_exp`. Bounded `exp_generator_unique` kept (proved). + - Consumers compile unchanged. Formalizer review FAIL → fixed the two bundled statements + (split) and the canonical `0 : H →ₗ.[ℂ] H`; its remaining finding (stale consumer docstrings + and Restriction lines) is stage 5 work. +- 2026-10-07, Stage 4 done: all 20 statements proved by 8 parallel provers (one private helper, + `tendsto_generatorQuotient_conj_iff`, in Stone/Basic). `omit [CompleteSpace H]` added to + `isPositiveEnergy_const_refl`, `IsPositiveEnergy.conj`, `IsPositiveEnergy.strongContinuous` + (unused); `Operators.Conjugation` import dropped from PositiveEnergy.lean (no longer used). + No sorry in the project; build, lint, checkdecls clean; key results depend only on propext, + Classical.choice, Quot.sound. Next: stage 5 (consumer docstrings and Restriction lines). +- 2026-10-07, Stage 5 done: docstrings rewritten in VacuumState.lean (module doc, IsVacuumState, + invariant, exists_gns_irreducible_covariant, IsVacuumStateConcrete), QuasilocalKMS.lean and + StabilizerKMS.lean (IsGroundStateForFlow, invariant, exists_strongContinuous_unitary), and the + CovariantState.lean module note. All four `**Restriction:**` lines removed; the project now has + none. No statement or proof changed. Build, lint clean. Note: CLAUDE.md cites the + positive-energy docstring as its example of a Restriction line; that example no longer exists. +- 2026-10-07, Stage 6 done: build, lint, checkdecls clean; key results on standard axioms only. + lean-auditor (`notes/agents/audits/audit-positive-energy-2026-10-07.md`): exactly two + protected changes (IsPositiveEnergy def→structure; new Unbounded.IsPositive), both as approved; + no unapproved changes, no statement regressions, no removed/renamed theorems, consumers' + statements unchanged, no sorry, no unrecorded restrictions. Fixed its one mismatch: the \lean + tag of thrm:positive-energy-api now lists the six current declarations (statement \uses + restored by hand after the status tool's strip/rewrite dropped it). lean-kit verify receipt + refreshed (164 files). CLAUDE.md Restriction example replaced (file is untracked). +- 2026-10-07, Stage 7: PDF and web blueprint rebuilt (341 pp.). Home page: entries renumbered + from the new aux (664 entries incl. conventions), 15 new entries, 4 retitled, subsection item + counts recomputed; counts now 661 declarations (150/156/252/99/4), 660 formalised, 511 results, + 471 written proofs, 510 formalised proofs, 1,143 distinct Lean names; §10.3/§10.4/§10.6 + overviews and the index status paragraph describe the unbounded positive-energy condition; + page refs checked against node pages. Jekyll builds, 11 pages, no broken links. Merged into + numina/aqft-in-lean (fast-forward, not pushed). diff --git a/notes/agents/plan-stones-theorem-2026-10-04.md b/notes/agents/plan-stones-theorem-2026-10-04.md new file mode 100644 index 0000000..506f4a0 --- /dev/null +++ b/notes/agents/plan-stones-theorem-2026-10-04.md @@ -0,0 +1,129 @@ +# Plan: Stone's Theorem section and the §10.3 additions + +Date: 2026-10-04. Toolchain: Lean / Mathlib v4.34.1. Branch: `numina/stones-theorem` off +`numina/aqft-in-lean`. Status: approved 2026-10-04; stage 1 started. + +## What the user added (uncommitted, files possibly still open in Vim) + +- `unbounded-spectral-theorems.tex`: item 4 of `prpstn:convergence-facts` (sequential + characterisation of limits, linked to `Filter.tendsto_iff_seq_tendsto`); + `lmm:self-adjoint-maximally-symmetric` (with proof); `def:hall-10.5` (functional calculus of an + unbounded self-adjoint operator). +- New `stones-theorem.tex` (§10.4, 404 lines), inserted in `content.tex` before Spacetime: + def:hall-10.11 (one-parameter unitary group), def:hall-10.13 (infinitesimal generator), + lmm:generator-symmetry-identity, thrm:bochner-integral, lmm:smooth-approximate-identity, + prpstn:calculus-facts (imported results), prpstn:hall-10.14 (exponentiating), lmm:hall-10.17, + lmm:hall-10.18 (density of the generator's domain), thrm:hall-10.15 (Stone's theorem), Summary. +- Chapter 10 renumbering: Spacetime 10.4→10.5, Minkowski HK 10.5→10.6, curved 10.6→10.7, + general covariance 10.7→10.8. + +## Existing API to build on + +- Unbounded operators are `H →ₗ.[ℂ] H` (`LinearPMap`); `IsSelfAdjoint`, `IsSymmetric`, + closure, adjoint `T†`, essential self-adjointness criterion (`isEssentiallySelfAdjoint_iff_dense_range`). +- `pmapIntegral μ f` (integral of a measurable function against a PVM) with domain + `integralDomain`; coincidence with the bounded integral; bounded integral multiplicative, + conjugation, norm identity (§10.2). +- `existsUnique_spectralMeasure_unbounded hA : ∃! μ, pmapIntegral μ id = A` — no named + spectral-measure definition yet. +- Unitary groups elsewhere in the project are `ℝ → (H ≃ₗᵢ[ℂ] H)` (`IsPositiveEnergy`, + GNS covariance). + +## Decisions (2026-10-04) + +1. User edits finished. +2. Unitary groups as `ℝ → (H ≃ₗᵢ[ℂ] H)`. +3. Long proofs (10.14, 10.18, 10.15) may be decomposed into sub-lemma nodes. +4. Of the def:hall-10.5 remarks, formalise only the bounded-`f` remark (as its own lemma); + the Summary bijection is not formalised. +5. Home pages renamed (sec10-4-spacetime → sec10-5-spacetime, etc.) with a new §10.4 page. +6. The IsPositiveEnergy follow-up waits until this work is complete. +7. (After review, 2026-10-04) Accepted: lmm:hall-10.18 rebuilt on Mathlib convolution + (`HasCompactSupport.hasDerivAt_convolution_left`, `ContDiffBump.convolution_tendsto_right_of_continuous`); + prpstn:hall-10.14 uses `tendsto_integral_filter_of_dominated_convergence` and + `Real.norm_exp_I_mul_ofReal_sub_one_le`; prpstn:calculus-facts generalised (point 2 to normed + spaces, point 3 simplified, points 4–5 dropped if unused). + +## Stages + +1. **Blueprint check and decomposition** (blueprint-reviewer, then writer with user consent). + Validate; check the new Mathlib name; check `\uses`; split the long proofs + (prpstn:hall-10.14 ~70 lines, lmm:hall-10.18, thrm:hall-10.15) into sub-lemmas, per the + project's "small proofs" convention; add Mathlib `\lean{}` names to the three imported results. +2. **Renumbering** (mechanical): Lean docstrings (17 references in 16 files), home page + (183 references; new §10.4 page; later section pages renamed). Blueprint `.tex` has no + hard-coded numbers. Historical notes are left as they are. +3. **§10.3 additions**: verify convergence-facts item 4; prove + `lmm:self-adjoint-maximally-symmetric` (short, from existing lemmas); define + `spectralMeasure hA` (from the ∃!) and the functional calculus `f(A) := pmapIntegral + (spectralMeasure hA) f`, with the bounded-`f` coincidence lemma. +4. **Stone section, definitions and easy lemmas**: one-parameter unitary group, strong + continuity, infinitesimal generator (orchestrator writes defs); generator symmetry identity; + lmm:hall-10.17; the imported results linked to Mathlib (calculus-facts points 3–4 need short + local proofs). +5. **prpstn:hall-10.14** (exponentiating): unitarity, group law, strong continuity (DCT), + derivative at 0 on Dom(A) (DCT), generator = A (maximal symmetry). +6. **lmm:hall-10.18** (Bochner averaging, mollifiers) — hardest analysis. +7. **thrm:hall-10.15** (Stone): symmetry, essential self-adjointness via the ODE argument, + uniqueness via ‖w(t)‖² constant, A = A^cl, uniqueness of B. +8. **Clean-up**: blueprint statuses, PDF/web, home page, merge. +9. **Optional follow-up (user decision)**: remove the bounded-generator Restriction on + `IsPositiveEnergy` (and VacuumState, QuasilocalKMS, StabilizerKMS) now that Stone's theorem + exists — a definition change. + +Each stage: build, lint, checkdecls, commit, progress entry here. + +## Progress log + +(empty) +- 2026-10-04, Stage 1 done: reviewer (REVISE ×2) and writer revisions applied. New labels: + def:spectral-measure, lmm:functional-calculus-bounded (§10.3); in §10.4 the section now has 35 + nodes (see stones-theorem.tex), incl. lmm:generator-spec, def:exp-unitary-group, the 10.14 / + 10.17 / 10.18 / 10.15 decompositions, lmm:convolution-facts, lmm:linear-ode-scalar, + lmm:orbit-difference-hasDerivAt, lmm:norm-const-of-symmetric-derivative. Writer dropped the + user's (unused) B_f boundedness paragraph; lmm:strongly-continuous-iff-at-zero has no + dependents. thrm:dominated-convergence-theorem \lean gained the filter-form DCT name. +- 2026-10-04, Stage 2 done: 17 Lean docstring section references shifted (10.4–10.7 → 10.5–10.8). + Home page: sec10-4..7 pages renamed to sec10-5-spacetime, sec10-6-haag-kastler, sec10-7-curved, + sec10-8-general-covariance; new sec10-4-stone.md (35 items); §10.3 page gained Lemma 187 and + items 284–286; item numbers, pages, nav bars, table and counts regenerated from the rebuilt PDF + (338 pages, 646 declarations, 606 formalised). Jekyll builds, no broken links. checkdecls flags six + ContDiffBump names (Normed / Convolution modules not yet imported); stage 4 must import + Mathlib.Analysis.Calculus.BumpFunction.{Normed,Convolution}. +- 2026-10-04, Stage 3 done: `eq_of_isSelfAdjoint_of_isSymmetric_of_le` (Basic.lean, 4 lines); + new `Spectral/Unbounded/FunctionalCalculus.lean` with `spectralMeasure`, + `pmapIntegral_spectralMeasure`, `eq_spectralMeasure_of_pmapIntegral`, + `domain_eq_integralDomain_spectralMeasure`, `functionalCalculus` (+ `_domain`, `_id`) and + `functionalCalculus_of_bddMeasurable`. All four §10.3 nodes proved/formalised; build, lint clean. + Home page still shows them as not formalised (refresh in stage 8). +- 2026-10-04, Stage 4 done: new `Physicslib4/Spectral/Stone/Basic.lean` (orchestrator defs: + `IsOneParameterUnitaryGroup` (pointwise map_zero/map_add), `IsStronglyContinuous`, + `generatorQuotient`, `generatorDomain`, `generator`). Proved: strongly-continuous-iff-at-zero, + unitary-group-inner-adjoint (inner + adjoint forms), generator-spec, generator-symmetry-identity, + linear-ode-scalar, orbit-hasDerivAt, generator-commutes, hall-10.17 (strong continuity dropped, + unused). Imported results linked and marked proved; BumpFunction imports added, so checkdecls + is clean. Build, lint clean; no sorry. +- 2026-10-06, Stage 5 done: new `Physicslib4/Spectral/Stone/Exponential.lean`. Defs `expFun`, + `expUnitary` (bounded integral via `Unitary.linearIsometryEquiv`; `functionalCalculus_expFun` + links to f_t(A)). Proved exp-unitary (any PVM on ℝ), group law, strong continuity (DCT), + functional-calculus-sub-bounded (as `(g - f)(A) = g(A) - f(A)` of LinearPMaps, via general + private PVM helpers), quotient norm identity (for all t, review dropped `t ≠ 0`), derivative at 0 + (DCT; bound (3|x|)² via `Complex.norm_exp_sub_one_le` instead of the blueprint's + `Real.norm_exp_I_mul_ofReal_sub_one_le`, to avoid an import), and prpstn:hall-10.14 as + `generator (expUnitary hA) = A`. Three proofs are 40–56 lines; candidates for the stage 8 golf. +- 2026-10-06, Stage 6 done: new `Physicslib4/Spectral/Stone/Density.lean`. Def `average` + (∫ f τ • U τ ψ). Proved averaging-translate (as `average_eq_convolution`, for every f and with + no continuity hypotheses; they were unused), averaging-in-generator-domain (Mathlib convolution + derivative), averaging-approximates (stated for any bumps with rOut → 0 along a filter), and + lmm:hall-10.18 as `HasDenseDomain (generator U)`. Build, lint, checkdecls clean. +- 2026-10-06, Stage 7 done: new `Physicslib4/Spectral/Stone/Theorem.lean`. Proved all nine + §10.4.5 nodes, ending in `stone` (thrm:hall-10.15): ∃ hA : IsSelfAdjoint (generator U), + HasDenseDomain ∧ (∀ t, U t = expUnitary hA t) ∧ uniqueness among self-adjoint B. Axioms: propext, + Classical.choice, Quot.sound only. Generalisations: orbit-inner-ode for any ε ∈ ℂ, + bounded-exp-solution-zero for any real ε ≠ 0. norm-const lemma proved via the complex inner + product ⟪w, w⟫ (terms cancel by symmetry) instead of Re/‖w‖². Remaining: stage 8 cleanup. +- 2026-10-07, Stage 8: golfed Exponential.lean (54/41/39-line proofs → 9/6/6, eight private + helpers; derivative bound now the blueprint's `Real.norm_exp_I_mul_ofReal_sub_one_le`). + Home page refreshed: 645 of 646 formalised (only Lemma 350 open), §10.3/§10.4 entries carry + their Lean names, Stone "recently completed", guide Lean-location row. Jekyll builds, no broken + links. Merged into numina/aqft-in-lean (not pushed). Stage 9 (IsPositiveEnergy) awaits a decision. diff --git a/notes/agents/plan-von-neumann-density-2026-09-30.md b/notes/agents/plan-von-neumann-density-2026-09-30.md new file mode 100644 index 0000000..151ff6e --- /dev/null +++ b/notes/agents/plan-von-neumann-density-2026-09-30.md @@ -0,0 +1,209 @@ +# Plan: a local proof of the von Neumann density theorem + +Date: 2026-09-30. Toolchain: Lean / Mathlib v4.34.1. Branch to use: a new branch off +`numina/aqft-in-lean` (e.g. `numina/von-neumann-density`). +Status: plan only. Nothing below is implemented. +Research: `notes/agents/scout/von-neumann-density-2026-09-30.md` (API inventory, estimates). + +## Goal + +Prove `Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` +(`Physicslib4/AQFT/HaagKastler/StrongDensity.lean`, blueprint `thrm:quasilocal-strongly-dense`, +`blueprint/src/sections/sec10/haag-kastler-axioms.tex` ~line 569), the project's only remaining +`sorry`, **without changing its statement**: for a unital `*`-algebra hom +`π : 𝔄 →⋆ₐ[ℂ] (H →L[ℂ] H)`, the bicommutant `π(𝔄)''` lies in the strong-operator closure of +`π(𝔄)` (strong topology = Mathlib's `PointwiseConvergenceCLM`, via `UniformConvergenceCLM.ofFun` +on finite sets). Then remove its `**Restriction:**` line and mark the blueprint node proved. + +Nothing else in the project depends on the theorem, so every stage keeps the build green. + +## Mathematical route (Murphy, Lemma 4.1.4) + +1. **One vector.** For `ξ ∈ H` let `K = closure (π(𝔄) ξ)`. `K` is invariant under every `π a` + and every `π a* = π (star a)`, so its orthogonal projection `P` commutes with `π(𝔄)`, i.e. + `P ∈ π(𝔄)'`. For `T ∈ π(𝔄)''`, `T P = P T`; `ξ = π 1 ξ ∈ K` (unitality), so `T ξ ∈ K`: + `T ξ` is a limit of vectors `π a ξ`. +2. **Finitely many vectors.** Amplify: `πⁿ(a) = diag(π a, …, π a)` on `ℓ²(Fin n; H)`. If + `T ∈ π(𝔄)''` then `diag(T) ∈ (πⁿ(𝔄))''` (every `S ∈ (πⁿ(𝔄))'` is an `n × n` block matrix with + entries in `π(𝔄)'`, and `T` commutes with each entry). Apply step 1 to `πⁿ` and the tuple + `(ξ₁, …, ξₙ)`: one `a` approximates `T ξᵢ` by `π a ξᵢ` for all `i` simultaneously. +3. **Strong topology.** Basic neighbourhoods of `T` are given by finitely many vectors and an + `ε`, so step 2 puts an element of `π(𝔄)` in every neighbourhood of `T`. + +## Design decisions for the user (settle before Stage 2) + +1. **Finite amplification.** DECIDED (2026-10-01): option (a). `GNS/Amplification.lean` and `GNS/DirectSum.lean` require + `[CStarAlgebra A]`, but the target has a bare `*`-algebra `𝔄`. Options: + - (a) a new `Fin n`-indexed amplification for a single `π`, built directly on the fully + general `lpDiag` (`Physicslib4/Operators/LpDiagonal.lean`) with the bound `‖π a‖` itself + (recommended: additive, touches nothing existing); + - (b) generalise `DirectSum.directSumFun`/`directSum` from `[CStarAlgebra A]` to an explicit + uniform bound hypothesis (more general, but changes existing signatures). +2. **Where the new lemmas live.** DECIDED (2026-10-01): the recommendation. Recommendation: the general operator-theory lemma (reducing + subspace) in `Physicslib4/Operators/ReducingSubspace.lean`; the amplification and density + lemmas in a new `Physicslib4/Operators/DensityTheorem.lean` (or in `GNS/Amplification.lean` + if option (b) is chosen); `StrongDensity.lean` keeps only the final assembly. +3. **Kaplansky density** (self-adjoint approximants) stays out of scope, as the blueprint says. + DECIDED (2026-10-01): out of scope. +4. **Blueprint placement.** DECIDED (2026-10-01): a new subsection "The von Neumann density + theorem" in `haag-kastler-axioms.tex`, just before `thrm:quasilocal-strongly-dense`. + +## Stages + +Each stage ends with `lake build`, `lake lint`, `leanblueprint checkdecls`, a commit, and a +progress entry in this file. New `def`s are blocked for agents by `.claude/lean-policy.json`, so +the orchestrator writes every `def`; provers write theorems. + +### Stage 1: blueprint decomposition (fuse:blueprint + fuse:blueprint-reviewer) + +The node `thrm:quasilocal-strongly-dense` currently says it is "deliberately not decomposed +further and not formalized". Replace its proof by a decomposition with `\uses{}` edges, adding +lemma nodes (in `haag-kastler-axioms.tex`, just before the theorem, or in a chapter-10 operator +section if one fits better): +- `lmm:reducing-subspace-projection-commutes`: a closed subspace invariant under `T` and `T*` + has orthogonal projection commuting with `T`. +- `lmm:cyclic-subspace-reduces`: `closure(π(𝔄)ξ)` is invariant under `π(𝔄)` (and hence under + adjoints, since `π` is a `*`-homomorphism). +- `lmm:bicommutant-single-vector`: for `T ∈ π(𝔄)''`, `Tξ ∈ closure(π(𝔄)ξ)`. +- `def:finite-amplification`: `πⁿ(a) = diag(π a, …)` on `ℓ²(Fin n; H)`. +- `lmm:commutant-of-amplification-entries`: every `S ∈ (πⁿ(𝔄))'` has block entries in `π(𝔄)'`. +- `lmm:diagonal-in-amplified-bicommutant`: `T ∈ π(𝔄)'' ⇒ diag(T) ∈ (πⁿ(𝔄))''`. +- `lmm:bicommutant-finite-vectors`: for `T ∈ π(𝔄)''`, finitely many `ξᵢ` and `ε > 0`, some + `a` has `‖Tξᵢ − π a ξᵢ‖ < ε` for all `i`. +Deliverable: reviewed blueprint (validate clean apart from the known `conv:` errors). + +### Stage 2: the one-vector case (Lean; can run before any `def` exists) + +- `reducing_subspace_commutes_projection` (general, `Physicslib4/Operators/`): for `K` closed, + `MapsTo T K K` and `MapsTo (adjoint T) K K`, `Commute T K.starProjection` (or the + `orthogonalProjection` form). First search Mathlib live (`lean_loogle`, leansearch) for an + existing statement phrased via `IsIdempotentElem`, `IsStarProjection`, `ker`/`range` — the + scout's grep found none. Proof: `x = y + z`, `y ∈ K`, `z ∈ Kᗮ`; `T y ∈ K`; `T z ∈ Kᗮ` because + `⟪T z, k⟫ = ⟪z, T* k⟫ = 0`. About 10–15 lines, possibly split in two. +- `cyclic_subspace_reduces`: invariance of `closure (range (fun a ↦ π a ξ))` (as a closed + submodule: `(Submodule.span …).topologicalClosure` or the range of `π · ξ` as a submodule, + since `π` is linear) under `π a` and `adjoint (π a) = π (star a)` (`map_star`, continuity, + `closure_mono`/`Submodule.topologicalClosure_mono`). About 5–10 lines. +- `mem_closure_of_mem_bicommutant` (single vector): from the two lemmas and `map_one`. About + 10 lines. +Parallelism: the first two lemmas are independent (two provers); the third follows. +Deliverable: the one-vector case proved, target still `sorry`. + +### Stage 3: the finite amplification (orchestrator defs + provers) + +- Orchestrator writes (decision 1a) `finiteAmplification π n : 𝔄 →⋆ₐ[ℂ] (lp (fun _ : Fin n ↦ H) 2 + →L[ℂ] lp (fun _ : Fin n ↦ H) 2)` from `lpDiag (fun _ ↦ π a) (norm_nonneg _) (fun _ ↦ le_rfl)`, + with the `*`-algebra-hom fields as sorry'd theorems (`map_one`, `map_mul`, `map_add`, + `map_smul`/`commutes`, `map_star`) delegated to a prover (they follow `lpDiag_one/_mul/_add/ + _smul/_star`, exactly as `GNS/DirectSum.lean` does for `directSum`). +- Also a `def` for the diagonal operator `diag T := lpDiag (fun _ ↦ T) …` if convenient, and a + way to build the tuple `(ξ₀, …, ξₙ₋₁)` as an element of `lp _ 2` over `Fin n` (every function + on a finite type is in `lp`: `memℓp_gen`/`Memℓp.of_finite`-type lemma; confirm the name). +- Prove `finiteAmplification_apply` and the reusable commutant facts; `intertwines_single` and + `summandProj_mem_commutant` from `GNS/DirectSum.lean` transfer verbatim (they use no + C*-structure). +Deliverable: amplification with its API, no sorry. + +### Stage 4: the diagonal lemma (hardest step; provers) + +- Block entries: `S_{jk} := lpEvalCLM j ∘L S ∘L lp.singleContinuousLinearMap ℂ _ 2 k`; show + `S ∈ (πⁿ(𝔄))' ⇒ S_{jk} ∈ π(𝔄)'` (unfold with `lpDiag_apply_coe`, `lp.single_apply`). +- Finite decomposition `x = ∑ k, lp.single 2 k (x k)` for `Fin n`: from `lp.hasSum_single` + (`Mathlib/Analysis/InnerProductSpace/l2Space.lean`) and `hasSum_fintype` / `HasSum.unique`. +- `(S x) j = ∑ k, S_{jk} (x k)`, then `diag(T) S = S diag(T)` by commuting `T` past each + `S_{jk}`; conclude `diag(T) ∈ (πⁿ(𝔄))''`. +Split into at least three lemmas (entries, decomposition, commutation); estimate 40–80 lines. +Deliverable: `lmm:diagonal-in-amplified-bicommutant` proved. + +### Stage 5: assembly + +- `bicommutant_finite_vectors`: apply the one-vector case to `πⁿ`, `diag(T)` and the tuple; + read off the coordinates (`lpEvalCLM`), and use `‖(v)ᵢ‖ ≤ ‖v‖` in `lp` to get the uniform + approximation. About 15–20 lines. +- `dense_range_in_bicommutant`: unfold `UniformConvergenceCLM.ofFun` (a type-level identity); + use `mem_closure_iff_nhds_basis'` with the pointwise-convergence neighbourhood basis + (`PointwiseConvergenceCLM.hasBasis_nhds_zero` is centred at `0`: translate by `T`, or find an + at-a-point version / use `UniformConvergenceCLM` uniformity); pick the finite set and `ε` from + the basic neighbourhood and apply the previous lemma. About 10–15 lines. +- Remove the `**Restriction:**` line and the "left unproved" sentences from the + `StrongDensity.lean` docstrings; mark `thrm:quasilocal-strongly-dense` and the Stage 1 lemmas + proved; `#print axioms dense_range_in_bicommutant` must show only the standard three. +Deliverable: no `sorry` in the project. + +### Stage 6: clean-up + +- Blueprint: update the theorem's text (it is now formalized), rebuild PDF/web, refresh + `home_page/index.md` (counts, the "not formalised" list, renumbering), `checkdecls`. +- Optional: derive `GNS/Amplification.lean` / `DirectSum.lean` facts from the new general + amplification if it removes duplication; run the golfer on the new files. +- Merge the branch into `numina/aqft-in-lean`. + +## Risks and mitigations + +- **Reducing-subspace lemma may exist in Mathlib under another phrasing**: search first + (Stage 2); if found, Stage 2 shrinks to glue. +- **`lp` bookkeeping over `Fin n`** (coercions, `Memℓp` for finite types, `lp.single`): budget + extra time in Stage 4; an alternative carrier is `PiLp 2 (fun _ : Fin n ↦ H)` (Mathlib's + finite ℓ² product, an inner-product space with `EuclideanSpace`-style API), which may make + block entries (`ContinuousLinearMap.proj`/`single`) simpler — but then `lpDiag` would not be + reused. Decide at the start of Stage 3. +- **Neighbourhood basis centred at 0**: the translation step in Stage 5 may need a small lemma. +- **Guard hook**: every new `def` is written by the orchestrator (or approved by the user). +- **Statement must not change**: if a stage suggests the statement is inconvenient, prove a + convenient restatement as a separate lemma instead. + +## Suggested session breakdown + +1. Stage 1 (blueprint) and the design decisions. +2. Stage 2 (one-vector case), plus Stage 3 defs. +3. Stage 3 proofs and Stage 4 (diagonal lemma), possibly two sessions. +4. Stage 5 (assembly) and Stage 6 (clean-up, merge). + +Total estimate: about 130–200 Lean lines in about 7–10 lemmas plus 1–2 definitions. + +## Progress log + +- 2026-10-01, Stage 1 (branch `numina/von-neumann-density`, not committed): new subsection + "The von Neumann Density Theorem" in `haag-kastler-axioms.tex` (lines ~568–683) with + lmm:reducing-subspace-projection-commutes, lmm:cyclic-subspace-reduces, + lmm:bicommutant-single-vector, def:finite-amplification, lmm:finite-amplification-star-hom, + lmm:commutant-of-amplification-entries, lmm:amplification-block-expansion, + lmm:diagonal-in-amplified-bicommutant, lmm:bicommutant-finite-vectors, + lmm:strong-neighbourhood-basis; thrm:quasilocal-strongly-dense's proof rewritten (statement + unchanged); new heading "Lorentz Covariance and the Haag--Kastler Net" after it (user choice). + Reviewer: REVISE then PASS. Changes from the plan: the amplification is indexed by a finite + type ι (ι = the finite set s from the neighbourhood basis), not `Fin n`; the one-vector lemmas + are stated for an arbitrary complex Hilbert space; the strong neighbourhood basis at T is its + own lemma. Optional reviewer notes: `norm_sub_rev` orientation in the finite-vectors lemma; + cite `Submodule.topologicalClosure_coe`; phrase the basis lemma on the `ofFun` image. +- 2026-10-01, Stage 1 committed as `76fc546`. Stage 2 done (not committed): new + `Physicslib4/Operators/ReducingSubspace.lean` (`commute_starProjection_of_invariant`, by hand — + no Mathlib lemma found) and `Physicslib4/Operators/DensityTheorem.lean` + (`starProjection_cyclic_mem_centralizer`, `apply_mem_closure_of_mem_bicommutant`), all proved, + standard axioms. The cyclic subspace is phrased as + `(Submodule.span ℂ (Set.range fun a ↦ ρ a ξ)).topologicalClosure`; the conclusion uses + `closure (Set.range fun a ↦ ρ a ξ)`. `[StarModule ℂ 𝔄]` dropped from these lemmas (unused). + Next: Stage 3 (finite amplification defs by the orchestrator). +- 2026-10-01, Stage 2 committed as `730a5d7`. Stage 3 done (not committed): in + `DensityTheorem.lean`, `ampDiag ι T` (diag(T) on ℓ²(ι; E) via `lpDiag`), `diagAmplification ι ρ` + (a `StarAlgHom`, all fields proved directly, following `GNS.directSum`), `toLp2` (finite family + as an element of ℓ², via `Memℓp.all`), with simp lemmas. Indexed by any type ι (finiteness only + for `toLp2`). def:finite-amplification and lmm:finite-amplification-star-hom marked proved. + Next: Stage 4 (block entries, block expansion, diagonal-in-bicommutant). +- 2026-10-01, Stage 3 committed as `198c621`. Stage 4 done (not committed): `blockEntry` def + (orchestrator), `blockEntry_apply`, `blockEntry_mem_centralizer`, `apply_eq_sum_blockEntry` + (via `lp.hasSum_single` + `hasSum_fintype`), `ampDiag_mem_bicommutant` (statement generalised + to `[Finite ι]` without `DecidableEq`; `classical` + `Fintype.ofFinite` inside). All proved. + Next: Stage 5 (finite-vectors lemma, strong neighbourhood basis, assembly of the target). +- 2026-10-01, Stage 4 committed as `b3f5cdf`. Stage 5 done (not committed): + `exists_forall_norm_sub_lt_of_mem_bicommutant` (DensityTheorem.lean), `hasBasis_nhds_ofFun` and + `dense_range_in_bicommutant` (StrongDensity.lean) proved; the Restriction paragraph and + "left unproved" sentences removed. `[StarModule ℂ 𝔄]` dropped from StrongDensity's variables + (unused; the target is now slightly more general — the only change to its statement) and + `[CompleteSpace H]` omitted from `hasBasis_nhds_ofFun`, as required by `lake lint`. + No `sorry` remains in the project; `#print axioms dense_range_in_bicommutant` = standard three. + Remaining: Stage 6 (blueprint text/PDF/web, home page, golf optional, merge). +- 2026-10-01, Stage 5 committed as `0642785`. Stage 6: blueprint PDF/web rebuilt, checkdecls + green, home page refreshed (`1a073c1`: 607 declarations, 606 formalised, no sorry), and + `numina/aqft-in-lean` fast-forwarded to `numina/von-neumann-density`. Plan complete; optional + golf of the new files not done. diff --git a/notes/agents/pre-commit-checklist.md b/notes/agents/pre-commit-checklist.md new file mode 100644 index 0000000..0d8d7b6 --- /dev/null +++ b/notes/agents/pre-commit-checklist.md @@ -0,0 +1,49 @@ +# Pre-commit checklist for Lean work in physicslib4 + +Standing routine for the orchestrator and any specialist landing Lean changes. +Added 2026-09-18 after `lake lint` was found never to have been run: commits +`0ac363f` (previous session) and this session's commits all landed without it, and +the repo currently fails `lake lint` with 9 pre-existing errors. + +## Run before every commit + +1. `lake build` — must succeed. Note this also runs Mathlib's in-elaboration + linters, because `lakefile.toml` sets `weak.linter.mathlibStandardSet = true`. + That is NOT the same as step 2. +2. `lake lint` — the environment-linter pass (`lintDriver = "batteries/runLinter"` + in `lakefile.toml`). Checks `unusedArguments`, `simpNF`, docstrings and 11 others. + **Compare the error count against the pre-change baseline; do not just eyeball it.** +3. `lean_verify` on each new/changed theorem — axioms must be only `propext`, + `Classical.choice`, `Quot.sound`. Anything else, especially `sorryAx`, is a stop. +4. `grep -c sorry` on each touched file — count must not rise. +5. `python3 ~/.claude/lean-kit/lean_guard.py check` — no protected changes. + Two flags for untracked `.claude/CLAUDE.md` and `.claude/lean-policy.json` are + pre-existing noise, present since before 2026-09-17; confirm they are not in the + commit rather than assuming. +6. `lake exe mk_all` — only needed when a **new file** is added; adding declarations + to an existing file does not require it. Always inspect `git diff Physicslib4.lean` + afterwards rather than committing it blind: `mk_all` globs the tree and would add + any `scratch_*.lean` to the root import list, which `.claude/CLAUDE.md` says to ignore. +7. `lake exe checkdecls blueprint/lean_decls` — after any `\lean{}` tag change. + (`leanblueprint checkdecls` is a wrapper around this; the wrapper is not always on + PATH. Regenerate `blueprint/lean_decls` with `leanblueprint web` first, or the check + passes vacuously against a stale file.) + +## Pitfalls actually hit + +- **Never pipe a check into `tail`/`head` and read the exit code.** `lake lint | tail` + reports `tail`'s status, not lint's. This produced a false "exit 0" on 2026-09-18 when + `lake lint` was really exiting 1. Redirect to a file and check `$?`, or use `PIPESTATUS`. +- `lake lint` exits **1** when it reports errors, so it is CI-usable as-is. +- `ripgrep` is not installed on this machine: `lean_local_search` and `lean_verify`'s + source-scan half degrade. Use `grep`. + +## Not enforced automatically + +There is no pre-commit hook (`.git/hooks/` has only stock `.sample` files) and no CI +workflow running lint. `.git/*`, `.github/*`, `.claude/*` and `CLAUDE.md` are protected +by `.claude/lean-policy.json`, so agents cannot add that enforcement — it must come from +a human. Suggested text to add to `.claude/CLAUDE.md` under `## Build`: + + - `lake lint` before committing; it exits 1 on findings. Current baseline: 9 + pre-existing `unusedArguments` errors. Do not let the count rise. diff --git a/notes/agents/proposals/unused-arguments-borelclasses.md b/notes/agents/proposals/unused-arguments-borelclasses.md new file mode 100644 index 0000000..fcf6801 --- /dev/null +++ b/notes/agents/proposals/unused-arguments-borelclasses.md @@ -0,0 +1,89 @@ +# Proposals: `unusedArguments` in `Physicslib4/Spectral/BorelClasses.lean` + +Author: lean-simplifier agent, for kdavis@alum.mit.edu. +Scope note: `BorelClasses.lean` is outside this task's edit allowlist +(`Physicslib4/Spectral/Unbounded/{Basic,Spectrum}.lean` only), so nothing in this +file was changed. These are proposals only. + +## 1. `L0` (line ~279) — unused `[MeasurableSpace X]` + +``` +def L0 (X : Type*) [TopologicalSpace X] [MeasurableSpace X] : Set (Set X) := + {E | ∃ (f : ℕ → C(X, ℝ)) (C : ℝ), (∀ n x, ‖f n x‖ ≤ C) ∧ + ∀ x, Tendsto (fun n => f n x) atTop (𝓝 (E.indicator (1 : X → ℝ) x))} +``` + +The body only mentions `C(X, ℝ)` (needs `TopologicalSpace X`) and pointwise +convergence of real-valued functions; no `MeasurableSpace X` structure is used to +build the set. The instance is carried purely because later lemmas +(`measurableSet_of_mem_L0`, `isSetAlgebra_L0`, ...) state facts about `MeasurableSet` +for the *same* `X`, and putting `[MeasurableSpace X]` on `L0` lets those statements +read `L0 X` without re-deriving the instance — but Lean's elaborator does not need +that: instance arguments are synthesized automatically, so every call site `L0 X` +already resolves the ambient `[MeasurableSpace X]` from its own `variable` block +whether or not `L0`'s signature demands it. + +**Assessment.** Dropping `[MeasurableSpace X]` from `L0`'s signature: +- does not change the set `L0 X` computes for a fixed `TopologicalSpace X` (the + instance plays no role in the body), so it is a genuine simplification, not a + generalization or restriction; +- does not break any call site's *syntax*: `L0 X` is written without the instance + argument everywhere it is used (`empty_mem_L0`, `compl_mem_L0`, `union_mem_L0`, + `measurableSet_of_mem_L0`, `isClosed_mem_L0`, `isSetAlgebra_L0`, and the + `MeasurableSpace.generateFrom (L0 X)` uses near the end of the file), because those + sites already have their own `[MeasurableSpace X]` in scope via `variable`; +- is orthogonal to the docstring's point about *not* re-asserting `MeasurableSet E` + in the predicate (that is about a conjunct inside the set-builder, not about the + type-class argument on `L0` itself), so the docstring would not need to change in + substance. + +**Recommendation.** Safe to drop `[MeasurableSpace X]` from `L0`'s signature (leave +`[TopologicalSpace X]`). This is a `def` signature change to a committed +declaration — a design decision reserved for the user per `.claude/CLAUDE.md` +("Definitions are design decisions... Agents may propose changes to them but not +make them") and blocked outright for edits to existing declarations by +`.claude/lean-policy.json`'s guard (a def-signature diff is flagged as "changes the +definition of the existing def `L0`"). No downstream statement changes are needed +if applied, since every `L0 X` occurrence already infers the instance from context. + +## 2. `isSetAlgebra_L0` (line ~485) — unused `[CompactSpace X]` and `[BorelSpace X]` + +``` +theorem isSetAlgebra_L0 : IsSetAlgebra (L0 X) ∧ ∀ U : Set X, IsOpen U → U ∈ L0 X := + ⟨⟨empty_mem_L0, fun {_} h => compl_mem_L0 h, fun {_ _} h h' => union_mem_L0 h h'⟩, + fun _U hU => by + simpa using compl_mem_L0 (isClosed_mem_L0 hU.isClosed_compl)⟩ +``` + +This sits in `section Compact` (`variable {X : Type*} [MetricSpace X] [CompactSpace X] +[MeasurableSpace X] [BorelSpace X]`), but its proof only calls `empty_mem_L0`, +`compl_mem_L0`, `union_mem_L0` (all proved in `section Topological`, needing only +`[TopologicalSpace X] [MeasurableSpace X]`) and `isClosed_mem_L0` (proved in this +same `section Compact`, but with a *local* `omit [CompactSpace X] [BorelSpace X] in` +already in front of it at line 415, because its own proof only needs +`[MetricSpace X]`). So `isSetAlgebra_L0` genuinely does not need `CompactSpace` or +`BorelSpace`; only `MetricSpace` (for `isClosed_mem_L0`) survives. + +The theorem's docstring ("`𝓛₀` is an algebra of sets and contains every open subset +of `X`. This blueprint node is exactly the conjunction of `empty_mem_L0`, +`compl_mem_L0`, `union_mem_L0` and `isClosed_mem_L0`...") does not itself reason +about `BorelSpace X`; it just names the four lemmas being conjoined. So there is no +docstring text that would need to change. + +**Assessment.** Mechanically this is exactly the same shape as the existing +`omit [CompactSpace X] [BorelSpace X] in` already sitting above `isClosed_mem_L0` +two lemmas earlier in the same file — i.e. it is the file's own established house +style, not a new pattern. Adding it here would be `omit`-only and would not touch +the docstring or proof body. + +**Recommendation.** Add `omit [CompactSpace X] [BorelSpace X] in` immediately above +`theorem isSetAlgebra_L0`, matching the precedent at `isClosed_mem_L0`. This file is +outside this task's write allowlist, so it is left as a proposal; note also that +(per this session's separate finding in `Unbounded/Basic.lean` and +`Unbounded/Spectrum.lean`) the project's write guard treats inserting an +`omit ... in` line before a *committed* theorem as "changes the statement of the +existing theorem" and blocks it textually, even though it changes nothing +semantically. Whoever applies this should expect the guard to block a +`lean-simplifier`/`lean-prover` agent from making the edit directly; a human commit, +or a policy adjustment acknowledging `omit ... in` insertions as non-substantive, +would be needed first. diff --git a/notes/agents/review-2026-09-25-sec10.1-10.7.md b/notes/agents/review-2026-09-25-sec10.1-10.7.md new file mode 100644 index 0000000..d11e497 --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.1-10.7.md @@ -0,0 +1,209 @@ +# Review: Blueprint §10.1 (GNS Construction Details) and §10.7 (General Covariance) + +Follow-up to `notes/agents/review-2026-09-sec10.1-10.7.md`. Read-only review; no +`.lean`/`.tex` files were modified. + +## Scope + +- `blueprint/src/sections/sec10/gns-construction-details.tex` (§10.1) +- `blueprint/src/sections/sec10/general-covariance-in-curved-spacetime.tex` (§10.7) +- `Physicslib4/GNS/{Basic,Construction,NullSpace,CauchySchwarz}.lean` +- `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` +- Direct dependencies read in full or in the relevant part: `Physicslib4/AQFT/HaagKastlerCurved/{IdentityComponent,Net,Isotony,IsometricCovariance,Concrete}.lean`, + `Physicslib4/Spacetime/CrossMetricIsometry.lean`, and the + `haag-kastler-axioms-in-curved-spacetime.tex` entries for + `def:haag-kastler-net-in-curved-spacetime` / `def:isometric-covariance-in-curved-spacetime` + (pulled in transitively by `def:net-equivalence-in-curved-spacetime`). + +## Method + +- Read both blueprint sections in full and cross-referenced every `\lean{...}` tag + against the cited Lean declaration. +- Read `Physicslib4/GNS/{Basic,Construction,NullSpace,CauchySchwarz}.lean` and + `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` in full; read + `IdentityComponent.lean`, the relevant part of `Net.lean` (`HaagKastlerNet`, + `commIsotony*`), `IsometricCovariance.lean`'s main definition, and the + `pullback_alexandrovBasis_image` region of `CrossMetricIsometry.lean`. +- **Tool-verified**: `blueprint/lean_decls` contains every `\lean{}` name cited by + the two sections in scope (checked all 14 names by grep). +- **Tool-verified**: `lake env lean` on a scratch file importing the five GNS/ + GeneralCovariance files and running `#print axioms` on `gns_construction`, + `gns_unique`, `lmm1`, `lmm2`, `cauchy_schwarz_inequality`, + `pullbackCarrierEquiv_apply`, `toAbstractIdentityComponent_pullback_isBasisSet`, + `IsGenerallyCovariant` — all report only `[propext, Classical.choice, + Quot.sound]`. This also confirms the tree compiles as-is (no stale `.olean`). +- **Tool-verified**: `grep`/`rg` for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by`, `nolint`, `Restriction:` across the + scoped files. +- **Tool-verified**: `python3 ~/.claude/lean-kit/lean_guard.py check --base da0c971` + (the commit of the previous review's last acted-on fix) to enumerate protected + changes since then, then `git show ` on each to read the diffs. +- Everything else (statement-faithfulness judgments, `\uses{}` accuracy, the + blueprint's own proof steps) was judged by reading. + +## Status of previous findings + +| # | Previous finding | Status | +|---|---|---| +| Major 1 | `thrm:gns-construction-theorem`'s `\lean{}` tag omitted `gns_unique` | **Fixed** (commit `da0c971`). The tex now reads `\lean{Physicslib4.GNS.gns_construction, Physicslib4.GNS.gns_unique}` (`gns-construction-details.tex:42`), and `gns_unique` is a real, sorry-free, clean-axiom theorem (`Physicslib4/GNS/Construction.lean:162-249`), tool-verified. | +| Major 2 | `IsGeodesic := True` restriction not marked with the `Restriction:` convention | **Fixed** (commit `d51edaf`, predates this session but confirmed still in place). `Physicslib4/Spacetime/Causality.lean:75-79` now carries `**Restriction:** IsGeodesic is True, ...`, tool-verified by grep. | +| Minor 3 | Stale `verify-receipt.json` (didn't touch scope at the time) | **Regressed to a live concern** — see Medium finding below: the receipt is now stale *and* the scope files themselves have changed since it. | +| Minor 4 | `nolint unusedArguments` on `IsGeodesic` is justified | Unchanged, still justified. | +| Lean quality note | Duplicated private `State.toPositiveLinearMap` in `Construction.lean` and `NullSpace.lean` | **Fixed** (commit `da0c971`). Both files now call the single public `Physicslib4.GNS.State.toPositiveLinearMap` in `GNS/Basic.lean:87-102`; the two file-local copies were deleted. | + +The task description's other claimed fix — "general covariance now stated over +`toAbstractIdentityComponent`" — is confirmed below as a new, correct change +(commit `bc0d8c5`), not something the previous memo had flagged as broken (the +previous memo's statement audit had called this node a plain "match" against a +`toAbstract` bridge that, on inspection, used the *full* isometry group rather +than the identity component Axiom 5 asks for; `bc0d8c5` closes that gap). + +## Findings + +### Medium + +**M1. `verify-receipt.json` is now stale *for the audited scope itself*, not +just elsewhere in the repo.** + +`.git/lean-kit/verify-receipt.json` records `lake build` + `lake lint` success at +`2026-09-18T14:08:28+00:00`. `HEAD` is `2dff159` (2026-09-25). Unlike the +situation at the time of the previous review, commits since the receipt *do* +touch the audited scope: +``` +$ git log --oneline --since=2026-09-18T14:08:28+00:00 -- Physicslib4/GNS \ + Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean \ + Physicslib4/AQFT/HaagKastlerCurved/IdentityComponent.lean \ + blueprint/src/sections/sec10/gns-construction-details.tex \ + blueprint/src/sections/sec10/general-covariance-in-curved-spacetime.tex +bc0d8c5 State general covariance over the identity-component bridge +da0c971 Fix §10.1 review findings +224e76b State curved Axiom 5 for the Axiom 2 isotony family; drop hcompat +``` +No `.git/lean-kit/approvals.json` exists, so none of this is covered by a +recorded approval either. This is process bookkeeping, not a soundness gap — I +independently recompiled the affected declarations with `lake env lean` (see +Method) and got clean results — but the project's own `verify_commands` gate +(`lake build`, `lake lint`) has not actually been re-run since these three +commits, and `lake lint` in particular is not something my `lake env lean` +check exercises (linter warnings, e.g. new `nolint`-worthy declarations, would +not show up). + +*Suggested fix*: re-run `lake build && lake lint` (or +`lean_guard.py verify`) and refresh the receipt. + +### Low + +**L1. `def:general-covariance-in-curved-spacetime`'s `\uses{}` list does not +directly cite `def:haag-kastler-net-in-curved-spacetime`, even though the +node's own statement (`\mathrm{HaagKastlerNet}(L.\mathtt{toAbstractIdentityComponent})`) +names it and the commit under review (`bc0d8c5`) changed exactly which +`HaagKastlerNet`-producing bridge is used.** + +The current list is +`\uses{def:net-equivalence-in-curved-spacetime, def:pullback-metric, +def:lorentzian-spacetime, thrm:pullback-is-lorentzian-spacetime, +lmm:pullback-preserves-future-orientation, +lmm:cross-metric-isometry-preserves-basis-sets, def:cross-metric-isometry}` +(`general-covariance-in-curved-spacetime.tex:45`). `def:haag-kastler-net-in-curved-spacetime` +is reachable transitively (`def:net-equivalence-in-curved-spacetime` already +`\uses`s it), so this is not a broken dependency graph, and it is not a +blocking issue. But given that this session's fix was precisely about which +`HaagKastlerNet` bridge (`toAbstract` vs. `toAbstractIdentityComponent`) is +plugged in here, and the node's remarks discuss Axiom 5 +(`def:isometric-covariance-in-curved-spacetime`) by name (`\ref`, not `\uses`), +a direct edge to `def:haag-kastler-net-in-curved-spacetime` (and arguably to +`def:isometric-covariance-in-curved-spacetime`) would make the dependency +graph self-documenting for exactly the point this fix addressed. + +*Suggested fix*: add `def:haag-kastler-net-in-curved-spacetime` (and optionally +`def:isometric-covariance-in-curved-spacetime`) to this node's `\uses{}` list. +No Lean change needed. + +**L2. Out-of-scope churn flagged by the guard, noted only for completeness.** + +`lean_guard.py check --base da0c971` also flags `Physicslib4/Spacetime/Curves.lean` +(`PathEquiv` made an equivalence relation, commit `388de55`) and two +`Physicslib4/Spectral/Unbounded/AbstractCalculus.lean` changes — none of these +are in §10.1/§10.7's scope (`PathEquiv` sits under the geodesic-placeholder +chapter-10.4 material the previous review already audited; `Spectral/Unbounded` +is chapter 9). Not investigated further here; flagged so a future audit of +those sections knows to check them. The guard also flags `.claude/CLAUDE.md` +and `.claude/lean-policy.json` as "changes [to] a protected file" relative to +`da0c971`, but `.claude/` is untracked in git (`git status` shows `?? .claude/`) +— this reads as a harness/tooling artifact (the whole directory is new to git, +not edited content), not a real policy-file edit, but it's worth someone +confirming `.claude/` is intentionally gitignored rather than accidentally +never committed. + +## Blueprint-math issues + +None found. As in the previous review, the GNS construction proof (existence, +representation, cyclic vector, faithfulness, uniqueness-up-to-unitary-equivalence) +and the Cauchy-Schwarz / null-space lemma proofs are internally consistent, and +§10.7's remarks (postulate-not-theorem, the dilation counterexample motivating +the geometric-not-causal specification of the morphism, the $\psi$-vs-$\psi^{-1}$ +direction, general covariance as a property of the section rather than a sixth +axiom) are all correctly reflected by the Lean encoding, verified by reading +`GeneralCovariance.lean` and `IdentityComponent.lean` against the tex line by +line. One small, purely cosmetic wording fix landed elsewhere in chapter 10 +during this window (`⊂` → `⊆` for Axiom 2's inclusion in +`haag-kastler-axioms-in-curved-spacetime.tex` and `haag-kastler-axioms.tex`, +flagged by the guard) — correct and out of scope. + +## Statement audit (unchanged classifications, re-verified) + +| Blueprint node | Lean | Classification | +|---|---|---| +| `def:state` | `GNS.State`, `GNS.State.IsFaithful` | match | +| `def:cyclic-vector` | `GNS.IsCyclicVector` | match | +| `thrm:gns-construction-theorem` | `GNS.gns_construction`, `GNS.gns_unique` | **match** (tagging gap from the previous review is fixed) | +| `lmm:cauchy-schwarz-inequality` | `GNS.cauchy_schwarz_inequality`, `GNS.omega_star_swap_conj` | match (deliberately weaker hypotheses than `State`, as the blueprint's own lemma statement requires) | +| `lmm:lmm1` | `GNS.lmm1` | match | +| `lmm:lmm2` | `GNS.lmm2` | match | +| `def:net-equivalence-in-curved-spacetime` | `HaagKastlerCurved.NetEquivalence` | match | +| `def:general-covariance-in-curved-spacetime` | `HaagKastlerCurved.NetTheory`, `IsGenerallyCovariant`, `LorentzianSpacetime.pullbackCarrierEquiv(_apply)`, `toAbstractIdentityComponent_pullback_isBasisSet` | **match**, and now correctly instantiated over the identity-component bridge (`bc0d8c5`), matching Axiom 5's "isometries connected to the identity" | + +No "Lean assumes more", "Lean concludes less", "different objects", or "edge +cases differ" items were found among the directly-tagged declarations. Every +`\lean{}` name resolves to a real declaration, `\leanok` is honest (no `sorry`, +clean axiom sets), and the `da0c971`/`bc0d8c5` fixes were verified to do exactly +what their commit messages and the previous memo's suggested fixes asked for. + +## Integrity checklist + +- **Axioms** (tool-verified via `lake env lean`, current tree): `gns_construction`, + `gns_unique`, `lmm1`, `lmm2`, `cauchy_schwarz_inequality`, `pullbackCarrierEquiv_apply`, + `toAbstractIdentityComponent_pullback_isBasisSet`, `IsGenerallyCovariant` — all + `[propext, Classical.choice, Quot.sound]` only. +- **`sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/`implemented_by`**: none + in the scoped files (grep-verified). Out of scope, noted only for + completeness as in the previous memo: `Physicslib4/AQFT/HaagKastler/StrongDensity.lean:57` + has a properly marked `**Restriction:** the proof is left as sorry` (chapter 9). +- **`nolint`**: one use in the dependency chain, `Physicslib4/Spacetime/Causality.lean:81` + (`@[nolint unusedArguments]` on `IsGeodesic`) — justified by the adjacent + `**Restriction:**` docstring, unchanged from the previous review. +- **`verify_commands`**: stale and, unlike last time, now touches scope — see + Medium finding M1. +- **Approvals**: none in effect (`.git/lean-kit/approvals.json` absent). + +## Summary counts + +- Statement audit: 8 blueprint items in scope, **8 match**, 0 non-matches. +- Previous findings: 2 Major + 2 Minor/note items, **all confirmed fixed** as + claimed (tool-verified for the `\lean{}` tag and dedup fixes; grep-verified + for the `Restriction:` marker). +- New findings this session: **1 Medium** (stale verify-receipt now covers + changed scope files), **2 Low** (a missing-but-transitively-present `\uses` + edge; out-of-scope guard churn noted for completeness). +- Blueprint-math issues: none found in §10.1/§10.7. + +Tool-verified: `\lean{}` name resolution against `blueprint/lean_decls`; clean +axioms via `lake env lean` `#print axioms` on 8 key declarations (also confirms +no stale `.olean`); absence of `sorry`/`admit`/etc. and presence/placement of +`Restriction:`/`nolint` via `rg`; the exact diffs of `da0c971` and `bc0d8c5` via +`git show`; the guard's protected-change list via `lean_guard.py check`. +Judged by reading: statement-faithfulness of all 8 blueprint items against +their Lean signatures/definitions; the direction and typing of `NetEquivalence`/ +`IsGenerallyCovariant` against the blueprint prose (the `ψ` vs. `ψ⁻¹` direction, +the identity-component instantiation); the blueprint's own proof steps for +gaps. diff --git a/notes/agents/review-2026-09-25-sec10.2.md b/notes/agents/review-2026-09-25-sec10.2.md new file mode 100644 index 0000000..c13e2cc --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.2.md @@ -0,0 +1,226 @@ +# Review: Blueprint §10.2 "Spectral Theorems" vs Lean — follow-up on Gelfand replacement + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/spectral-theorems.tex` (5829 lines, + 144 `\lean{...}` tags across 144 environments / 146 `\label`s). +- Lean: `Physicslib4/Spectral/{Basic,BorelCalculus,BorelClasses, + ContinuousCalculus,Forms,OperatorIntegral,ProjectionValuedMeasure, + SpectralTheorem,Spectrum}.lean` (7671 lines total). Per task instructions, + `Physicslib4/Spectral/Unbounded/*` (§10.3) is out of scope. +- Trigger: a prior review, `notes/agents/review-2026-09-sec10.2.md` (same + date, mtime 11:16), found no High issues and noted that commit `effd1f5` + ("Replace Laurent's theorem by Gelfand's formula and prune unused nodes") + had already landed cleanly. This review independently re-verifies that + claim by tool and by reading, and checks for anything new since. +- Two commits landed after the prior review's mtime: `2b06854` ("Make the + 10.26 constant uniform...") and `388de55` ("Fix chapter 10 review items + 7-9..."). Both touch only `Physicslib4/Spectral/Unbounded/*`, + `Physicslib4/Spacetime/Curves.lean` and + `unbounded-spectral-theorems.tex` (§10.3) — confirmed by `git show --stat` + — so nothing in §10.2's scope changed since the prior review. This + review's independent work therefore focuses on re-deriving the integrity + checks by script (rather than trusting the prior report) and auditing the + Gelfand-formula node itself in more depth than the prior review did. + +## Method + +- Wrote and ran a Python script over the raw `.tex` source (not relying on + the prior review's counts) to: enumerate all + `definition/theorem/lemma/proposition/corollary/remark` environments; + check every block carrying `\lean{}` also carries `\leanok`; collect all + `\uses{}` edges and check every referenced label exists as a `\label{}` + somewhere in the file. Result: 144 blocks, 146 labels, 0 missing-`\leanok`, + 70 `\uses` edges with a total of considerably more individual label + citations (one node's `\uses` list has ~70 entries), 0 dangling. +- Wrote a second script to extract all 186 identifiers inside `\lean{}` tags + (135 `Physicslib4.*`, 51 Mathlib/core) and checked: (a) every + `Physicslib4.*` short name is declared somewhere in the in-scope Lean + files; (b) every non-`Physicslib4` identifier's short name occurs in + `.lake/packages/mathlib` (grep, both by declaration and by explicit + spot-check of the file and line for the Gelfand-formula-adjacent names). + 0 missing in both categories. +- Read the actual diff of `effd1f5` (Laurent → Gelfand) in full, read the + Mathlib source of `spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius` + (`Mathlib/Analysis/Normed/Algebra/GelfandFormula.lean`), and compared it + line-by-line against the new blueprint theorem + `thrm:gelfand-formula` and the Lean implementation notes in + `Physicslib4/Spectral/Spectrum.lean`. +- Grepped the blueprint and the whole Lean tree for `Laurent`, the four + pruned Lean names (`exists_unique_laurentSeries`, `completeSpace_dual`, + `norm_eq_sSup_dual`) and the pruned lemma labels + (`lmm:nth-term-test`, `thrm:theorem-on-completeness-of-the-dual`, + `thrm:hall-a.40`, `thrm:norm-via-dual-pairing`) to confirm no stale + references or orphaned dead code remain. 0 hits everywhere. +- Read `git show --stat` for `2b06854`, `388de55` and `26ca993` to confirm + which files they touch, cross-checked against the in-scope file list. +- Ran `lake env lean` on a scratch file (`/tmp/check_axioms.lean`, outside + the repo) importing `Physicslib4.Spectral.SpectralTheorem` and running + `#print axioms` on `existsUnique_spectralMeasure`, `functionalCalculus`, + `exists_spectralMeasure`, `pvm_eq_of_integral_id_eq`. +- Grepped in-scope files for `sorry`, `admit`, `native_decide`, + `skipKernelTC`, `implemented_by`, `axiom`, `nolint`, `Restriction:`, and + `TODO`/`FIXME`/`stale`/`deprecated`. +- Read `.git/lean-kit/verify-receipt.json` and confirmed + `.git/lean-kit/approvals.json` does not exist (no approvals in effect). +- Read `def:projection-valued-measure` against + `Physicslib4.Spectral.ProjectionValuedMeasure` field-by-field, and spot-read + several more `\lean{}` blocks and their Lean counterparts (elementary + operator-norm lemmas, the adjoint block, `IsStarProjection` block) as a + sanity check independent of the prior review's sample. + +## Findings + +### High + +None. + +### Medium + +1. **Verify receipt is stale, and now more so than at the time of the prior + review.** `.git/lean-kit/verify-receipt.json` still records `lake build` + and `lake lint` passing only as of `2026-09-18T14:08:28Z`. Three commits + touching the Lean/blueprint tree have landed since the prior review + already flagged this (`effd1f5`, `2b06854`, `388de55`), none of which have + a fresh receipt. This is the same Medium finding as the prior review, + carried forward and now covering a longer unverified window. + **Location:** `.git/lean-kit/verify-receipt.json`. + **Suggested fix:** re-run `python3 ~/.claude/lean-kit/lean_guard.py verify` + (or `lake build && lake lint`) before relying on the receipt. + +### Low + +2. **`thrm:gelfand-formula` states an unused, and unnecessary, hypothesis.** + `blueprint/src/sections/sec10/spectral-theorems.tex:2686`: "Suppose + $\mathbf{H} \ne \{0\}$ and $A \in \mathcal{B}(\mathbf{H})$." But: + - the theorem's own `\uses{def:bounded-operator-notation, + def:spectral-radius}` (line 2684) does **not** cite + `conv:nonzero-hilbert-space` (the label the blueprint elsewhere uses for + the standing $H \ne \{0\}$ convention — see the next theorem, + `lmm:hall-8.1`, whose `\uses` at line 2706 does cite it); + - the cited Mathlib lemma, + `spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius` + (`Mathlib/Analysis/Normed/Algebra/GelfandFormula.lean:122`), is stated + for an arbitrary complex Banach algebra `A` with **no** nontriviality + hypothesis at all: `theorem pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius + (a : A) : Tendsto (fun n : ℕ => (‖a ^ n‖₊ : ℝ≥0∞) ^ (1 / n : ℝ)) atTop (𝓝 + (spectralRadius ℂ a))`; + - the theorem's own (one-line, `\leanok`-only) blueprint proof at line + 2691-2693 does not use the hypothesis either. + This is a "blueprint states more than Lean needs" narrowing in the benign + direction (Lean is strictly more general, matching the prior review's Low + finding 4 about separability/nontriviality prose conventions), not a + soundness problem — but it is a fresh instance introduced by the Gelfand + swap, and worth cleaning up for consistency: either drop the hypothesis + from the theorem statement, or add `conv:nonzero-hilbert-space` to its + `\uses` for traceability. No Lean change needed. + +3. **Representation gap (`ℝ≥0∞` vs. real number, and general Banach algebra + vs. `𝓑(H)`) for `thrm:gelfand-formula` is not spelled out at its own + citation site, unlike its neighbors.** `Physicslib4/Spectral/Spectrum.lean` + lines 43-73 carry a "Blueprint nodes that are literally Mathlib + declarations" section documenting the `ℝ≥0∞`-vs-real caveat for + `def:spectral-radius`, `crllr:crllr-1`, and `lmm:hall-8.1`, but does not + list `thrm:gelfand-formula` itself, even though the same caveat applies + to it (the Lean statement's conclusion is `Tendsto ... (𝓝 (spectralRadius + ℂ a))` in `ℝ≥0∞`, vs. the blueprint's real-valued + `R(A) = \lim \|A^m\|^{1/m}`). The gap is harmless — `lmm:hall-8.1`'s + entry, three lines below where `thrm:gelfand-formula` is used, makes the + general pattern clear — but a reader auditing `thrm:gelfand-formula` in + isolation has to reconstruct the correspondence themselves. Suggested: + add one sentence to the `Spectrum.lean` module doc extending the + bulleted list to `thrm:gelfand-formula`. + +4. **(Carried forward, re-verified) `spectrum ℝ A` stands in for `σ(A) ⊆ + ℂ`.** Re-confirmed by reading `ContinuousCalculus.lean` and + `SpectralTheorem.lean` implementation notes; still documented, still a + deliberate and licensed (by `prpstn:hall-7.7`) representation choice, no + action needed. + +5. **(Carried forward, re-verified) `@[nolint unusedArguments]` on `L0`** + (`Physicslib4/Spectral/BorelClasses.lean:279`) remains justified by an + adjacent docstring; re-confirmed this is the only `nolint` in scope. + +## Status of previous findings + +- Prior Medium 1 (stale verify receipt): **still open, now worse** (see + Medium 1 above; window has grown by three more commits). +- Prior Low 2 (`spectrum ℝ A` representation): **re-verified, unchanged**. +- Prior Low 3 (`nolint` on `L0`): **re-verified, unchanged**. +- Prior Low 4 (separability/`Nontrivial H` prose conventions): **re-verified + by pattern**; the new Gelfand node (Low 2 above) is an instance of exactly + this same pattern that the prior review did not have a chance to see, + since it audited the *result* of the Laurent→Gelfand swap only for + dangling-reference cleanliness, not for the new node's own hypothesis + fidelity. +- Prior Low 5 (scope note on not using `lean_hover_info`): this session also + had no LSP tool available; same caveat applies, mitigated the same way + (direct source reading plus `#print axioms`). +- The Laurent → Gelfand replacement and node pruning (`effd1f5`) is + **confirmed clean**: 0 stale references to `Laurent`, `exists_unique_laurentSeries`, + `completeSpace_dual`, `norm_eq_sSup_dual`, or the four pruned labels, + found anywhere in the blueprint or the Lean tree (tool-verified by grep). + The new node itself is faithful modulo the two fresh Low findings above. + +## Blueprint-math issues + +None beyond Low 2 above (an unused hypothesis in the new theorem's +statement — a wording issue, not a mathematical error: the theorem as +stated is simply a special case of what is proved). The blueprint's own +replacement proof of `lmm:hall-8.1` (self-adjoint norm = spectral radius, +lines 2695-2723) is internally consistent: it independently re-derives +`‖A^{2^n}‖ = ‖A‖^{2^n}` by induction and combines it with +`thrm:gelfand-formula` along the subsequence `m = 2^n`, exactly as the +`\uses` edges declare. + +## Summary counts + +- Blueprint items in scope with `\lean{}`: 144 (146 distinct labels). +- `\lean{}` blocks missing `\leanok`: 0 (script-verified). +- `\uses{}` edges: 70 (label groups); dangling: 0 (script-verified). +- Distinct Lean identifiers cited: 186 (135 `Physicslib4.*`, 51 + Mathlib/core); missing: 0 in both categories (script-verified). +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`/`axiom` + declarations in scope: 0 (grep-verified). +- `nolint` uses in scope: 1, justified by docstring (unchanged from prior + review). +- `Restriction:` markers in scope: 0. +- Axiom check on 4 capstone declarations + (`existsUnique_spectralMeasure`, `functionalCalculus`, + `exists_spectralMeasure`, `pvm_eq_of_integral_id_eq`): `propext, + Classical.choice, Quot.sound` only (tool-verified via `lake env lean` + + `#print axioms`). +- Stale/dead-code references to the pruned Laurent-theorem machinery: 0 + (grep-verified across blueprint and Lean tree). +- Findings this session: 0 High, 1 Medium (carried forward, worse), 4 Low + (2 carried forward and re-verified unchanged, 2 new — both about the + Gelfand-formula node's documentation, neither a soundness issue). +- Statement-by-statement re-audit sample this session (independent of prior + review's sample): `def:projection-valued-measure` (match, junk-value + design documented), `thrm:projection-valued-measures-associated-measure` + (match), `thrm:gelfand-formula` (match modulo Low 2/3 above), + `lmm:hall-8.1` (match), `crllr:crllr-1` (match, unaffected by the Gelfand + swap). No item classified as "Lean assumes more", "Lean concludes less", + "different objects", or "edge cases differ". + +## Verified by tool vs. judged by reading + +- **Tool-verified:** all `\lean{}`/`\leanok` pairing and all `\uses` label + resolution (Python script over the raw `.tex`); existence of all 186 cited + Lean/Mathlib identifiers (Python + grep against the Lean tree and + `.lake/packages/mathlib`); absence of stale references to the pruned + Laurent-theorem machinery (grep, blueprint + Lean tree); absence of + `sorry`/`admit`/`axiom`/`native_decide`/etc. (grep); axiom closure of the + four capstone declarations (`lake env lean` + `#print axioms`); which + files commits `2b06854`, `388de55`, `26ca993` touch (`git show --stat`); + staleness of the verify receipt (reading its timestamp against `git log`). +- **Judged by reading:** faithfulness of `thrm:gelfand-formula` and + `lmm:hall-8.1` to their Mathlib/Lean counterparts, including the + `ℝ≥0∞`-vs-real and Banach-algebra-vs-`𝓑(H)` representation gaps; internal + consistency of the blueprint's replacement proof for `lmm:hall-8.1`; + adequacy of the `Spectrum.lean` and `ProjectionValuedMeasure.lean` + implementation-notes documentation; whether the newly-flagged Low findings + rise to the level of a mismatch (judged: no, both are benign/cosmetic). diff --git a/notes/agents/review-2026-09-25-sec10.3.md b/notes/agents/review-2026-09-25-sec10.3.md new file mode 100644 index 0000000..aff660a --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.3.md @@ -0,0 +1,301 @@ +# Review: Blueprint §10.3 "Unbounded Spectral Theorems" vs. Lean (follow-up) + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/unbounded-spectral-theorems.tex` + (3172 lines, 117 `\lean{...}` occurrences, all with a nearby `\leanok`). +- Lean: `Physicslib4/Spectral/Unbounded/{Basic,Spectrum,DirectSum,Integral, + Normal,AbstractCalculus,Cayley}.lean` (8900 lines total). +- This is a follow-up to `notes/agents/review-2026-09-sec10.3.md` (same day, + earlier session). Task: verify that three named fixes were actually made, + and look for new issues. No `.lean`/`.tex` file was modified. + +## Method + +- Identified which commits since the prior review touch §10.3's files: + `git log --oneline` plus `git show --stat` on every commit made today. + Only two touch scope: `2b06854` ("Make the 10.26 constant uniform...") and + `388de55` ("Fix chapter 10 review items 7-9...", which contains the + `inclSpectrum`/`Restriction:` fixes). Read both diffs in full + (`git show -- `). +- Re-ran the exhaustive link-existence check as a script: extracted all 256 + distinct `\lean{...}` identifiers (186 `Physicslib4.*`, 70 other) and + regex-matched every `Physicslib4.*` name against a declaration head + (`theorem|lemma|def|abbrev|structure|instance|class `) in the + concatenation of the 7 audited files. +- Checked every `\lean{` has a `\leanok` within 6 lines (proxy for + link/leanok consistency) and counted `\lean{`/`\leanok` occurrences. +- Grepped for `sorry|admit|native_decide|debug.skipKernelTC|implemented_by| + nolint` and for the restriction marker `Restriction:` in the 7 files. +- Ran `lake env lean` against a scratch file importing `Normal.lean`, + `Cayley.lean`, `DirectSum.lean` and running `#print axioms` on + `spectrum_mvApply`, `exists_const_isAlmostEigenvector_mvApply_uniform`, + `exists_const_isAlmostEigenvector_mvApply`, `exists_subspace_isAlmostEigenvector`, + `existsUnique_spectralMeasure_unbounded`, `spectralMeasure_concentrated`, + `isEssentiallySelfAdjoint_of_isInternalDirectSumOperator`. This both + confirmed axiom hygiene and gave a fresh, tool-verified confirmation that + the *current* source (post-fix) elaborates against the *current* build + cache without error — the `.lake/build/lib/.../*.olean` files for + `AbstractCalculus.lean`, `DirectSum.lean` and `Normal.lean` are in fact a + few seconds newer than the corresponding `.lean` sources, i.e. a local + build ran after the last edit to each. +- Read `.git/lean-kit/verify-receipt.json` and `.git/lean-kit/approvals.json` + and ran `python3 ~/.claude/lean-kit/lean_guard.py check --base HEAD`. +- Traced, by grep across the whole repository (not just the 7 files), every + caller of `exists_const_isAlmostEigenvector_mvApply(_uniform)` and + `exists_subspace_isAlmostEigenvector`, to check whether the blueprint's + `\uses` dependency graph for `thrm:hall-10.23` and `lmm:hall-10.27` matches + Lean's actual proof-term dependencies. +- No fuse/lean-kit MCP tools (`lean_hover_info`, `lean_verify`, + `lean_minimal_hypotheses`) were available as callable tools this session; + `lake env lean` was used directly instead for the axiom checks. + +## Status of previous findings + +- **H1 (stale verify receipt).** Still stale: `.git/lean-kit/verify-receipt.json` + is unchanged, timestamp `2026-09-18T14:08:28Z`, and today's `git log` shows + six more commits after that (`2b06854`, `1df728f`, `a743ce0`, `ebf637e`, + `9940322`, `224e76b`, `9e7109f`, `3166de7`, `d51edaf`, `11768f7`, plus + today's `da0c971`, `6ff85aa`, `388de55`, `bc0d8c5`, `2dff159`), including + both commits that changed §10.3 material. `.git/lean-kit/approvals.json` + is still empty/absent. **Not resolved** — no fresh receipt was recorded. + Partial mitigation found this session: the `.lake` build cache *is* current + relative to source (see Method), and `lake env lean` confirms the five + §10.3 declarations checked above elaborate cleanly with only + `[propext, Classical.choice, Quot.sound]` — but this is a narrower, + manually-assembled check, not a substitute for a recorded `lake build && + lake lint` pass covering the whole tree. +- **H2 (10.26 not stated uniform in λ, but 10.23's proof needs it).** + **Resolved.** `blueprint/.../unbounded-spectral-theorems.tex:2108-2113` + now states `lmm:hall-10.26` with an explicit radius `R ≥ 0` and "a constant + $C>0$... depending on $p$, $A$, and $R$ but not on $\lambda,\varepsilon,\psi$... + for every $\lambda$ with $|\lambda|\le R$" — matching the new Lean theorem + `exists_const_isAlmostEigenvector_mvApply_uniform` (`Normal.lean:593-597`: + `∃ C : ℝ, 0 < C ∧ ∀ lam, ‖lam‖ ≤ R → ∀ ε ψ, IsAlmostEigenvector A lam ε ψ → + IsAlmostEigenvector (mvApply A p) (mvEvalConj p lam) (C * ε) ψ`) exactly. + `thrm:hall-10.23`'s proof (blueprint line 2232) now reads "Fix the constant + $C>0$ given by Lemma~\ref{lmm:hall-10.26} for $A$, $p$, and $R=\|A\|$" in + place of the old unjustified "inspecting the recursion" aside, and + `lmm:hall-10.27`'s proof (line 2199) applies it "with $R=0$". Both blueprint + proof texts now correctly cite a statement that actually says what they + need. Tool-verified: `#print axioms` on + `exists_const_isAlmostEigenvector_mvApply_uniform` succeeds with only the + three standard axioms. +- **M1 (Lean's proof of 10.23 silently takes a different route).** + **Resolved.** `Normal.lean:918-926`'s docstring on `spectrum_mvApply` now + states: "The proof does not follow the blueprint's almost-eigenvector + argument (`lmm:hall-10.25` to `lmm:hall-10.27`). It identifies `mvApply A p` + with the continuous functional calculus of `A`... and uses Mathlib's + spectral mapping theorem... `cfc_map_spectrum`." The blueprint itself gained + a matching remark, `unbounded-spectral-theorems.tex:2265`: "Formalization + note. The Lean proof of this theorem (`spectrum_mvApply`) does not follow + the almost-eigenvector argument above... Lemmas 10.25–10.27 are formalized + in their own right." This is exactly the fix M1 asked for, present in both + the Lean docstring and the blueprint text (not just one of the two). +- **M2 (`CompleteSpace (K n)` instance marked with the `Restriction:` marker + even though it costs no generality).** **Resolved.** All five occurrences + in `DirectSum.lean` (`isEssentiallySelfAdjoint_of_isInternalDirectSumOperator`, + `domain_closure_eq_internalDomain`, `domain_adjoint_eq_internalDomain`, + `hasSum_closure_apply_of_isInternalDirectSumOperator`, + `hasSum_adjoint_apply_of_isInternalDirectSumOperator`) now read "Remark: + the instance `[∀ n, CompleteSpace (K n)]`... is not a restriction: it + follows from `hK.isClosed` via `IsClosed.completeSpace_coe`..." — the + `**Restriction:**` marker is gone (confirmed: `grep -rn "Restriction:" + Physicslib4/Spectral/Unbounded/*.lean` returns zero hits across all seven + files). This resolves M2 by the "reword" branch of the suggested fix + (the instance hypothesis itself is unchanged, which the finding explicitly + allowed as one of two acceptable resolutions). +- **L1 (`inclSpectrum`/`continuous_inclSpectrum` duplicate Mathlib's + `Set.inclusion`/`continuous_inclusion`).** **Resolved.** + `AbstractCalculus.lean` no longer defines `inclSpectrum` or + `continuous_inclSpectrum` at all; every use site + (`integral_continuousMap_eq_comp_inclSpectrum` → + `integral_continuousMap_eq_comp_inclusion`, `assoc_eq_map_inclSpectrum` → + `assoc_eq_map_inclusion`, `apply_eq_apply_preimage_inclSpectrum` → + `apply_eq_apply_preimage_inclusion`) was mechanically rewritten to + `Set.inclusion`/`continuous_inclusion`. None of the renamed identifiers + were ever cited in a blueprint `\lean{}` tag (checked: `grep` for the old + and new names in the `.tex` returns no match for any of the + `..._inclSpectrum`/`..._inclusion` helper names), so the rename created no + stale blueprint link. +- **L2 (untracked protected-file changes, no approvals).** Unchanged and + still outside §10.3's content — `.claude/CLAUDE.md` and + `.claude/lean-policy.json` are still untracked, `approvals.json` still + absent. Not re-investigated (orthogonal to this section). + +## Findings (new this session) + +### Medium + +**M3. `lmm:hall-10.27`'s Lean proof independently bypasses the same +spectral-subspace/almost-eigenvector machinery its `\uses` list cites — and, +unlike the sibling case fixed for 10.23, this deviation is undocumented.** + +- Location: `Physicslib4/Spectral/Unbounded/Normal.lean:764-882` + (`exists_subspace_isAlmostEigenvector`, the Lean witness for + `lmm:hall-10.27`); blueprint `unbounded-spectral-theorems.tex:2188-2216`. +- Problem: the blueprint's `\uses` for `lmm:hall-10.27` (line 2196) lists + `def:hall-7.14, prpstn:hall-7.15, prpstn:hall-7.16, lmm:hall-10.25, + lmm:hall-10.26` — the abstractly-defined spectral-subspace apparatus and + the almost-eigenvector lemma just fixed above — and its proof text walks + through "Step 1: $0\in\sigma(B^*B)$" via `lmm:hall-10.26`/`lmm:hall-10.25`, + then "Step 2: the spectral subspace" via `def:hall-7.14`/`prpstn:hall-7.15`. + Lean's `exists_subspace_isAlmostEigenvector`, by contrast (read in full, + lines 777-900+), proves "$0\in\sigma(B^*B)$" by a direct unit argument + (`Commute.isUnit_mul_iff` applied to `B` and `star B`, `Normal.lean:805-812`) + that needs no almost-eigenvector reasoning at all, and realises the + spectral subspace directly as `LinearMap.ker (cfc f T : H →L[ℂ] H)` for an + explicit continuous `f` (`Normal.lean:813-857`), never calling + `spectralSubspace`, `pvmOperator`, `mapsTo_pvmOperator_spectralSubspace`, + `norm_sub_smul_le_of_mem_spectralSubspace`, `commute_borelCalculus`, or + `mapsTo_spectralSubspace_of_commute` (the Lean names tagged to + `def:hall-7.14`/`prpstn:hall-7.15`/`prpstn:hall-7.16`). It also never calls + `exists_const_isAlmostEigenvector_mvApply`/`_uniform` (the witnesses for + `lmm:hall-10.26`) or any Lean name tied to `lmm:hall-10.25`. Confirmed by + `grep -rln` across the whole repo: none of those six spectral-subspace + identifiers, nor the two almost-eigenvector-constant theorems, appear + anywhere in `exists_subspace_isAlmostEigenvector`'s body, and the two + almost-eigenvector-constant theorems have no caller anywhere in the repo + at all (`grep -rln "exists_const_isAlmostEigenvector_mvApply"` returns only + `Normal.lean`, at their own definition sites). This is the identical + pattern to the now-fixed M1 (10.23 takes a shorter Mathlib-CFC route than + its blueprint proof), but for a different declaration, and it did not + receive the same documentation treatment: `spectrum_mvApply`'s docstring + and the blueprint's `thrm:hall-10.23` both now carry an explicit + "does not follow / formalization note" (and the 10.23 note even says, in + passing, "Lemmas 10.25–10.27 are formalized in their own right" — implying + each is faithfully proved to its *own* blueprint statement, which is true, + but does not disclose that 10.27's *own* proof also diverges internally + from what its own `\uses` list promises). No corresponding note exists on + `exists_subspace_isAlmostEigenvector` or on `lmm:hall-10.27` in the `.tex`. +- Consequence for the audit: no soundness or statement-faithfulness issue — + `exists_subspace_isAlmostEigenvector`'s signature matches + `lmm:hall-10.27` exactly (checked: `∃ W : Submodule ℂ H, W ≠ ⊥ ∧ + IsClosed (W : Set H) ∧ (∀ ψ ∈ W, A ψ ∈ W) ∧ (∀ ψ ∈ W, + ContinuousLinearMap.adjoint A ψ ∈ W) ∧ ∀ ψ ∈ W, ψ ≠ 0 → + IsAlmostEigenvector (mvApply A p) ν ε ψ`, a **match**), and + `#print axioms exists_subspace_isAlmostEigenvector` (tool-verified) gives + only `[propext, Classical.choice, Quot.sound]`. The issue is purely that a + reader using the blueprint's `\uses` graph to understand *how* the Lean + development is wired together would be misled about this lemma too, in + exactly the way M1 flagged for 10.23 — and the fix commit for M1 + (`2b06854`) had the opportunity to also flag this sibling case (it + explicitly touches the surrounding text) but did not. +- Suggested fix (propose only): add a short docstring remark to + `exists_subspace_isAlmostEigenvector`, and/or a blueprint "Formalization + note" after `lmm:hall-10.27`'s proof, stating that the Lean proof + constructs the witnessing subspace directly via `cfc` (as + `ker (cfc f T)`) and via a direct unit/`Commute.isUnit_mul_iff` argument for + $0\in\sigma(B^*B)$, rather than via the spectral-subspace definitions + (`def:hall-7.14` etc.) or `lmm:hall-10.25`/`lmm:hall-10.26`, mirroring the + note already present on `thrm:hall-10.23`. + +### Low + +**L3. `exists_const_isAlmostEigenvector_mvApply` (non-uniform) is now a +special case of `exists_const_isAlmostEigenvector_mvApply_uniform` but is +still proved by an independent ~85-line duplicate induction.** + +- Location: `Physicslib4/Spectral/Unbounded/Normal.lean:503-585` (the + original, non-uniform lemma) vs. `:593-685` (the uniform one added by + `2b06854`). Both are still cited together in the blueprint's `\lean{}` tag + for `lmm:hall-10.26` (line 2110), and both remain in the file. +- Problem: the two proofs are structurally identical (`step`/`mono`/`total` + inductions on `MvPolynomial` support, `Normal.lean:508-546` vs. + `600-640`), differing only in whether the bound on `‖lam‖` is fixed + (`= ‖lam‖`, implicitly) or parametrized (`≤ R`). Since the non-uniform + statement is a direct corollary of the uniform one (instantiate + `R := ‖lam‖`), the ~85-line independent proof at lines 503-585 is + redundant: it could be replaced by a 2-3 line application of + `exists_const_isAlmostEigenvector_mvApply_uniform p ‖lam‖` composed with + `le_refl`. Purely a maintenance/duplication cost (the kind of thing the + task's "oversized proofs / duplication" hygiene check asks for); no + soundness or statement issue — both theorems independently type-check with + only the three standard axioms (tool-verified, see Method). +- Suggested fix (propose only): derive + `exists_const_isAlmostEigenvector_mvApply` from + `exists_const_isAlmostEigenvector_mvApply_uniform` (with `R := ‖lam‖`), + removing the duplicate ~85-line proof. This changes an existing `theorem` + body only (not a new declaration kind under the policy's block-list), but + is still a real proof-body edit needing orchestrator sign-off, so left as + a proposal. + +## Blueprint's own mathematics + +- No new blueprint-internal inconsistency found in the diffs read this + session. `lmm:hall-10.26`'s restated proof (uniformity in `R`) is + internally consistent: the induction's constants `c_{kl}` are shown to + depend only on `‖A‖, ‖A*‖, R` (blueprint line 2141), which is exactly what + is needed for `thrm:hall-10.23`'s and `lmm:hall-10.27`'s citations of it. + The `R=0` specialization used in `lmm:hall-10.27`'s Step 1 is a valid + instance (an eigenvalue bound of `0` forces `λ=0`, matching the text's own + parenthetical "so the only admissible eigenvalue is `λ=0`"). +- The unaudited-this-session remainder of the file (everything not touched + by `2b06854`/`388de55`) is assumed unchanged from the prior review's + conclusions, which found no other blueprint-math issue in the material it + depth-read. + +## Link/integrity checks (exhaustive, scripted) + +- **186 distinct `Physicslib4.*` `\lean{}` identifiers**: all 186 resolve to + a real `theorem|lemma|def|abbrev|structure|instance|class` declaration in + the 7 audited files (0 missing). Re-run from scratch this session with a + Python script rather than manual grep. +- **117 `\lean{` occurrences / 210 `\leanok` occurrences**: every `\lean{` + has a `\leanok` within 6 lines (proof or statement block); no orphaned + `\lean` without `\leanok` found. +- **Hygiene grep** (`sorry|admit|native_decide|debug.skipKernelTC| + implemented_by|nolint`) across all 7 files: 0 real hits (one substring + match on "admit**ting**", not a `sorry`/`admit` tactic). +- **`Restriction:` marker**: 0 occurrences in all 7 files (all 5 prior + occurrences were reworded to "Remark:" by `388de55`; none reintroduced). +- **Axioms** (tool-verified via `lake env lean` `#print axioms`, current + source against current `.lake` build cache): `spectrum_mvApply`, + `exists_const_isAlmostEigenvector_mvApply_uniform`, + `exists_const_isAlmostEigenvector_mvApply`, + `exists_subspace_isAlmostEigenvector`, + `existsUnique_spectralMeasure_unbounded`, `spectralMeasure_concentrated`, + `isEssentiallySelfAdjoint_of_isInternalDirectSumOperator` — all depend on + exactly `[propext, Classical.choice, Quot.sound]`, no extra axioms. + +## Not verified this session + +- A fresh full `lake build && lake lint` was not run (H1's staleness + finding stands; the `lake env lean` axiom checks are a narrower, + manually-scoped substitute covering seven declarations, not the whole + tree or the lint gate). +- The parts of the file untouched by today's two fix commits (everything + outside `lmm:hall-10.26`, `thrm:hall-10.23`, `lmm:hall-10.27`'s immediate + neighbourhood, and the `DirectSum.lean`/`AbstractCalculus.lean` + `inclSpectrum`/`Restriction:` sites) were not re-read this session; the + prior review's conclusions on them (including its full statement audit of + `thrm:hall-10.28`, `prpstn:hall-10.29`, `prpstn:hall-10.3`, + `thrm:hall-10.4`, `thrm:hall-10.20`, and + `lmm:borel-bijection-transports-pvm`) are taken as still valid, since none + of those files/declarations appear in either of today's two diffs. + +## Summary counts + +- Previous findings re-verified: **6 of 6** (H1 still open/stale; H2, M1, M2, + L1 resolved and confirmed correct; L2 unchanged/out of scope). +- New findings this session: **1 Medium (M3), 1 Low (L3)**. +- `\lean{}` links checked for existence: 186 `Physicslib4.*` (186 resolve, 0 + missing), re-run exhaustively by script this session. +- Hygiene grep: 0 hits. `Restriction:` markers: 0 (down from 5). +- Verified with a tool: all three claimed fixes (H2/M1 via `2b06854`, + M2/L1 via `388de55`) via `git show`/`git diff` reading of the actual + patches; link-existence check via a Python script; axiom hygiene for 7 + declarations via `lake env lean` `#print axioms` against the current + source and current (same-day, seconds-newer) `.lake` build cache; the + "no caller anywhere in the repo" claims underlying M3 and L3 via + repo-wide `grep -rln`. +- Judged by reading only: the mathematical correspondence between the + blueprint's restated proof of `lmm:hall-10.26`/`thrm:hall-10.23` and the + Lean induction bodies (H2 resolution); the line-by-line comparison of + `exists_subspace_isAlmostEigenvector`'s proof against + `lmm:hall-10.27`'s stated proof steps (M3); the assessment that + `exists_const_isAlmostEigenvector_mvApply` is a strict special case of the + uniform version (L3). diff --git a/notes/agents/review-2026-09-25-sec10.4.md b/notes/agents/review-2026-09-25-sec10.4.md new file mode 100644 index 0000000..98b6f13 --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.4.md @@ -0,0 +1,231 @@ +# Follow-up audit: blueprint §10.4 "Spacetime" + +Date: 2026-09-25 +Scope: `blueprint/src/sections/sec10/spacetime.tex` (all ~112 numbered nodes) +and every Lean declaration its `\lean{...}` tags cite, principally +`Physicslib4/Spacetime/{Basic, CausalStructure, Curves, Causality, +CausalComplement, LorentzianSpacetime, Minkowski, MinkowskiDirected, +MinkowskiDilation, LorentzCauchySchwarz, LorentzCone, LorentzOrthogonal, +LorentzCausality, Diffeo, DiffeoPath, Isometry, IsometryCausality, +IsometryTopology, Pullback, CrossMetricIsometry}.lean`. + +This is a follow-up to `notes/agents/review-2026-09-sec10.4.md` (2026-09-25, +earlier same day), which raised one Critical finding (C-1, `IsGeodesic`) and +three Minor findings (m-1, m-2, m-3). Three commits landed since that review +and are claimed to act on it: + +- `d51edaf` "Record IsGeodesic placeholder as a Restriction and annotate + dependent spacetime results" +- `6ff85aa` "Fix chapter 10 review docstring and wording findings" +- `388de55` "Fix chapter 10 review items 7-9 and make PathEquiv an + equivalence relation" + +## Method + +Tool-verified: +- Exhaustive script check: all 294 distinct `\lean{...}` names in + `spacetime.tex` resolve against `blueprint/lean_decls` (0 missing), and + every short name has at least one occurrence under `Physicslib4/` (0 + missing) — re-run fresh for this follow-up, same result as the prior + review. +- `\begin{...}`/`\end{...}` balance check on the whole file (249/249, + matched) — catches gross LaTeX breakage from the 57 inserted + "Formalization note" paragraphs. +- A script located every `\begin{definition|theorem|lemma|proposition}` + block between lines 309 (`def:trip`) and 1291 (end of "Isometries and + basis-set preservation") and checked whether a "Formalization note" + paragraph immediately follows it (through any attached `\begin{proof}`). + Of 57 blocks, 51 carry the note; the 6 that do not are `def:trip`, + `def:causal-trip` themselves (correctly not self-referential; the existing + "Remark (geodesic placeholder...)" after `def:causal-trip` covers them), + `thrm:minkowski-dilation-not-isometry` (pure bilinear-scaling fact about + the metric, no `≪`/`≺`), `lmm:isometry-preserves-classification` + (tangent-vector classification only), `lmm:path-parameter-unique-diff` + (topological fact about parameter spaces), and `lmm:pushforward-path` + (pushforward of paths, used by but not itself stating anything about + precedence). I read each of these six and confirmed by hand that none of + them states anything about `≪`, `≺`, futures/pasts, diamonds, causal + convexity, the Alexandrov topology, or causal automorphisms — the omission + is correct, not a gap. The remaining 6 notes (of 57 total in the file) sit + in the tail cross-metric-isometry range (lines 1746-1843), correctly + attached to the nodes that reason about `≪`/`≺` under a pullback metric. +- `grep` for `sorry`, `admit`, `native_decide`, `implemented_by`, + `skipKernelTC`, `nolint`, `axiom`, `maxHeartbeats`, `Restriction:` across + `Physicslib4/Spacetime/` (re-run fresh). +- `lake build` on every in-scope module (`Basic`, `CausalStructure`, + `Curves`, `Causality`, `CausalComplement`, `LorentzCauchySchwarz`, + `LorentzCone`, `LorentzOrthogonal`, `LorentzCausality`, `Diffeo`, + `DiffeoPath`, `Isometry`, `IsometryCausality`, `IsometryTopology`, + `Pullback`, `CrossMetricIsometry`, `MinkowskiDirected`, `MinkowskiDilation`, + `LorentzianSpacetime`, `Minkowski`): all succeed with the current working + tree (this postdates the three fix commits and is fresher than the stored + receipt). +- `lake lint`: "Linting passed for Physicslib4" on the whole project, + current working tree. +- `lake env lean` + `#print axioms` on `equivalence_pathEquiv`, + `equivalence_smoothPathEquiv`, `equivalence_orientedSmoothPathEquiv`, + `chronologicallyPrecedes_trans`, `causallyPrecedes_antisymm`: all five + report exactly `[propext, Classical.choice, Quot.sound]`. +- `python3 ~/.claude/lean-kit/lean_guard.py check --base d51edaf^`, filtered + to `Physicslib4/Spacetime/`: exactly one protected change, the `PathEquiv` + definition (adding the backward `Set.MapsTo` condition on `ψ`) — matches + the task description and the commit message exactly. +- `.git/lean-kit/verify-receipt.json`: `lake build`/`lake lint` both exit 0, + but timestamped 2026-09-18T14:08:28Z, i.e. **before** all three fix + commits (which are all timestamped 2026-09-25). Unlike the prior same-day + review, this receipt no longer covers the current §10.4 sources untouched; + I therefore re-ran `lake build`/`lake lint` myself above rather than relying + on the receipt for the changed files. +- No `.git/lean-kit/approvals.json` exists — nothing to review there. + +Judged by reading: the six status-of-previous-findings verdicts below, and +the check that the "Formalization note" text and the "Remark" it points back +to are mutually consistent and each self-contained. + +## Status of previous findings + +**C-1 (`IsGeodesic := True` blast radius unrecorded) — RESOLVED.** +- `Physicslib4/Spacetime/Causality.lean:75-79`: `IsGeodesic`'s docstring now + has a `**Restriction:**` line naming the intended general form (auto- + parallelism of the tangent field for the Levi-Civita connection) and what + it is waiting on (Mathlib defining affine/Levi-Civita connections). +- All 57 blueprint nodes downstream of `def:trip`/`def:causal-trip` whose + *statement* depends on `≪`/`≺` now carry a "Formalization note" pointing + back to the remark after `def:causal-trip`. Verified this is neither + over- nor under-applied (see Method): the only omissions in the annotated + range are genuinely trip-independent nodes. +- The file-local echo of C-1 (the `IsTripSegment`/`IsCausalTripSegment` + docstring bullet "is a geodesic", previously flagged as reading like a + live constraint) is also fixed: both now read "is a geodesic (currently + the placeholder `IsGeodesic`, which is `True`; see its **Restriction:** + note)" (`Causality.lean:90-91`, `Causality.lean:143-144`). +- Residual observation (not a new finding, a scope note): the fix is + precisely calibrated to statements that use `≪`/`≺`, not to every node + that happens to sit later in the file. Good practice, and it means a + reader who checks only "is the note present" for a downstream node they + care about gets an accurate answer rather than a blanket disclaimer. + +**m-1 (stale chart-local smoothness docstrings) — RESOLVED.** +- `Physicslib4/Spacetime/Basic.lean:48-51` now reads "The smoothness of `g` + is stated in Mathlib's bundle-section idiom (`ContMDiff` of `g` as a + section of the bundle of bilinear forms on the tangent bundle; see the + `contMDiff` field), not chart by chart" — matches the actual field. +- `Physicslib4/Spacetime/CausalStructure.lean:166-177`'s `smooth` field + docstring now reads "smoothness of the field as a section of the tangent + bundle, stated with `ContMDiff` into the total space (Mathlib's + bundle-section idiom)" and the field-level comment + (`CausalStructure.lean:169-177`) is internally consistent with it. + +**m-2 (`PathEquiv`/`SmoothPathEquiv`/`OrientedSmoothPathEquiv` never shown +to be equivalence relations) — RESOLVED.** +- `PathEquiv` (`Curves.lean:264-270`) gained the missing hypothesis + `Set.MapsTo ψ μ₂.parameterSpace μ₁.parameterSpace` (this is the one + protected change the guard flagged, and it is exactly what was needed: + previously nothing forced the claimed inverse `ψ` to map `Σ₂` back into + `Σ₁`, so `PathEquiv.symm` was not provable as stated). +- `PathEquiv.refl`/`.symm`/`.trans` and `equivalence_pathEquiv : Equivalence + M.PathEquiv` (`Curves.lean:322-347`); the analogous + `equivalence_smoothPathEquiv` (`Curves.lean:351-378`) and + `equivalence_orientedSmoothPathEquiv` (`Curves.lean:398-439`). All three + build and report only the three standard axioms (tool-verified). +- This closes the gap without narrowing anything: the added `MapsTo` + hypothesis is exactly what the blueprint's own reading of `def:curves` + ("a homeomorphism φ of ℝ mapping Σ₁ bijectively onto Σ₂") already implies, + so the Lean relation is now, if anything, more faithful to the blueprint + prose than before, not more restrictive than intended. + +**m-3 (`SmoothPath.nonvanishing` docstring said "interior" but the field +quantifies over the whole parameter space) — RESOLVED.** +- `Physicslib4/Spacetime/Curves.lean:109-114`: now reads "non-zero at every + point of the parameter space, endpoints included," matching the `∀ s ∈ + parameterSpace` field. + +No regressions were found in any of the touched files: `lake build` and +`lake lint` both pass on the current tree (see Method), and `git diff` shows +no unrelated statement changes smuggled in alongside the docstring/remark +edits in the three commits, within `Physicslib4/Spacetime/` and +`spacetime.tex`. + +## New findings + +None at Critical or Major severity. Two very minor, non-blocking +observations: + +**n-1 (Low).** The 57 "Formalization note" paragraphs are verbatim +duplicates of one sentence, repeated by hand rather than via a LaTeX macro. +This is a maintainability point, not a faithfulness problem: if the +`IsGeodesic` restriction is ever lifted, all 57 occurrences (plus the +remark after `def:causal-trip`) need to be found and removed together, and +nothing currently enforces that they stay in sync. *Suggested fix (report +only): factor the sentence into a `\newcommand` in the blueprint's macro +file so a future removal is a one-line edit rather than a 57-site grep.* + +**n-2 (Low).** `notes/agents/review-2026-09-sec10.4.md` (the review these +fixes respond to) is still present alongside this follow-up memo under the +same `notes/agents/` directory; not a repository-hygiene problem since notes +are append-only audit history, but worth noting that the two files should +be read together. + +No new Critical, Major, or Minor faithfulness issues were found beyond +what was already reported and now fixed. Sections not touched by the three +commits (Minkowski cone algebra, Lorentz Cauchy-Schwarz, causal-complement +lattice, isometry/pullback differential-geometry lemmas) were re-spot-checked +against the blueprint and remain matches, consistent with the prior review. + +## Blueprint-math issues + +None found beyond what the prior review already recorded as accurate +self-disclosure (the anonymous `CompleteLattice` instance, the historical +label name, the failure of the full orthocomplement law, the geodesic +placeholder itself). No new mathematical claim was introduced by the three +follow-up commits; they are documentation and hypothesis-completion changes +only, confirmed by the `git diff` review and by the fact that `lean_guard` +flags only the single `PathEquiv` definitional change. + +## Integrity checklist + +- `sorry`/`admit`/`native_decide`/`implemented_by`/`skipKernelTC`: none in + `Physicslib4/Spacetime/` (grep hits are only docstring prose mentioning + the word "sorry" to say the structures are free of it). +- `axiom`: none declared in `Physicslib4/Spacetime/`. +- `nolint`: one use, `Causality.lean:81` (`@[nolint unusedArguments]` on + `IsGeodesic`), now backed by the `**Restriction:**` docstring — no longer + an unrecorded finding. +- `maxHeartbeats`: one use, `Pullback.lean:154`, a performance escape hatch, + unchanged from the prior review. +- `#print axioms` on 5 sampled theorems including the three new equivalence + lemmas: all report exactly `[propext, Classical.choice, Quot.sound]`. +- `lake build` (all in-scope modules) and `lake lint` (whole project): both + pass on the current tree, superseding the stale (pre-fix) verify-receipt + for this section. +- Approvals: `.git/lean-kit/approvals.json` does not exist. +- `\leanok` honesty: every `\leanok`-marked node checked corresponds to a + Lean declaration with no `sorry` and standard axioms only. + +## Summary counts + +- Previous Critical findings resolved: 1 of 1 (C-1). +- Previous Minor findings resolved: 3 of 3 (m-1, m-2, m-3). +- New findings this pass: 0 Critical, 0 Major, 0 Minor, 2 Low + (documentation-maintainability observations, n-1 and n-2). +- `\lean{}` links checked: 294/294 resolve, 0 missing. +- Formalization-note placement checked: 57/57 present in the file; 51/57 + possible sites in the `def:trip`-to-`lmm:isometry-preserves-basis-sets` + range carry the note and the other 6 in that range are confirmed + trip-independent by reading; the remaining 6 notes sit correctly in the + cross-metric-isometry tail. +- Modules built and axiom-checked fresh this session: 19 (all in-scope + Spacetime modules) build; 5 sampled theorems axiom-clean; + project-wide `lake lint` passes. + +## Files referenced + +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/src/sections/sec10/spacetime.tex` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Causality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Curves.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Basic.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalStructure.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/lean_decls` +- `/Users/kdavis/Code/physicslib/physicslib4/.git/lean-kit/verify-receipt.json` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-sec10.4.md` + (the review these three commits respond to) diff --git a/notes/agents/review-2026-09-25-sec10.5.md b/notes/agents/review-2026-09-25-sec10.5.md new file mode 100644 index 0000000..9daa36b --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.5.md @@ -0,0 +1,242 @@ +# Review: Blueprint §10.5 "Haag–Kastler Axioms (Minkowski)" vs Lean — follow-up + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) +Predecessor: `notes/agents/review-2026-09-sec10.5.md` (2026-09-25, earlier same day) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/haag-kastler-axioms.tex` (2061 lines, + `\label{sctn:haag-kastler-axioms}`), the whole file: Axioms 1–5, `HaagKastlerNet`, + the quasilocal colimit/completion chain, local von Neumann algebras and relative + commutants, GNS irreducibility/purity, the covariant quasilocal algebra and + invariant/vacuum states, and the two KMS subsections at the end of the file. +- Lean: `Physicslib4/AQFT/HaagKastler/*.lean`, `Physicslib4/AQFT/{KMS,PositiveEnergy}.lean`, + spot checks into `Physicslib4/GNS/*` and `Physicslib4/Analysis/CStarCompletion.lean`. + `Physicslib4/AQFT/HaagKastlerCurved/*` and + `blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex` are out + of scope (a different blueprint file); found and skipped as such. +- `scratch_*` files ignored (none found in scope). +- No file was modified. + +## Method + +- Re-read the full blueprint tex, extracted every `\label`/`\lean`/`\uses`/`\leanok` + line (`grep -n`, ~196 distinct `\lean{}` identifiers across the file, up from + ~193 at the previous review — three new declarations from the fixes: + `LocalCommutativity.commute_ι`, `QuasilocalAlgebra.commute_ι_iff_commute_map`, + `isCovariantQuasilocal`). +- Targeted re-read of every file the prior review's High/Medium/Low findings + named, plus a full read of `Net.lean`, `LocalCommutativity.lean`, + `EinsteinCausality.lean`, `LocalVonNeumann.lean`, `GeometricCovariance.lean`, + `LorentzCovariance.lean`, `QuasilocalAction.lean`, `QuasilocalIntertwiner.lean`, + `PositiveEnergy.lean`, `VacuumState.lean`, `KMS.lean`, `QuasilocalKMS.lean`, and + a line-by-line comparison of each against the corresponding blueprint prose. +- Ran a Python script over the tex to (a) extract all `\lean{...}` identifiers and + grep the last dotted component against the whole `Physicslib4` tree (0 possibly- + missing out of 196), and (b) flag any `\label` block whose first ~800 characters + contain `\lean{` without a `\leanok` nearby (0 flagged). +- Grepped the whole scope for `sorry`, `admit`, `native_decide`, `skipKernelTC`, + `implemented_by`, bare `axiom` declarations, `nolint`, the `Restriction:` marker, + and the removed names `commAlgebra`, `CovariantQuasilocalAlgebra`, + `covLocalOperators`, `covLocalVonNeumann`, `hcompat` (as a hypothesis/field, not + as a coincidental local-variable name). +- Read `.git/lean-kit/verify-receipt.json` and looked for `.git/lean-kit/approvals.json` + (absent). Did not run `lake build`, `lean_verify`, or `lean_guard.py verify` + (read-only bash only per policy); the receipt/kernel-axiom claims below rest on + that file and on the grep sweep, not on a fresh build. + +## Status of previous findings + +All three findings from `review-2026-09-sec10.5.md` are **fixed**, verified by reading: + +- **H1 (Einstein causality / local von Neumann algebras proved about the wrong + ambient algebra) — fixed.** `HaagKastlerNet.commAlgebra` and + `CovariantQuasilocalAlgebra` are gone (`grep -rn "commAlgebra\|CovariantQuasilocalAlgebra"` + across `Physicslib4/` returns nothing; the two tex hits at line 480 are historical + narrative about the removal, not stale links). `LocalCommutativity` still + quantifies existentially over *some* `QuasilocalAlgebra U i` + (`LocalCommutativity.lean:74-81`), but the new transfer lemma + `LocalCommutativity.commute_ι` (`LocalCommutativity.lean:106-117`, + `lmm:local-commutativity-any-quasilocal`) proves commutation holds in *every* + `QuasilocalAlgebra U i` — routing both witnesses through a common local algebra + `𝔘(B)` via `QuasilocalAlgebra.commute_ι_iff_commute_map`. `Net.lean:213-234` + (`commute_ι_of_spacelike`) instantiates this at `N.quasilocal`, and + `EinsteinCausality.lean`, `LocalVonNeumann.lean` and `GeometricCovariance.lean` + are now uniformly stated for representations `π : N.quasilocal.carrier →⋆ₐ[ℂ] …` + — one coherent object, matching the blueprint's single "quasilocal algebra 𝔘" + throughout `def:local-von-neumann` onward. `GeometricCovariance.lean` no longer + has its own `covLocalOperators`/`covLocalVonNeumann`; it now uses + `HaagKastlerNet.localOperators`/`localVonNeumann` from `LocalVonNeumann.lean` + directly (confirmed by reading both files in full). +- **M1 (missing `Restriction:` marker) — fixed.** `PositiveEnergy.lean:49-53` + (`IsPositiveEnergy`) and `VacuumState.lean:137-141, 198-199` + (`HaagKastlerNet.IsVacuumState`, `IsVacuumStateConcrete`) now carry + `**Restriction:**` lines naming the bounded-generator restriction and what it is + waiting on (Stone's theorem), matching the `StrongDensity.lean` template. The fix + also propagated correctly to a declaration the prior review didn't reach: + `QuasilocalKMS.lean:97-99` (`IsGroundStateForFlow`) carries the same marker, + inheriting the restriction from `IsPositiveEnergy` as the docstring states. +- **L1/B1 (Axiom 5's own text still used strict `⊂`) — fixed.** + `haag-kastler-axioms.tex:609` now reads "basis elements + $\mathbf{B}_\iota \subseteq \mathbf{B}_\kappa$", consistent with Axiom 2's + correction at line 43 and with the Lean. `LorentzCovariance.lean:334-340` states + condition (3) over `B₁ ⊆ B₂` and now takes the Axiom 2 `Isotony` family `i` as an + explicit parameter of `LorentzCovariance U i` rather than a separately chosen + family — matching the tex's added sentence "The isotony family `i` is the one of + Axiom 2, taken as a parameter, not a separately chosen family" (line 339-340 of + the Lean docstring; tex line 609's surrounding prose agrees). One further, + unflagged consequence of this fix that I checked: `isCovariantQuasilocal` + (`QuasilocalIntertwiner.lean:162-166`) is now proved unconditionally for *every* + `QuasilocalAlgebra N.U N.isotony`, using exactly `covEquiv_isotony` (which is + itself stated against the Axiom 2 family per `Net.lean:201-211`); this is what + let `CovariantQuasilocalAlgebra` be deleted and `def:covariant-quasilocal-algebra` + re-pointed at `HaagKastlerNet.action` (tex lines 1710-1717), whose text ("No + further data is needed: the embeddings of 𝔘 are automatically + covariance-compatible") I checked against `QuasilocalAction.lean` and + `QuasilocalIntertwiner.lean` line by line — match. +- **L2 (justified `nolint`)** — unchanged, still the single, still-justified use + at `Physicslib4/Analysis/CStarCompletion.lean:84`. + +No regression: the previously-clean items (Axioms 1, 2, 4's existence theorem, +`HaagKastlerNet`, `QuasilocalAlgebra`, `thrm:quasilocal-strongly-dense`'s honest +non-`\leanok` proof block) were re-read and are still faithful and unchanged in +substance. + +## New findings + +### Medium + +**N1 — The `lake build`/`lake lint` verify-receipt predates every fix reviewed +here; the tree has not been re-verified since.** + +- Location: `.git/lean-kit/verify-receipt.json` (`"time": "2026-09-18T14:08:28+00:00"`, + commands `["lake build", "lake lint"]`, both exit 0, `"files": 151`) vs. + `git log`: the H1/M1/L1 fixes reviewed above are commits `3166de7` through + `2dff159`, all timestamped `2026-09-25` (a week after the receipt) — + `9e7109f` ("Transfer local commutativity to every quasilocal algebra"), + `224e76b`/`9940322` (Axiom 5 isotony-family), `ebf637e`/`a743ce0` (drop + `hcompat`/`CovariantQuasilocalAlgebra`), `1df728f` (merge `covLocalVonNeumann`), + `3166de7` (Restriction lines). +- Problem: the receipt is the project's only record that `lake build` and + `lake lint` succeeded, and it is stale by a week and by every commit reviewed in + this memo. `.git/lean-kit/approvals.json` does not exist, so there is also no + approval record covering this window. I did not re-run `lake build`/`lake lint` + myself (read-only bash tool only, per the auditor role), so I cannot independently + confirm the tree still compiles and lints clean; the faithfulness findings above + rest on reading the Lean source, not on a kernel check or a lint pass. +- Classification: hygiene / process gap — verified by reading the receipt and the + git log; not a statement-faithfulness defect. +- Suggested fix (propose only): re-run the verify commands (`lake build`, + `lake lint`) and refresh the receipt now that this batch of fixes is in, so the + receipt's file count and digest reflect the current tree. + +### Low + +**N2 — `isPure_precomp_action_iff` (`QuasilocalIntertwiner.lean:688-691`) has no +blueprint node.** + +- Location: `Physicslib4/AQFT/HaagKastler/QuasilocalIntertwiner.lean:684-691`. +- Problem: this theorem ("purity of `ω` is equivalent to purity of `ω ∘ β_L`") is + a real, non-trivial specialization of `Physicslib4.GNS.isPure_precomp_iff` to the + covariance action, sitting between `lmm:quasilocal-action-coherence` and + `def:invariant-state` in the file, but it has no `\label`/`\lean{}` entry in + `haag-kastler-axioms.tex` at all — it is simply not a blueprint node. This is a + minor blueprint-completeness gap (a real Lean result the blueprint doesn't cite), + not a faithfulness defect in either direction, since nothing currently downstream + depends on it being a node. +- Classification: missing `\uses`/node coverage, not a mismatch. +- Suggested fix (propose only): add a short lemma node with + `\lean{Physicslib4.AQFT.HaagKastler.isPure_precomp_action_iff}` near + `lmm:quasilocal-action-coherence`, or note explicitly that it is intentionally + left as a Lean-only convenience lemma. + +## Blueprint-math issues + +None found beyond the already-fixed B1/B2 from the prior review. The KMS +subsections (`def:one-parameter-aut` through `def:ground-state-for-flow-covariance`, +lines 1884–2061) were read in full against `KMS.lean` and `QuasilocalKMS.lean` and +are mathematically sound and faithfully formalized (see Statement audit below). + +## Statement audit (items re-checked or newly checked this session) + +All **match** unless noted: + +- Axiom 3 / `LocalCommutativity` + `commute_ι` — match (existential-witness shape + is unchanged and correctly documented as such; the *use* of it is now uniform). +- `Net.lean`: `HaagKastlerNet.quasilocal`, `commute_ι_of_spacelike`, + `covEquiv`/`covEquiv_isotony` — match. +- Axiom 5 / `LorentzCovariance` (now parameterized by `Isotony U`) — match, + including the `⊆` correction. +- `def:covariant-quasilocal-algebra` / `HaagKastlerNet.action`, + `lmm:quasilocal-covariance-compatible` / `isCovariantQuasilocal`, + `thrm:quasilocal-lift-exists` / `nonempty_quasilocalLift` — match. +- `def:invariant-state` / `IsInvariantState`, + `thrm:invariant-state-gns-unitary` / `exists_gns_unitary`, + `thrm:irreducible-covariant-representation` / `exists_gns_irreducible_covariant` + — match. +- `def:positive-energy` / `IsPositiveEnergy` — **Lean assumes more** (bounded + generator vs. the intended unbounded one), a disclosed, now-correctly-marked + restriction (was M1). +- `def:vacuum-state` / `IsVacuumState`, `IsVacuumStateConcrete` — match modulo the + same disclosed restriction (inherited from `IsPositiveEnergy`). +- `def:one-parameter-aut`/`IsOneParameterAut`, `def:kms-state`/`IsKMSState`, + `def:strip-liouville`/`StripLiouville`, `thrm:strip-liouville-pos`/ + `stripLiouville_of_pos`, `thrm:kms-invariance`/`invariant_of_pos`, + `thrm:kms-correlation-unique`/`correlation_eqOn` — match (checked the strip + definitions, the boundedness clause, and the boundary-value equations term by + term against `KMS.lean`). +- `def:flow-aut-covariance`/`flowAut`, `lmm:one-parameter-aut-flow-covariance`/ + `isOneParameterAut_flowAut`, `def:kms-state-for-flow-covariance`/ + `IsKMSStateForFlow`, `thrm:kms-convex-for-flow-covariance`/`convexCombo` — match. +- `def:ground-state-for-flow-covariance`/`IsGroundStateForFlow` (+ `.invariant`, + `.exists_strongContinuous_unitary`) — match, correctly restriction-marked. + +## Hygiene summary (verified by grep, not by `lake build`) + +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`: exactly one + hit in scope, unchanged from before: `StrongDensity.lean:74` + (`dense_range_in_bicommutant`), correctly `**Restriction:**`-marked (line 57) and + correctly left off `\leanok` on the proof block (tex line 581) while the + statement is `\leanok` (tex line 572) — re-verified this session. +- Bare `axiom` declarations in scope: none. +- `nolint`: one use (`CStarCompletion.lean:84`), unchanged and justified. +- `Restriction:` marker: five files now (`PositiveEnergy.lean`, `VacuumState.lean`, + `StrongDensity.lean`, `QuasilocalKMS.lean`, plus one in the out-of-scope curved + tree `HaagKastlerCurved/StabilizerKMS.lean`), up from one at the prior review. +- Stale references to removed names (`commAlgebra`, `CovariantQuasilocalAlgebra`, + `covLocalOperators`, `covLocalVonNeumann`): none, other than the tex's own + historical narrative note about the removal (line 480), which is accurate. +- `.git/lean-kit/approvals.json`: does not exist — no approvals in effect to audit. +- `.git/lean-kit/verify-receipt.json`: stale relative to current sources (N1). + +## Classification counts (items audited this session: 24) + +- match: 20 +- notation only: 0 (previous L1/B1 now fixed) +- Lean assumes more: 2 (`IsPositiveEnergy`, `IsVacuumState`/`IsVacuumStateConcrete` + and `IsGroundStateForFlow` grouped as one restriction-family — disclosed, + correctly marked) +- Lean concludes less: 0 (previous H1 fixed) +- different objects: 0 (previous H1 fixed) +- edge cases differ: 0 +- can't determine: 0 +- new findings: 1 medium (N1, process/verify-receipt staleness), 1 low (N2, + missing blueprint node for a Lean-only lemma) + +## What was verified by tool vs. by reading + +- Verified by tool/script: all 196 distinct `\lean{}`-cited identifiers resolve + (grep on the final dotted component across `Physicslib4/`, 0 misses); no + `\label` block has `\lean{` without a nearby `\leanok`; the `sorry`/`admit`/ + `native_decide`/`skipKernelTC`/`implemented_by`/bare-`axiom`/`nolint`/ + `Restriction:`/removed-name greps; the verify-receipt timestamp vs. `git log` + commit timestamps. +- Judged by reading: every statement-faithfulness comparison above (Axioms 3 and + 5, `HaagKastlerNet`, the quasilocal-algebra/covariance-action chain, the + invariant-state and vacuum-state definitions, the KMS and covariance-flow-KMS/ + ground-state definitions and theorems), the confirmation that H1/M1/L1 are + genuinely fixed (not just relabeled), and N2. No `lean_verify`, `lake build`, + or `lean_guard.py verify` was run (read-only bash only), so kernel-level + axiom-usage and proof-completeness claims rest on the grep sweep for `sorry`/ + `axiom`, not on a fresh build; N1 records that gap explicitly. diff --git a/notes/agents/review-2026-09-25-sec10.6.md b/notes/agents/review-2026-09-25-sec10.6.md new file mode 100644 index 0000000..fcbbf12 --- /dev/null +++ b/notes/agents/review-2026-09-25-sec10.6.md @@ -0,0 +1,295 @@ +# Audit: blueprint §10.6 "Haag-Kastler Axioms in Curved Spacetime" (follow-up) + +Date: 2026-09-25 +Scope: `blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex` +(all nodes) and the Lean it cites: `Physicslib4/AQFT/HaagKastlerCurved/{LocalAlgebras, +Isotony, LocalCommutativity, LocalAlgebra, IsometricCovariance, Net, +EinsteinCausality, LocalVonNeumann, Concrete, GeometricCovariance, Purity, +CovariantState, StabilizerAction, StabilizerKMS, Spacetime}.lean`, plus the +`Physicslib4.Spacetime.*` bridge files it relies on +(`toAbstract`, `toAbstractIdentityComponent`, `Isometry`, `CausalComplement`) +and `Physicslib4.AQFT.PositiveEnergy`. This is a follow-up to +`notes/agents/review-2026-09-sec10.6.md` (2026-09-25, earlier the same day), +whose findings H-1, M-1, M-2, L-1 this memo re-checks against the changes made +since. + +Read-only review. No `.lean`/`.tex` files were modified. + +## Method + +Tool-verified: +- `git log --format='%h %ad %s' -- ` to identify the five commits + claimed to act on the previous review (`3166de7` Restriction lines, + `224e76b` "drop hcompat", `a743ce0`, `6ff85aa` docstring fixes, `bc0d8c5` + identity-component bridge for general covariance), and + `git diff ac97898..HEAD --stat`/`git diff` on the files in scope to see the + literal edits (confirms `IsometricCovariance` now takes `i : Isotony U` as a + parameter, `hcompat` is gone from `GeometricCovariance.lean`, and the + `\lean{}`/prose of `thrm:von-neumann-geometric-covariance-in-curved-spacetime` + was rewritten to add `stabAutHom_commIsotony`). +- `lake build` on the five touched modules + (`GeometricCovariance`, `IsometricCovariance`, `LocalCommutativity`, + `StabilizerKMS`, `GeneralCovariance`): succeeds, 3123/3123 jobs, olean + timestamps confirm they were rebuilt after the latest commit (`bc0d8c5`, + 2026-09-25T17:17). +- `lake env lean` + `#print axioms` on `IsometricCovariance`, + `HaagKastlerNet.stabAutHom_commIsotony`, `HaagKastlerNet.lieConj_image_localVonNeumann`, + `HaagKastlerNet.IsGroundStateForFlow`, `IsGenerallyCovariant`: all report + exactly `[propext, Classical.choice, Quot.sound]`. +- A standalone Lean snippet proving that `h₁' : (g:M.Isom) • B₁ ⊆ B` follows + from `h₁ : B₁ ⊆ B` and `g : ↥(MulAction.stabilizer M.Isom B)` alone + (`Set.smul_set_mono h₁` transported along `MulAction.mem_stabilizer_iff.mp + g.2`) — compiles with no errors (see Finding N-2). +- `grep` for `sorry`, `admit`, `native_decide`, `debug.skipKernelTC`, + `implemented_by`, `nolint`, `hcompat` across the files in scope: no hits + (the only remaining `hcompat` occurrences are an unrelated local variable + name in the Minkowski `QuasilocalIntertwiner.lean`). +- `grep`/script check of all 65 `\lean{...}` names in the tex file against + `blueprint/lean_decls`: 0 missing (up from 64 in the previous review; the + new name is `stabAutHom_commIsotony`, added to + `thrm:von-neumann-geometric-covariance-in-curved-spacetime`'s `\lean{}`). +- `grep` for a `_geometric`/`_identityComponent` specialization of any + `GeometricCovariance.lean` declaration anywhere in the repository: 0 hits + (see Finding N-1). +- Read `.git/lean-kit/verify-receipt.json` (`lake build` + `lake lint`, both + exit 0, timestamped 2026-09-18T14:08:28Z) and compared against + `git log` for the scope: five commits touching this exact scope post-date + the receipt (`3166de7`, `224e76b`, `a743ce0`, `6ff85aa`, `bc0d8c5`, all + 2026-09-25). `.git/lean-kit/approvals.json` does not exist — no approvals in + effect. + +Judged by reading: the statement-by-statement comparison of the blueprint's +Axiom 5 prose against the new `IsometricCovariance` signature; the diagnosis +that the `LocalCommutativity` declaration docstring was only half-fixed; the +severity/impact assessment of each finding. + +## Status of previous findings (`review-2026-09-sec10.6.md`) + +**H-1 (IsometricCovariance's private isotony family) — FIXED.** +`Physicslib4/AQFT/HaagKastlerCurved/IsometricCovariance.lean:78-102`: +`IsometricCovariance` is now `def IsometricCovariance (U : LocalNet M) (i : +Isotony U) : Prop := ...`, and clause (3) is stated directly against `i.map` +(no more internally-bound `ι`). `Net.lean:51-68` wires the net's own `isotony` +field into `isometricCovariance : IsometricCovariance U isotony`. The blueprint +text (`tex:114`, diff above) now reads `⊆` (matching the earlier Axiom 2 fix) +and is otherwise unchanged, and it already matched this reading. In +`GeometricCovariance.lean`, the `hcompat` hypothesis is gone; the coherence +between `stabAutHom` and `commIsotony` is now the *derived* theorem +`stabAutHom_commIsotony` (lines 50-61), proved from `covEquiv_commIsotony` +(Axiom 5 clause (3), now against the real Axiom 2 family) transported along +`g • B = B`. Blueprint tex was updated to match +(`tex:281`, diff above: "is not a hypothesis: it is condition (3) of Axiom 5 +... transported along `g·B=B`"). Classification of +`def:isometric-covariance-in-curved-spacetime` moves from **Lean concludes +less** to **match**. + +**M-1 (missing `Restriction:` marker on the bounded-generator scaffold) — FIXED.** +`Physicslib4/AQFT/PositiveEnergy.lean:49` now carries +`**Restriction:** the generator P is required to be bounded ...`, and points to +the new `Physicslib4.Spectral.Unbounded` module (a substantial, and separately +unaudited, ~5700-line unbounded-operator development that exists but does not +yet contain Stone's theorem or a construction of one-parameter unitary groups +from unbounded generators — the docstring's phrasing ("Unbounded self-adjoint +operators and their spectral theorem are now available... It is waiting on +Stone's theorem, which is in neither Mathlib nor this project") is accurate, +not an overclaim). The downstream sites all carry consistent inherited markers: +`StabilizerKMS.lean:147` (`IsGroundStateForFlow`), `QuasilocalKMS.lean:97`, +`VacuumState.lean:137,198`. + +**M-2 (stale `LocalCommutativity.lean` docstring) — PARTIALLY FIXED; the +identical defect recurs three lines below where it was fixed.** +Commit `6ff85aa` corrected the *module*-level "Modelling notes" bullet +(`LocalCommutativity.lean:40-46`, now: "the predicate takes the `Isotony` +family as a parameter ... it introduces no family of its own"). But the +doc-comment attached directly to the declaration itself, +`LocalCommutativity.lean:55-67`, was not touched and still reads: +> "A local net `U` on a Lorentzian spacetime `M` satisfies *local +> commutativity* if **there is a coherent family of isotony +> `*`-monomorphisms** `ι : 𝔘(B₁) ↪ 𝔘(B₂)` ... such that ..." +This is exactly the pre-fix existential phrasing the previous review flagged, +now contradicting the `i : Isotony U` explicit parameter three lines below it +in the same file. This is the text a reader sees on hover +(`lean_hover_info`)/in generated docs for the declaration, so it is the more +consequential of the two copies and it is still wrong. See Finding N-3 below. + +**L-1 (`Concrete.lean` full-group bridge vs. the identity-component +restriction of Axiom 5) — FIXED for the case it flagged.** +`GeneralCovariance.lean` (blueprint §10.7, `def:general-covariance-in-curved-spacetime`, +outside this file's `\lean{}` list but reachable via `\uses` from the +`spacetime.tex` chain) now states `NetTheory`/`IsGenerallyCovariant` over +`L.toAbstractIdentityComponent`, not `L.toAbstract`. `Concrete.lean:40-52`'s +docstring was updated to cross-reference this explicitly: "General covariance +(`NetTheory`, `IsGenerallyCovariant`) is stated over +`toAbstractIdentityComponent`, so its Axiom 5 asks only for the identity +component, as the blueprint does." This is exactly the suggested fix from the +previous review (which said "if a concrete Axiom-5 net is ever added to this +blueprint section, cite `toAbstractIdentityComponent` explicitly"), applied +one level up in the chapter rather than inside `haag-kastler-axioms-in-curved-spacetime.tex` +itself, which has no concrete-net theorem citing Axiom 5 directly. + +## New findings + +### Medium + +**N-1. The blueprint's claim that basis-set preservation is "discharged for a +net from a concrete geometric spacetime" is not backed by any Lean +declaration for the theorem it is attached to.** + +- `haag-kastler-axioms-in-curved-spacetime.tex:281` + (`thrm:von-neumann-geometric-covariance-in-curved-spacetime`): "the abstract + `LorentzianSpacetime` interface does not supply basis-set preservation + `M.IsBasisSet(g · B₁)`, so it enters as an explicit hypothesis, **discharged + for a net from a concrete geometric spacetime**." (This clause predates + today's edits — it was already present before `hcompat` was dropped — and + was carried over unchanged.) +- No such discharge exists. `grep -rl` across the repository for + `stabAutHom_commIsotony`, `lieConj_image_localOperators`, + `lieConj_image_localVonNeumann`, `lieConj_image_localVonNeumannAlgebra`, + `localVonNeumann_isFactor_smul`, `localVonNeumannEquiv` finds occurrences + only in `GeometricCovariance.lean` itself — no `_geometric` or + `_identityComponent` corollary anywhere, unlike the sibling axiom families + in the same chapter that *do* have this pattern: + `commute_of_spacelike_mono_geometric` (`Concrete.lean:96-108`), + `commute_of_spacelike_mono_identityComponent` (`IdentityComponent.lean:153-167`), + and `localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement_geometric` + (`Concrete.lean:117-128`). +- The ingredient needed to write such a corollary already exists: + `Spacetime.LorentzianSpacetime.toAbstractIdentityComponent_isBasisSet_smul` + (`IdentityComponent.lean:102-109`) proves exactly + `M.IsBasisSet B → M.IsBasisSet (φ • B)` for `φ` an identity-component + isometry over a concrete spacetime — precisely `hgB₁`. It just has not been + applied to `GeometricCovariance.lean`'s theorem family the way it (or its + sibling `isCompletelySpacelike_mono`) was applied to the other two families. +- *Suggested fix (report only)*: either add + `lieConj_image_localVonNeumann_identityComponent` (etc.) corollaries to + `IdentityComponent.lean` discharging `hgB₁` via + `toAbstractIdentityComponent_isBasisSet_smul`, matching the existing + pattern, or soften the blueprint prose to stop claiming a discharge that + does not exist yet. + +**N-2. Every theorem in `GeometricCovariance.lean` carries a hypothesis, +`h₁' : (g:M.Isom) • B₁ ⊆ B`, that is fully derivable from its neighbors and +does not need to be asked for.** + +- Affected declarations: `stabAutHom_commIsotony`, `lieConj_image_localOperators`, + `lieConj_image_localVonNeumann`, `lieConj_image_localVonNeumannAlgebra`, + `localVonNeumann_isFactor_smul`, `localVonNeumannEquiv` + (`GeometricCovariance.lean:50-166`) — six of six declarations in the file. +- Given `g : ↥(MulAction.stabilizer M.Isom B)` and `h₁ : B₁ ⊆ B`, + `h₁' : (g:M.Isom) • B₁ ⊆ B` follows in one line: + `MulAction.mem_stabilizer_iff.mp g.2 : g • B = B`, then + `Set.smul_set_mono h₁ : g • B₁ ⊆ g • B`, so `g • B₁ ⊆ B`. I checked this + compiles as a standalone lemma against the project's imports (tool-verified, + see Method). The proof of `stabAutHom_commIsotony` itself already performs + exactly this derivation internally, at line 57-60, via `e` and + `Set.smul_set_mono h₁` — but for a *different* purpose (transporting + `covEquiv_commIsotony`'s target), and the redundant `h₁'` is still taken as + a separate explicit argument rather than derived once inside each + declaration or factored into a `have`. +- This does not narrow what the theorems prove (the hypothesis is a tautology + given `h₁` and `g`, so it costs nothing to satisfy), so it is not a + faithfulness gap and I have not reclassified any statement-audit row over + it. But it is exactly the kind of avoidable per-site hypothesis that this + chapter's Axiom 2 rewrite (composition law `(c)`, blueprint `tex:45-46, + 226-228`) was designed to eliminate "throughout this chapter" — it was + eliminated for the isotony/local-commutativity family and reintroduced, + unnecessarily, in the newer geometric-covariance family. +- *Suggested fix*: drop `h₁'` from all six signatures and derive it internally + from `h₁` and `g.2` (one `have`), the same way `hgB` already is at + `stabAutHom_commIsotony:57-58`. + +### Low + +**N-3 (recurrence of M-2).** See "Status of previous findings" above: +`LocalCommutativity.lean:55-67`'s declaration docstring still says "there is a +coherent family of isotony `*`-monomorphisms ... such that", contradicting the +`i : Isotony U` parameter of the definition it documents. *Suggested fix*: +reword to match the already-corrected module docstring, e.g. "...if, for a +chosen isotony family `i` (Axiom 2, supplied as a parameter), the images of +`i` for any two completely-spacelike basis sets contained in a common basis +set commute." + +**N-4. Cosmetic docstring typo, unrelated to faithfulness.** +`Net.lean:159`: "Previously this was `Classical.choose`n from the Axiom 3 +existence witness" — a stray backtick has merged `` `Classical.choose` `` with +the word "chosen" into "`Classical.choose`n". Harmless, but worth a pass; it +briefly reads as a malformed identifier. + +## Statement audit (classification table, updated) + +Only rows whose classification changed from the previous review are shown; +all other rows (27 match-groups) are unchanged and were not re-derived from +scratch this round beyond the `git diff --stat` scope check confirming no +other blueprint items in this file were touched. + +| Blueprint node | Lean | Classification (this round) | Classification (previous round) | +|---|---|---|---| +| `def:isometric-covariance-in-curved-spacetime` | `IsometricCovariance` | **match** | Lean concludes less (H-1) | +| `def:haag-kastler-net-in-curved-spacetime` | `HaagKastlerNet` | match (no longer inherits H-1) | match (inherited H-1) | +| `thrm:von-neumann-geometric-covariance-in-curved-spacetime` and family | `lieConj_image_*`, `stabAutHom_commIsotony`, `localVonNeumannEquiv`, `localVonNeumann_isFactor_smul` | match *as stated* (see N-1, N-2 for adjacent, non-classification-changing issues) | match *as stated* (root cause H-1) | + +**Counts (this round):** match 28 (grouped rows; all `\lean{}`-tagged nodes in +this file), Lean-concludes-less 0, notation-only 0, Lean-assumes-more 0, +different-objects 0, edge-cases-differ 0, can't-determine 0. + +## Blueprint's own mathematics + +No new blueprint-math errors found. The Axiom 5 prose and the +geometric-covariance theorem's revised remark (`tex:281`, quoted above) are +internally consistent with the intended mathematics; the one issue found +(N-1) is a claim about what the *Lean development* discharges, not an error in +the blueprint's mathematical content. + +## Lean hygiene + +- No `sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/`implemented_by`/ + `nolint` in any file in scope (grep, tool-verified). +- `hcompat` fully removed from the curved development (grep, tool-verified); + the sole remaining occurrence of the string is an unrelated local variable + name in `Physicslib4/AQFT/HaagKastler/QuasilocalIntertwiner.lean` (Minkowski + chapter, out of scope). +- `Restriction:` markers present and consistent at every bounded-generator + site touched by this chapter (`PositiveEnergy.lean:49`, + `StabilizerKMS.lean:147`, `VacuumState.lean:137,198`, + `QuasilocalKMS.lean:97`). +- `#print axioms` clean (`propext, Classical.choice, Quot.sound` only) on five + sampled theorems spanning the changed files (tool-verified, see Method). + +## Integrity / process + +**The verify-receipt is stale relative to the changes under review.** +`.git/lean-kit/verify-receipt.json` records `lake build` and `lake lint` both +exiting 0 at `2026-09-18T14:08:28Z`. Five commits touching the files in this +audit's scope post-date that receipt: `3166de7`, `224e76b`, `a743ce0`, +`6ff85aa`, `bc0d8c5` (all 2026-09-25). I independently re-ran `lake build` on +the five touched modules and it succeeded (3123/3123 jobs), and sampled +`#print axioms` came back clean, so the *build* is not currently broken — but +the recorded receipt does not currently vouch for these changes, and I did not +run `lake lint`, so lint-cleanliness of the new code (e.g., any unused-variable +lint on the now-provably-redundant `h₁'` from N-2, or docstring-formatting +lints) is unverified. No `.git/lean-kit/approvals.json` exists, so there are +no approvals to review. *Suggested action*: re-run +`python3 ~/.claude/lean-kit/lean_guard.py verify` (or the project's +`verify_commands`) and refresh the receipt before treating this round of +fixes as settled. + +## Summary counts + +- Statement-audit nodes: 28 match-groups, 0 non-matches (all resolved since + the previous round's single non-match, H-1). +- Findings this round: 0 High, 2 Medium (N-1, N-2), 2 Low (N-3, N-4); plus one + process finding (stale verify-receipt). +- Previous findings: H-1 fixed, M-1 fixed, M-2 half-fixed (reopened as N-3), + L-1 fixed. +- `\lean{}` link integrity: 65/65 resolve; 0 dangling (tool-verified). +- Tool-verified: `git diff`/`git log` against the previous review's cited + lines; `lake build` on the five touched modules; `#print axioms` on five + theorems; a standalone compile check proving N-2's redundancy claim; greps + for `sorry`/`admit`/`nolint`/`hcompat`/discharge-corollary names; + `blueprint/lean_decls` name resolution; receipt-vs-`git log` timestamp + comparison; absence of `approvals.json`. +- Judged by reading: the diagnosis that `LocalCommutativity.lean`'s + declaration-level docstring (as opposed to its module-level docstring) was + not fixed; the severity assessment of N-1/N-2; confirmation that + `GeneralCovariance.lean`/`Concrete.lean` correctly close out L-1 even though + the fix lives in the neighbouring §10.7 file rather than this one. diff --git a/notes/agents/review-2026-09-26-sec10.1-10.7.md b/notes/agents/review-2026-09-26-sec10.1-10.7.md new file mode 100644 index 0000000..82aa5c0 --- /dev/null +++ b/notes/agents/review-2026-09-26-sec10.1-10.7.md @@ -0,0 +1,253 @@ +# Review: Blueprint §10.1 (GNS Construction Details) and §10.7 (General Covariance) + +Third pass. Follow-up to `notes/agents/review-2026-09-sec10.1-10.7.md` and +`notes/agents/review-2026-09-25-sec10.1-10.7.md`. Read-only review; no +`.lean`/`.tex` files were modified. + +## Scope + +- `blueprint/src/sections/sec10/gns-construction-details.tex` (§10.1) +- `blueprint/src/sections/sec10/general-covariance-in-curved-spacetime.tex` (§10.7) +- Every Lean declaration their `\lean{}` tags cite, plus direct dependencies: + `Physicslib4/GNS/{Basic,Construction,NullSpace,CauchySchwarz}.lean`, + `Physicslib4/AQFT/HaagKastlerCurved/{GeneralCovariance,IdentityComponent,Net}.lean`, + `Physicslib4/Spacetime/CrossMetricIsometry.lean`. +- Read in full because of this session's changes, though not in the task's + explicit file list: `Physicslib4/AQFT/HaagKastlerCurved/GeometricCovariance.lean` + (now imported by `IdentityComponent.lean`, source of the new theorem + `lieConj_image_localVonNeumann_identityComponent`), and the corresponding + blueprint entries in `haag-kastler-axioms-in-curved-spacetime.tex` and + `spacetime.tex` that cite the declarations these two theorems depend on + (`thrm:von-neumann-geometric-covariance-in-curved-spacetime`, + `lmm:axiom5-basis-preservation`). + +## Method + +- Read both in-scope blueprint sections in full; cross-referenced every + `\lean{...}` tag against the cited declaration by reading the Lean source. +- Read `Physicslib4/GNS/{Basic,Construction,NullSpace,CauchySchwarz}.lean` and + `Physicslib4/AQFT/HaagKastlerCurved/{GeneralCovariance,IdentityComponent}.lean` + in full. +- **Tool-verified**: `git log 2dff159..HEAD` and + `python3 ~/.claude/lean-kit/lean_guard.py check --base 2dff159` to enumerate + every protected change since the previous review's `HEAD`, then `git show + 15b3ce6 -- ` on each flagged file to read the exact diff. +- **Tool-verified**: `lake env lean` on a scratch file importing the GNS and + GeneralCovariance/IdentityComponent files, running `#print axioms` on + `gns_construction`, `gns_unique`, `lmm1`, `lmm2`, `cauchy_schwarz_inequality`, + `pullbackCarrierEquiv_apply`, `toAbstractIdentityComponent_pullback_isBasisSet`, + `IsGenerallyCovariant`, and the new + `lieConj_image_localVonNeumann_identityComponent` — all report only + `[propext, Classical.choice, Quot.sound]`. This also confirms the tree + compiles as-is (no stale `.olean`) and that the new theorem is real and + sorry-free. +- **Tool-verified**: `grep`/`rg` for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by`, `nolint`, `Restriction:` across the + scoped files (none found). +- **Tool-verified**: every `\lean{}` name cited by the two in-scope sections + (14 names) resolves against `blueprint/lean_decls`. +- **Tool-verified**: read `.git/lean-kit/approvals.json` — absent, so no + outstanding approvals to review (unchanged from previous sessions). +- Direction-of-pullback check (asked for explicitly): read + `Physicslib4/Spacetime/CrossMetricIsometry.lean:406-434` + (`pullback_alexandrovBasis_image`) and `Physicslib4/Spacetime/Pullback.lean:1-56` + to confirm the carrier bijection and basis-set-preservation lemma both run + *from* the pullback spacetime `ψ*L` *to* `L`, matching the blueprint's + explicit direction remark ("it is ψ, not ψ⁻¹..."). +- Everything else (statement-faithfulness judgments, `\uses{}` accuracy, the + blueprint's own proof steps, whether `NetEquivalence`/`IsGenerallyCovariant` + capture the intended notion) was judged by reading. +- Not re-reported: the stale `.git/lean-kit/verify-receipt.json` (per task + instructions — known, already flagged twice). + +## Status of previous findings + +| # | Previous finding | Status | +|---|---|---| +| L1 (2026-09-25) | `def:general-covariance-in-curved-spacetime`'s `\uses{}` list didn't directly cite `def:haag-kastler-net-in-curved-spacetime` | **Fixed**, commit `15b3ce6`. `general-covariance-in-curved-spacetime.tex:45` now lists it explicitly (tool-verified via `git show`). | +| M1 (2026-09-25) | Stale `verify-receipt.json` for the audited scope | Not re-litigated per task instructions; still stale, still a process note only. | +| Major 1 (2026-09) | `gns_unique` tagging gap | Confirmed still fixed (unchanged since last review). | +| Major 2 (2026-09) | `IsGeodesic := True` restriction marker | Confirmed still fixed (unchanged since last review; out of this session's diff). | +| All statement-audit classifications (both prior memos) | 8/8 match | Re-confirmed by re-reading; no regressions. | + +The two other changes named in the task description — +`GeometricCovariance.lean`'s `g • B₁ ⊆ B` derivation and +`lieConj_image_localVonNeumann_identityComponent` — were not previous +findings; they are new material reviewed fresh below. + +## Findings + +### Low + +**L1 (new). The newly added theorem citation on +`thrm:von-neumann-geometric-covariance-in-curved-spacetime` introduces the +same missing-`\uses`-edge pattern that the previous session's L1 fixed +elsewhere, in a fresh spot.** + +Commit `15b3ce6` added `lieConj_image_localVonNeumann_identityComponent` to +this theorem's `\lean{}` list and a new sentence to its body: "For a net over +a concrete Lorentzian spacetime, with the isometries connected to the +identity, it is discharged automatically +(`lieConj_image_localVonNeumann_identityComponent`)" +(`haag-kastler-axioms-in-curved-spacetime.tex:275-278`). That Lean theorem's +proof (`IdentityComponent.lean:177-193`) discharges the basis-set-preservation +hypothesis by directly calling +`toAbstractIdentityComponent_isBasisSet_smul`, which is exactly +`lmm:axiom5-basis-preservation` (`spacetime.tex:1277-1288`, +`\lean{Physicslib4.Spacetime.LorentzianSpacetime.toAbstractIdentityComponent_isBasisSet_smul}`). +Neither the theorem's own `\uses{}` list +(`def:local-von-neumann-in-curved-spacetime, +def:stabilizer-action-in-curved-spacetime, +thrm:gns-unitary-stabilizer-in-curved-spacetime`) nor its proof's `\uses{}` +list (`def:local-von-neumann-in-curved-spacetime, +thrm:gns-unitary-stabilizer-in-curved-spacetime, +thrm:von-neumann-geometric-covariance, def:isometric-covariance-in-curved-spacetime`) +mentions `lmm:axiom5-basis-preservation`, even though the newly cited +declaration's proof is nothing but a citation of it. This is not a soundness +gap (the Lean proof is correct and sorry-free, tool-verified) and not a +blocking issue — `def:isometric-covariance-in-curved-spacetime` is already +listed and `lmm:axiom5-basis-preservation` itself `\uses`s it — but the +dependency graph doesn't reflect what this session's own fix actually relies +on, exactly the situation the previous session's L1 (now fixed) described for +a different node. + +*Suggested fix*: add `lmm:axiom5-basis-preservation` to the proof's `\uses{}` +list of `thrm:von-neumann-geometric-covariance-in-curved-spacetime`. No Lean +change needed. This is out of the two named files +(`gns-construction-details.tex`, `general-covariance-in-curved-spacetime.tex`) +but directly downstream of `IdentityComponent.lean`, which the task named as +in scope and which is where the new theorem lives. + +**L2. Two blueprint text edits outside the two named files, correctly +acknowledging Lean changes — noted for completeness, not a defect.** + +`git diff 2dff159 HEAD` on `haag-kastler-axioms-in-curved-spacetime.tex` +(the `g • B₁ ⊆ B` hypothesis removal, quoted above) and on +`unbounded-spectral-theorems.tex` (a formalization note added for +`exists_subspace_isAlmostEigenvector`, chapter 9 material, out of scope) are +both honest, accurate descriptions of the corresponding Lean diffs — checked +against the actual `GeometricCovariance.lean` diff and against +`Spectral/Unbounded/Normal.lean`'s changes respectively. + +**L3 (recurring, not new). `.claude/CLAUDE.md` and `.claude/lean-policy.json` +still flagged by the guard as "changes to a protected file."** + +Same as the previous review: `.claude/` is untracked (`git status` still +shows `?? .claude/`), so this reads as a harness artifact, not a policy edit. +Flagged again only because it recurred; no action suggested beyond what the +previous memo already said. + +## New material reviewed in depth (per task's request) + +- **`NetEquivalence` / `IsGenerallyCovariant` against the blueprint's notion.** + Re-derived by reading, not just re-checked: `NetEquivalence` is a `structure` + (the `Θ` family is a field, `theta`, not an existence witness — matches "Θ + must be data"), and its `naturality` field is a `∀`-quantified equation over + the *chosen* `commIsotony` embeddings of both nets — matches "the ιᵢ come + for free" from Axiom 2. `IsGenerallyCovariant` wraps `NetEquivalence` in + `Nonempty (...)`: this is correct, not a weakening — the blueprint's own + prose treats "the nets are equivalent" as a relation between two already-given + nets (an existence claim: *some* Θ witnesses it), while `Θ` itself, once + chosen, is data. The two readings (data vs. existence) apply at different + points in the blueprint text and the Lean encoding tracks the distinction + correctly. +- **Direction of pullbacks.** Tool/read-verified (see Method): + `pullbackCarrierEquiv : (L.pullback ψ).Carrier ≃ L.Carrier` and + `pullback_alexandrovBasis_image` both run from the pullback spacetime to the + original, i.e. `e := ψ` reads *from* `ψ*L` *to* `L`, exactly the direction + the blueprint insists on ("it is ψ, not ψ⁻¹, that carries ψ*L-diamonds to + L-diamonds", `general-covariance-in-curved-spacetime.tex:51`). No + direction bug found. +- **GNS Lean types vs. blueprint objects.** `State A` (`A →L[ℂ] ℂ` + positivity + + `‖·‖ = 1`) matches "element of the dual space that is positive and + normalized" for `[CStarAlgebra A]` (a unital C*-algebra). `IsCyclicVector` + matches (`Dense (Set.range fun a => π a Ω)`). `gns_construction`'s + conclusion existentially quantifies `H : Type u` in `A`'s own universe + (documented in the module docstring as a deliberate universe-polymorphism + choice, not a mathematical restriction) and bundles cyclicity, the + reproducing formula, and the faithfulness implication in one existential; + `gns_unique` is the separate uniqueness-up-to-unitary-equivalence statement. + Both match the blueprint theorem's content once read together (as the + `\lean{}` tag now lists both, fixed in an earlier session). +- **Edge cases (trivial algebras / zero Hilbert space).** No blueprint + divergence found. `State A` requires `[CStarAlgebra A]` with `‖ω‖ = 1`, + which is unsatisfiable for the zero ring (where `1 = 0` forces `‖1‖ = 0`); + Mathlib's C*-algebra axioms already exclude the trivial algebra, so `State` + is vacuously never invoked there — consistent with the blueprint, which + never discusses that case either. `IsCyclicVector`/`gns_construction` place + no constraint excluding the zero Hilbert space as such, but a `CStarAlgebra` + is automatically nontrivial, so the constructed `H_ω` (built from `A` + itself) cannot degenerate to the zero space either. Nothing here narrows or + widens the blueprint's claim; not investigated further given the budget. +- **`GeometricCovariance.lean`'s `g • B₁ ⊆ B` change** (the specific fix named + in the task). Read the whole diff (`git show 15b3ce6 -- + Physicslib4/AQFT/HaagKastlerCurved/GeometricCovariance.lean`): every + occurrence of the hypothesis `h₁' : (g : M.Isom) • B₁ ⊆ B` was removed and + replaced by the new lemma `smul_subset_of_mem_stabilizer g h₁ : (g : M.Isom) + • B₁ ⊆ B` (derived from `h₁ : B₁ ⊆ B` and `g ∈ Stab(B)` via + `Set.smul_set_mono` and `MulAction.mem_stabilizer_iff`). This is a genuine + strengthening (one fewer hypothesis on `stabAutHom_commIsotony`, + `lieConj_image_localOperators`, `lieConj_image_localVonNeumann`, + `lieConj_image_localVonNeumannAlgebra`, `localVonNeumann_isFactor_smul`, + `localVonNeumannEquiv`), reused consistently (grep-verified, single + definition site, no duplication), and correctly reflected in the updated + blueprint prose (`haag-kastler-axioms-in-curved-spacetime.tex:277`: "The + inclusion g·B₁⊆B is not a hypothesis: it follows from B₁⊆B and g·B=B"). + No issues found. + +## Blueprint-math issues + +None found in §10.1/§10.7 proper. The one genuinely new mathematical content +in scope this session — discharging the `hgB₁`/`h₁'` side conditions of +curved geometric covariance automatically over the identity-component bridge — +is correct, sorry-free (tool-verified), and its blueprint prose accurately +describes what the Lean now does; the only gap is the missing `\uses` edge +(L1 above), a documentation/traceability issue, not a mathematical one. + +## Integrity checklist + +- **Axioms** (tool-verified, current tree, 9 declarations including the new + `lieConj_image_localVonNeumann_identityComponent`): all + `[propext, Classical.choice, Quot.sound]` only. +- **`sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/`implemented_by`**: + none in the scoped files or the newly-read `GeometricCovariance.lean` + (grep-verified). +- **`nolint`**: none introduced in scope this session (grep-verified in the + changed files); the pre-existing justified use on `Causality.lean`'s + `IsGeodesic` is out of this session's diff. +- **`Restriction:`**: none newly needed or newly missing in the files touched + by `15b3ce6` within scope. +- **`verify_commands`**: not re-reported per task instructions (known stale). +- **Approvals**: none in effect (`.git/lean-kit/approvals.json` absent, + tool-verified). + +## Summary counts + +- Statement audit: 8 blueprint items in scope (unchanged from the last two + reviews), still **8 match**, 0 non-matches, re-verified by reading. +- Previous findings: all confirmed fixed or, for the one deliberately not + re-litigated (stale verify-receipt), left as-is per task instructions. +- New findings this session: **2 Low** (a missing `\uses` edge on + `thrm:von-neumann-geometric-covariance-in-curved-spacetime` reproducing the + pattern of the now-fixed prior finding, in a node just outside the two named + files but downstream of in-scope `IdentityComponent.lean`; two out-of-scope + but accurate blueprint text edits noted for completeness) plus one recurring + non-finding (untracked `.claude/`). +- Deeper checks requested by the task — `NetEquivalence`/`IsGenerallyCovariant` + fidelity, pullback direction, GNS type-matching, trivial-algebra/zero-Hilbert-space + edge cases, the `g • B₁ ⊆ B` derivation — all came back clean; no new + mismatches found. + +Tool-verified: `\lean{}` name resolution against `blueprint/lean_decls` +(14 names); clean axioms via `lake env lean` `#print axioms` on 9 key +declarations (also confirms no stale `.olean` and that the new theorem +compiles); absence of `sorry`/`admit`/etc. and `nolint` via `rg`; the exact +diffs of `15b3ce6` via `git show`/`git diff`; the guard's protected-change +list via `lean_guard.py check --base 2dff159`; absence of +`.git/lean-kit/approvals.json`. +Judged by reading: statement-faithfulness of all 8 blueprint items; +`NetEquivalence`/`IsGenerallyCovariant` against the blueprint's data-vs-Prop +distinction; the pullback-direction remark against the actual lemma +signatures; GNS type correspondence; edge-case coverage; the mathematical +content and blueprint-prose accuracy of the `g • B₁ ⊆ B` derivation and the +identity-component discharge. diff --git a/notes/agents/review-2026-09-26-sec10.2.md b/notes/agents/review-2026-09-26-sec10.2.md new file mode 100644 index 0000000..04ab40c --- /dev/null +++ b/notes/agents/review-2026-09-26-sec10.2.md @@ -0,0 +1,227 @@ +# Review: Blueprint §10.2 "Spectral Theorems" vs Lean — deep statement audit + +Date: 2026-09-26 (session resumed 2026-09-28 after a session-limit interruption) +Reviewer: audit subagent (read-only) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/spectral-theorems.tex` (5829 lines; unchanged + since commit `effd1f5`, confirmed by `git log`). Chapter-10-only scope per CLAUDE.md. +- Lean: `Physicslib4/Spectral/{Basic,BorelCalculus,BorelClasses,ContinuousCalculus, + Forms,OperatorIntegral,ProjectionValuedMeasure,SpectralTheorem,Spectrum}.lean` + (7678 lines). `Physicslib4/Spectral/Unbounded/*` (§10.3) is explicitly out of scope. +- Prior memos: `review-2026-09-sec10.2.md`, `review-2026-09-25-sec10.2.md` (both + 0 High; link integrity and a handful of representation-choice Lows). This round + goes deeper: a statement-by-statement faithfulness read of a much broader sample + than either prior round, plus a check of the newly added `Spectrum.lean` note on + `thrm:gelfand-formula`. +- Task named "spectral subspaces (7.14–7.16)" as an area to sample. **These labels + do not exist in this file.** Grepped `blueprint/src/sections/sec10/spectral-theorems.tex` + for `7.14`, `7.15`, `7.16`, "spectral subspace": zero hits. They exist in the + *other* blueprint file, `unbounded-spectral-theorems.tex` (§10.3: `def:hall-7.14`, + `prpstn:hall-7.15`, `prpstn:hall-7.16`, cited from `Physicslib4/Spectral/Unbounded/*`), + which this task and CLAUDE.md's file list explicitly exclude. Confirmed by reading + commit `15b3ce6`'s diff to that file (a formalization note added there, referencing + exactly those labels). No action taken on them; noted here so the parent agent knows + the sample requirement's mention of 7.14–7.16 does not apply inside §10.2's file. + +## Method + +- Read the blueprint file section-by-section (preamble/notation, elementary bounded- + operator facts, projection-valued measures, operator-valued integration and its + sesquilinear/quadratic-form scaffolding, the resolvent/spectrum/Gelfand block, the + continuous functional calculus, the `𝓛₀`/monotone-class bootstrap, the bounded Borel + functional calculus and the `𝓕`/`𝓕₁`/`𝓕₂` classes, the spectral-measure construction + and uniqueness, the capstone theorem, and `def:functional-calculus`) and, for each + labelled item, read the *entire* paired Lean declaration by source (no `lean_hover_info` + tool available in this session — judged by direct reading throughout). +- Sample size: over 100 distinct blueprint labels read and compared statement-by- + statement against their Lean counterpart (well past the 40-node minimum), spanning + every callout in the task: the PVM definition and its four axioms + (`def:projection-valued-measure`), the associated measure + (`thrm:projection-valued-measures-associated-measure`), operator-valued integration + (`thrm:operator-valued-integration` and its `prpstn:integral-*` satellites), the + Borel/monotone-class argument (`def:L0-class` and its closure properties, + `thrm:monotone-class-theorem`, `lmm:hall-prblm-8.3.3{a,b,c}`), the continuous + functional calculus (`prpstn:hall-8.3`, `prpstn:hall-8.4` and its five parts), the + bounded Borel functional calculus (`def:hall-8.6`, `def:F-class`, `def:hall-8.8`, + `def:F1-F2-classes`), the bounded spectral theorem's existence and uniqueness + (`thrm:hall-8.10`, `thrm:hall-prblm-8.3.4`, `thrm:spectral-theorem-for-bounded-operators`), + and forms/polarization (`def:bounded-sesquilinear-form`, `def:bounded-quadratic-form`, + `prpstn:hall-a.59`, `prpstn:hall-a.61`, `prpstn:hall-a.62`, `prpstn:hall-a.63`). +- Read every relevant Lean file end-to-end: `Basic.lean`, `Forms.lean`, + `ProjectionValuedMeasure.lean`, `OperatorIntegral.lean` (key sections), + `BorelClasses.lean` (full), `BorelCalculus.lean` (through the `𝓕₁` bootstrap), + `ContinuousCalculus.lean` (full), `Spectrum.lean` (full), `SpectralTheorem.lean` + (capstone sections). +- `git log`/`git show --stat`/`git diff` to confirm the blueprint `.tex` is unchanged + since the last fully-tool-verified round (`effd1f5`), and to isolate exactly what + the most recent commit in scope (`15b3ce6`) changed in `Spectrum.lean`. +- Re-derived and judged the accuracy of the new `Spectrum.lean` note on + `thrm:gelfand-formula` by working through the `H = {0}` edge case by hand + (spectrum empty ⇒ `spectralRadius = 0`; `A = 0` ⇒ the sequence is constantly `0`), + and by cross-reading it against the adjacent, unaltered note on `def:spectral-radius`. +- Tool-verified (this session): `grep -rn` for `sorry`, `admit`, `native_decide`, + `skipKernelTC`, `implemented_by`, `axiom `, `nolint`, `Restriction:`, `TODO`/`FIXME` + across all nine in-scope files; `lake env lean` on a scratch file running + `#print axioms` on `existsUnique_spectralMeasure`, `functionalCalculus`, + `exists_spectralMeasure`, `pvm_eq_of_integral_id_eq`, `borelCalculus_eq_integral`; + `lake build Physicslib4.Spectral.SpectralTheorem`, which built successfully today + (`Build completed successfully (3051 jobs)`, only longstanding style-linter warnings + in `OperatorIntegral.lean`, unchanged since the file's original commit `ac97898`). +- Read `.git/lean-kit/verify-receipt.json` and confirmed `.git/lean-kit/approvals.json` + does not exist. Per task instructions, the receipt's staleness (`2026-09-18`) is + **not** re-reported as a fresh finding; noted only in "Status of previous findings". + +## Findings + +### High + +None. + +### Medium + +None new. (The stale verify-receipt, previously Medium, is not re-reported per task +instructions; it is still stale as of this session — three more commits have landed +in scope since the last review — but the harness has recorded it twice already.) + +### Low + +1. **New `Spectrum.lean` note on `thrm:gelfand-formula` is directionally correct but + its edge-case phrasing overstates what is known.** + `Physicslib4/Spectral/Spectrum.lean:74-80` (added in commit `15b3ce6`): "the + blueprint keeps that hypothesis [`H ≠ {0}`] because its real-valued `R(A)`, a + supremum over `σ(A) = ∅`, is not `0` on the zero space, whereas the limit is." + The blueprint's own `def:spectral-radius` (`spectral-theorems.tex:2542-2545`) + itself carries `\uses{conv:nonzero-hilbert-space, ...}`, i.e. `R(A)` is *undefined* + at `H = {0}` in the blueprint's own vocabulary, not a defined quantity that happens + to differ from `0`. The intended point — matching the adjacent, unchanged note on + `def:spectral-radius` three lines above ("Mathlib's `⨆` over the empty set is `0`, + ... rather than `-∞`") — is almost certainly "under the usual sup-of-the-empty-set + convention this would read `-∞`, not `0`", but as written it reads as though `R(A)` + is a well-defined nonzero real at `H = {0}`, which it is not per the blueprint's own + hypotheses. This is prose-only (the cited Lean identifier, + `spectrum.pow_nnnorm_pow_one_div_tendsto_nhds_spectralRadius`, is an exact, + `leanok`-verified citation of the general Mathlib theorem and needs no change); the + note would be more accurate reworded along the lines of "the blueprint's `R(A)` is + undefined there (see the `def:spectral-radius` note above), whereas Mathlib's + `ℝ≥0∞`-valued limit is well-defined and reads `0`." Judged by reading; the + underlying Lean statement itself is unaffected and correct. + **Location:** `Physicslib4/Spectral/Spectrum.lean:74-80`. + +2. **(Carried forward, re-verified, still open) `thrm:gelfand-formula` states an + unused, and Lean-unnecessary, `H ≠ {0}` hypothesis, and its own `\uses` does not + cite `conv:nonzero-hilbert-space`.** `spectral-theorems.tex:2686` states "Suppose + `H ≠ {0}`" but the theorem's `\uses` at line 2684 lists only + `def:bounded-operator-notation, def:spectral-radius`, and neither the one-line + blueprint proof (2691-2693) nor the cited Mathlib lemma uses the hypothesis. First + flagged by `review-2026-09-25-sec10.2.md` (Low 2); unchanged since — the tex file + has had no edits since `effd1f5`. No Lean change needed; a blueprint-only fix + (drop the hypothesis, or add `conv:nonzero-hilbert-space` to `\uses` for + traceability) is still open. + +3. **(Carried forward, re-verified) `spectrum ℝ A` stands in for `σ(A) ⊆ ℂ` + throughout `ContinuousCalculus.lean`, `BorelCalculus.lean` and `SpectralTheorem.lean`.** + Documented in each file's implementation notes and licensed by `prpstn:hall-7.7`; + re-confirmed by reading `def:hall-8.6`/`borelForm`, `def:hall-8.8`/`borelCalculus`, + `existsUnique_spectralMeasure`. No action needed. + +4. **(Carried forward, re-verified) `@[nolint unusedArguments]` on `L0`** + (`BorelClasses.lean:279`), justified by the docstring immediately above it + (`[MeasurableSpace X]` carried only for downstream type-checking). Confirmed the + only `nolint` in scope by grep this session. + +5. **Mildly confusing (but not incorrect) docstring wording on + `existsUnique_assocMeasure`.** `ContinuousCalculus.lean:427-428`: "Existence is + `assocMeasure` together with `integral_assocMeasure`; only uniqueness — which is + the regularity half of Riesz–Markov–Kakutani — is left open." Read in isolation + this suggests an unfinished proof, but the theorem immediately below is a complete, + `sorry`-free `∃!` proof of *both* halves (uniqueness is discharged via + `Measure.ext_of_integral_eq_on_compactlySupported`). "Is left open" appears to mean + "is the one part not already packaged by a named Mathlib lemma", not "is + unproved". Cosmetic; verified by reading the full proof body (no `sorry`) and by + the clean `#print axioms` result on downstream capstone theorems that depend on it + transitively. + +No item in the full statement-by-statement sample (see list in Method) was classified +as **Lean assumes more**, **Lean concludes less**, **different objects**, or **edge +cases differ**; every non-trivial representation choice (bundled sesquilinear forms +for `def:bounded-sesquilinear-form`, `spectrum ℝ A` for `σ(A)`, junk values `0` for +`ProjectionValuedMeasure.integral`/`borelCalculus`/`functionalCalculus` outside +`BddMeasurable`, the omission of the blueprint's redundant "`Eᵢ` cover `X`" hypothesis +from `inner_eq_zero_of_disjoint`) is explicitly documented at the definition or +theorem site and is a documented, benign generalization or notational transcription, +not a narrowing. + +## Blueprint-math issues + +None found beyond Low 1/2 above (both prose/traceability issues in the blueprint's +own text or its Lean-side commentary, not mathematical errors). The blueprint's own +proof sketches read this session (Riesz representation reduction, the `𝓛₀`/monotone- +class bootstrap, the polarization-identity derivation, the two-part existence/ +uniqueness assembly of the capstone theorem, the `𝒃²`-inequality argument for +`prpstn:hall-7.7`) are internally consistent with their `\uses` graphs. + +## Status of previous findings + +- Prior Medium (stale verify receipt): still open, not re-reported per task + instructions (known). +- Prior Low ("`thrm:gelfand-formula` states an unused hypothesis", `09-25` review + Low 2): **still open**, re-verified this session (Low 2 above). +- Prior Low ("representation gap not spelled out at `thrm:gelfand-formula`'s own + citation site", `09-25` review Low 3): **fixed** by commit `15b3ce6`, which added + the note now audited as this session's Low 1. The fix is directionally correct but + its own edge-case phrasing is slightly imprecise (Low 1 above) — a follow-on nit on + a fix that otherwise closes the gap the prior review flagged. +- Prior Low (`spectrum ℝ A` representation choice): re-verified, unchanged (Low 3 + above). +- Prior Low (`nolint` on `L0`): re-verified, unchanged (Low 4 above). +- Prior Low (separability/`Nontrivial H` prose conventions): re-verified by pattern; + no new instance found this session beyond the already-tracked Gelfand-formula case. +- The Laurent → Gelfand replacement (`effd1f5`) remains confirmed clean; the tex file + has had no further edits since, confirmed by `git log`. + +## Summary counts + +- Blueprint items read and compared statement-by-statement this session: **>100** + distinct labels (well above the 40-node minimum), spread across every subsection of + §10.2 named in the task. Classification: match (including documented "notation + only" and "junk value" sub-cases) — all; Lean assumes more — 0; Lean concludes + less — 0; different objects — 0; edge cases differ — 0; can't determine — 0. +- Findings this session: 0 High, 0 new Medium, 5 Low (1 new — the Gelfand-formula + note's edge-case phrasing; 1 re-verified-and-carried-forward still-open blueprint + nit; 3 re-verified unchanged from prior rounds). +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`/bare `axiom` + declarations in scope: 0 (grep-verified this session). +- `nolint` uses in scope: 1, justified (grep-verified this session). +- `Restriction:` markers in scope: 0 (none needed; the section's few deliberate + generalizations relative to blueprint prose are all in the "Lean is more general" + direction, not narrowings awaiting future work). +- Axiom check on five capstone/near-capstone declarations + (`existsUnique_spectralMeasure`, `functionalCalculus`, `exists_spectralMeasure`, + `pvm_eq_of_integral_id_eq`, `borelCalculus_eq_integral`): `propext, + Classical.choice, Quot.sound` only (tool-verified via `lake env lean` + + `#print axioms`, this session). +- `lake build Physicslib4.Spectral.SpectralTheorem`: succeeds today (tool-verified + this session), independent of the stale receipt. +- The task's named sample topic "spectral subspaces (7.14–7.16)" does not exist + inside this file's scope; it belongs to the out-of-scope §10.3 + (`unbounded-spectral-theorems.tex` / `Physicslib4/Spectral/Unbounded/*`). + +## Verified by tool vs. judged by reading + +- **Tool-verified:** absence of `sorry`/`admit`/`native_decide`/`skipKernelTC`/ + `implemented_by`/bare `axiom`/`Restriction:` (grep, this session); the single + `nolint` use (grep, this session); axiom closure of five capstone-adjacent + declarations (`lake env lean` + `#print axioms`, this session); that + `spectral-theorems.tex` is byte-for-byte unchanged since `effd1f5` (`git log`); + that `Spectrum.lean` is the only in-scope file touched by the most recent commit, + and exactly which lines it added (`git show`); successful build of + `Physicslib4.Spectral.SpectralTheorem` today (`lake build`). +- **Judged by reading:** faithfulness of the >100-node statement sample to the + blueprint (hypotheses, quantifiers, conclusions, junk values); the mathematical + accuracy of the new `Spectrum.lean` Gelfand-formula note, including hand-deriving + the `H = {0}` edge case; internal consistency of the blueprint's own proof + sketches; the interpretation of "is left open" in `ContinuousCalculus.lean`'s + `existsUnique_assocMeasure` docstring as harmless imprecision rather than an + unfinished proof (corroborated by reading the full, `sorry`-free proof body). diff --git a/notes/agents/review-2026-09-26-sec10.4.md b/notes/agents/review-2026-09-26-sec10.4.md new file mode 100644 index 0000000..2d62c4c --- /dev/null +++ b/notes/agents/review-2026-09-26-sec10.4.md @@ -0,0 +1,297 @@ +# Deep-dive audit: blueprint §10.4 "Spacetime" + +Date: 2026-09-26 + +Scope: `blueprint/src/sections/sec10/spacetime.tex` (all nodes) and every Lean +declaration its `\lean{...}` tags cite: `Physicslib4/Spacetime/{Basic, +CausalStructure, Curves, Causality, CausalComplement, LorentzianSpacetime, +Minkowski, MinkowskiDirected, MinkowskiDilation, LorentzCauchySchwarz, +LorentzCone, LorentzOrthogonal, LorentzCausality, Diffeo, DiffeoPath, +Isometry, IsometryCausality, IsometryTopology, Pullback, +CrossMetricIsometry}.lean`. `scratch_*` files ignored per project policy. + +This is a third pass over §10.4, following +`notes/agents/review-2026-09-sec10.4.md` and +`notes/agents/review-2026-09-25-sec10.4.md`, both of which reported all +findings resolved as of commit `388de55`. The task asked for a *deeper*, +statement-by-statement sample (≥ 40 nodes) rather than the file-wide +structural checks (formalization-note placement, `\lean` link resolution, +build/lint) the prior two passes already ran to exhaustion, with an explicit +instruction not to re-report the known `IsGeodesic := True` placeholder. + +## Method + +**Verified by reading** (full text of the Lean declaration compared, +sentence by sentence, against the blueprint's stated definition/theorem): +covers roughly 55 distinct blueprint nodes, sampled across every subsection +named in the task: + +- Spacetime/metric/time orientation: `def:spacetime`, `def:standard-minkowski-spacetime`, + `def:timelike-spacelike-null-vectors`, `lmm:causal-classification`, + `def:time-orientable`, `def:future-and-past-pointing-vectors`, + `lmm:pointing-orientation` — full read of `CausalStructure.lean`. +- Paths and curves: `def:paths`, `def:curves`, + `def:timelike-and-causal-smooth-curves`, + `def:future-and-past-oriented-smooth-curves`, + `thrm:smooth-curve-causal-well-defined`, `def:oriented-smooth-curve`, + `thrm:oriented-curve-well-defined`, `thrm:oriented-curve-projection`, + `def:endpoints`, `lmm:extremal-parameter-mem-frontier`, + `lmm:endpoint-parameter-space-eq-Icc` — full read of `Curves.lean` + (1030 lines), including `PathEquiv`/`SmoothPathEquiv`/ + `OrientedSmoothPathEquiv` and their `refl`/`symm`/`trans` proofs. +- Trips, `≪`/`≺`: `def:trip`, `def:causal-trip`, + `thrm:precedence-transitive`, `def:no-closed-causal-curve`, + `thrm:causal-order-refinements`, + `def:chronological-future-and-chronological-past`, + `def:causal-future-and-causal-past`, `lmm:chronological-implies-causal`, + `lmm:future-past-monotone`, Alexandrov definitions and openness lemmas, + causal diamonds, causal convexity, causal-convex hull — full read of + `Causality.lean` (712 lines). +- Spacelike complement / causal closure: `def:spacelike-related`, + `def:completely-spacelike`, `lmm:completely-spacelike-symm/structural`, + `def:spacelike-complement`, `lmm:spacelike-complement-order`, + `def:causal-closure`, `lmm:causal-closure-is-closure-operator`, + `def:causally-complete-region`, `thrm:causally-complete-lattice`, + `lmm:spacelike-complement-de-morgan`, `thrm:causal-complement-de-morgan` — + full read of `CausalComplement.lean` (466 lines). +- `def:lorentzian-spacetime` and the Alexandrov-basis theorems — full read of + `LorentzianSpacetime.lean`. +- Dilations: `lmm:minkowski-dilation-cone`, + `thrm:minkowski-dilation-causal-automorphism`, + `thrm:minkowski-dilation-not-isometry` — full read of + `MinkowskiDilation.lean`. +- Isometries: `lmm:isometry-preserves-classification` and the `Isometry` + structure/group instance — full read of `Isometry.lean`. +- Pullback metrics and cross-metric isometries: `def:pullback-metric` + through `thrm:pullback-is-lorentzian-spacetime` (the entire final + subsection of the file) — full read of `Pullback.lean` (624 lines) against + the corresponding ~35 blueprint nodes, plus the opening of + `CrossMetricIsometry.lean` for `def:cross-metric-isometry`'s generalisation + from one manifold to two (`Diffeo M N` vs. the blueprint's `Diffeo M M`), + which the file's own docstring flags as a deliberate, harmless + generalisation. + +**Tool-verified:** +- `git log --oneline -- Physicslib4/Spacetime/ blueprint/.../spacetime.tex`: + no commits since `388de55` (the commit the 2026-09-25 follow-up audited), + so the source tree for this pass is byte-identical to what that audit + already checked structurally. This pass adds statement-level depth on the + same tree rather than auditing new changes. +- `grep` for `sorry`, `admit`, `native_decide`, `skipKernelTC`, + `nolint`, `axiom` across `Physicslib4/Spacetime/*.lean`: same result as + the 2026-09-25 audit — no `sorry`/`admit`/`native_decide`/`skipKernelTC`; + one `nolint` (`Causality.lean:81`, `@[nolint unusedArguments]` on + `IsGeodesic`, backed by its `**Restriction:**` docstring); no bare + `axiom` declarations. +- Cross-checked every `\lean{...}` name touched above against the + declaration actually found in the cited file (all present, all matching + the cited `\leanfile`). + +**Judged by reading, not independently re-run:** `lake build`/`lake lint` +status (unchanged tree since the 2026-09-25 audit, which ran and passed +both fresh; not re-run here since no source changed). + +## Findings + +### Medium — `IsPastEndpoint`/`IsFutureEndpoint` are typed for `SmoothPath`, contradicting the blueprint's explicit "no smoothness input" clause + +**Location:** `Physicslib4/Spacetime/Curves.lean:920` and `:932`, cited by +`def:endpoints` (`spacetime.tex:270-281`). + +The blueprint's `def:endpoints` states the past/future-endpoint notion for an +**arbitrary path**, and says so explicitly: + +> "For an arbitrary path $\mu$, the past and future endpoints are singled out +> by extremality of the parameter, not by counting boundary components, and +> **no causal or smoothness input enters**: $p$ is a past endpoint of $\mu$ +> if there is an $s \in \Sigma$ with $\mu(s) = p$ that is minimal..." +> (spacetime.tex:278, emphasis added) + +The Lean declarations cited by this node are: + +``` +def IsPastEndpoint (μ : M.SmoothPath) (p : M.Carrier) : Prop := + ∃ s ∈ μ.parameterSpace, μ.toFun s = p ∧ (∀ s' ∈ μ.parameterSpace, s ≤ s') + +def IsFutureEndpoint (μ : M.SmoothPath) (p : M.Carrier) : Prop := + ∃ s ∈ μ.parameterSpace, μ.toFun s = p ∧ (∀ s' ∈ μ.parameterSpace, s' ≤ s) +``` + +(`Curves.lean:920`, `:932`). Both take `μ : M.SmoothPath`, not `μ : M.Path`. +The companion `IsEndpoint (μ : M.Path) (p : M.Carrier) : Prop := ∃ s ∈ +frontier μ.parameterSpace, μ.toFun s = p` (`Curves.lean:905`) is correctly +general — it is the two more specific declarations that narrow the domain. +Nothing in the *definition body* of `IsPastEndpoint`/`IsFutureEndpoint` uses +smoothness (only `parameterSpace`, `toFun`, and the order on `ℝ`, exactly as +the blueprint's own body says), so the restriction to `SmoothPath` is a type +signature choice, not a proof necessity: the same three-line body would +type-check verbatim for `μ : M.Path`. + +This is a genuine, if practically narrow, faithfulness gap: it is Lean +*assuming more* (an extra structural hypothesis — smoothness plus +non-vanishing derivative — on the path) than the blueprint's own text, which +goes out of its way to disclaim exactly that hypothesis. It has no observed +downstream proof consequence, because every consumer of +`IsPastEndpoint`/`IsFutureEndpoint` in this codebase (`IsTripSegment`, +`IsCausalTripSegment` in `Causality.lean`, the pushforward lemmas in +`IsometryCausality.lean`, `DiffeoPath.lean`, `LorentzCausality.lean`, and the +Minkowski-specific corollaries in `Minkowski.lean:990-1040`) only ever +applies it to a `SmoothPath` — trips are built from smooth curves, so no +current theorem needs the general-`Path` form. But as a standalone +definition audited against its own blueprint entry, it is narrower than +stated, and the narrowing is not recorded anywhere (no `**Restriction:**` +line on `IsPastEndpoint`/`IsFutureEndpoint`, unlike the `IsGeodesic` +precedent the project asks agents to follow). + +*Not a fix, but worth recording for whoever does fix it:* generalising +`IsPastEndpoint`/`IsFutureEndpoint` to `M.Path` would require re-deriving +`isEndpoint_of_isPastEndpoint`/`isEndpoint_of_isFutureEndpoint` and +`parameterSpace_eq_Icc_of_endpoints` for the general case (their proofs as +written only use `μ.toPath`, so this looks mechanical), and then providing a +`SmoothPath`-specific corollary for `IsTripSegment` to keep using. + +### Low — `IsEndpoint`/`IsPastEndpoint`/`IsFutureEndpoint` have no `Curve`/`SmoothCurve`-level counterpart + +`def:endpoints` says a point is an endpoint "of a path $\mu : \Sigma \to M$ +**or its associated curve**" (spacetime.tex:271). Only the `Path`/`SmoothPath` +forms are formalized; there is no `Curve.IsEndpoint` or +`SmoothCurve.IsPastEndpoint` predicate defined via `Quot.lift` or an +existential-over-representative (the pattern used elsewhere in this file for +`IsTimelikeSmoothCurve`, `IsFutureOrientedSmoothCurve`, etc.). This is +consistent with how the definition is actually consumed downstream (`IsTrip` +always goes through a representative `SmoothPath` directly, never through a +free-standing curve-level endpoint predicate), so it is not blocking +anything, but the blueprint's "or its associated curve" clause has no direct +Lean witness. Low severity: a completeness gap, not a faithfulness error. + +### Low — asymmetric strictness between `PathEquiv` and `SmoothPathEquiv`/`OrientedSmoothPathEquiv` + +`PathEquiv` (`Curves.lean:264`) requires a **global** homeomorphism of `ℝ` +(`Function.LeftInverse`/`RightInverse` are stated unconditionally on all of +`ℝ`, not just on the parameter spaces) that happens to map `Σ₁` onto `Σ₂`. +`SmoothPathEquiv` and `OrientedSmoothPathEquiv` (`Curves.lean:279`, `:297`), +by contrast, only require `ContDiffOn`/mutual-inverse conditions **on the +respective parameter spaces**, with no requirement that `φ`, `ψ` extend to a +diffeomorphism of all of `ℝ`. Mathematically this is very likely harmless — +any homeomorphism (resp. diffeomorphism) between two non-degenerate closed +intervals of `ℝ` extends to one of all of `ℝ` — but the two definitions are +formalized at different levels of generality without comment, and the +blueprint's own wording ("a homeomorphism of the parameter space") is +uniform across `def:curves`'s two clauses where the Lean is not. Low +severity: a documentation/consistency point, not a known error, and it was +verified only by reading (no attempt was made to prove or disprove the +extension claim for the smooth case, which is the harder of the two). + +## Re-confirmed matches (sampled in depth, no issues found) + +- `IsTimelike`/`IsSpacelike`/`IsNull`, the causal trichotomy, and the + scaling-invariance lemmas (`CausalStructure.lean`): exact match, including + signs (`< 0`/`= 0`/`> 0`) and the `c ≠ 0` vs. `c > 0` distinction between + causal-type invariance and orientation invariance. +- `TimeOrientation`, `IsFuturePointing`/`IsPastPointing` (including the + null-vector limit-of-timelike-sequences clause): exact match to + `def:future-and-past-pointing-vectors`, including the direction of the + sign convention (`g(t,v) < 0` future, `> 0` past). +- `Trip`/`CausalTrip`/`ChronologicallyPrecedes`/`CausallyPrecedes` as + `Relation.TransGen` of single-segment precedence: matches the blueprint's + "transitive closure" reading verbatim, including the explicit parameter + `t : M.TimeOrientation` threaded through every definition. + `NoClosedCausalCurve` and its three consequences + (irreflexivity/asymmetry/antisymmetry of `≪`/`≺`): exact match. +- Causal/chronological diamonds, causal convexity, the causal-convex hull + and its closure-operator laws: exact match, including the vacuous-empty + and whole-space base cases. +- `spacelikeComplement`, `causalClosure` as a bundled `ClosureOperator`, + `IsCausallyComplete`, the `CompleteLattice` transported via + `causalClosure.gi.liftCompleteLattice`, and the De Morgan theorem for + `causalComplement`: exact match, including the blueprint's own + self-disclosed caveat that the full orthocomplement law fails here (both + sides state this identically). +- `LorentzianSpacetime` (bundling `Spacetime` + `TimeOrientation` + + Hausdorff Alexandrov topology) and `sUnion_alexandrovBasis_eq_univ` + /`isTopologicalBasis_alexandrovBasis`, including the `[Nontrivial + M.Carrier]` instance matching "at least two points": exact match. +- `minkowskiForwardCone_smul`/`minkowskiBackwardCone_smul`, + `alexandrovBasis_image_smul`, `minkowskiForm_smul`, + `exists_minkowskiForm_smul_ne`: exact match, including the choice of `e₀` + as the concrete witness vector for non-isometry. +- `Isometry` (bundled `Diffeomorph` + metric-preservation field), the group + and faithful `MulAction` instances, and + `preserves_self`/`isTimelike_mfderiv_iff`/etc.: exact match. +- The pullback-metric chain (`bilinearPrecomp`, `pullbackVal`, + `pullbackVal_symm`/`_nondegenerate`/`_lorentzian`/`_contMDiff`, + `pullback`, `pullbackTimeOrientation`, + `PreservesFutureOrientation(TwoSided)`, + `isFuturePointing_pullback_iff_of_isTimelike`/`_of_isNull`, + `pullback_preservesFutureOrientationTwoSided`): read end-to-end against + the ~20 corresponding blueprint nodes (`def:pullback-metric` through + `lmm:pullback-preserves-future-orientation`); every formula, sign, and + cancellation identity matches, including the deliberately-flagged + distinction between `(dψ_x)⁻¹` as `ContinuousLinearMap.inverse` (used in + `pullbackVal_mpullback_field_self`) vs. as `mfderiv ψ.symm` (used in + `pullback_preservesFutureOrientationTwoSided`'s `ψ⁻¹` half via + `mfderiv_symm_cancel_left`) — the blueprint calls this out explicitly as a + point that must not be conflated, and the Lean proof indeed uses the two + forms in exactly the places the blueprint predicts. +- `CrossIsometry`'s generalisation from `Diffeo M M` (blueprint) to + `Diffeo M N` (Lean): self-disclosed in the file's module docstring as a + strict generalisation with the blueprint's case recovered as `N := M`; not + a narrowing, and not previously flagged as needing scrutiny — confirmed + harmless by reading `CrossMetricIsometry.lean`'s opening definitions. + +## Status of previous findings + +- **C-1 (`IsGeodesic := True`)** — remains resolved as of `388de55`; not + re-audited per task instructions (known, documented, out of scope for this + pass). +- **m-1, m-2, m-3** (2026-09-25 follow-up) — remain resolved; confirmed by + `git log` that no commits have touched `Physicslib4/Spacetime/` or + `spacetime.tex` since `388de55`, so the fixes verified on 2026-09-25 are + still in place unchanged. + +## Blueprint-math issues + +None found beyond the two already self-disclosed in the blueprint text +itself (the failure of the full orthocomplement law on the causally-complete +lattice, `spacetime.tex:644`; and the historical/misleading label +`lmm:pullback-metric-smooth-in-charts` for a statement that is no longer +chart-local, which the blueprint's own prose already flags at +`spacetime.tex:1452`). No new mathematical error was found in this pass. + +## Summary counts + +- Nodes read and compared statement-by-statement against their Lean + declarations: ~55 (exceeds the ≥ 40 requested), spanning all nine areas + named in the task (spacetime/metric/time orientation; paths and curves; + trips and `≪`/`≺`; futures/pasts; causal diamonds; spacelike complement + and causal closure; causally complete/convex regions; Alexandrov topology + and basis; Minkowski-specific lemmas, dilations, isometries, pullback + metrics, cross-metric isometries). +- Classification: 1 **Medium** (`IsPastEndpoint`/`IsFutureEndpoint` typed + `SmoothPath` against the blueprint's explicit general-path, no-smoothness + wording — "Lean assumes more"); 2 **Low** (missing `Curve`-level endpoint + predicate; asymmetric strictness between `PathEquiv` and + `SmoothPathEquiv`/`OrientedSmoothPathEquiv`); 0 High/Critical. +- ~50 nodes re-confirmed as exact matches (no discrepancy), listed above. +- Verified with a tool: `git log` (no source changes since the last audited + commit `388de55`); `grep` for `sorry`/`admit`/`native_decide`/ + `skipKernelTC`/`nolint`/`axiom` (unchanged from 2026-09-25: one justified + `nolint`, zero of the others). +- Judged by reading only: all statement-faithfulness comparisons above, and + the `lake build`/`lake lint` pass/fail status (relied on the 2026-09-25 + audit's fresh run, since the tree is unchanged). + +## Files referenced + +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/src/sections/sec10/spacetime.tex` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Curves.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Causality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalStructure.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalComplement.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzianSpacetime.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Isometry.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/MinkowskiDilation.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Pullback.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CrossMetricIsometry.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-sec10.4.md` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-25-sec10.4.md` diff --git a/notes/agents/review-2026-09-26-sec10.5.md b/notes/agents/review-2026-09-26-sec10.5.md new file mode 100644 index 0000000..5a9cad2 --- /dev/null +++ b/notes/agents/review-2026-09-26-sec10.5.md @@ -0,0 +1,349 @@ +# Review: Blueprint §10.5 "Haag–Kastler Axioms (Minkowski)" vs Lean — deep re-audit + +Date: 2026-09-26 +Reviewer: audit subagent (read-only) +Predecessors: `notes/agents/review-2026-09-sec10.5.md`, `notes/agents/review-2026-09-25-sec10.5.md` +(both same-day, 2026-09-25; all their findings recorded as fixed). + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/haag-kastler-axioms.tex`, full file + (2061 lines), read in its entirety line by line: Axioms 1–5, the quasilocal + colimit/completion chain, `HaagKastlerNet`, Einstein causality, local von + Neumann algebras (microcausality, isotony, relative commutants, irreducible + inclusions, factors), GNS irreducibility/Schur/purity/extreme states, + unitary equivalence/superselection/quasi-equivalence/disjointness, direct + sums and amplification, the covariance lift and action, invariant states, + positive energy and vacuum states, KMS states and the strip-Liouville + machinery, KMS/ground states for the covariance flow. +- Lean, read in full against the tex, file by file: `Physicslib4/AQFT/HaagKastler/{LocalAlgebras,Isotony,LorentzCovariance,Net,LocalCommutativity,QuasilocalAlgebra,QuasilocalColimit,ObservableBridge,QuasilocalObservable,EinsteinCausality,LocalVonNeumann,GeometricCovariance,QuasilocalIntertwiner,QuasilocalAction,CovariantState,VacuumState,QuasilocalKMS,Purity,QuasilocalExistence}.lean`, + `Physicslib4/AQFT/{KMS,PositiveEnergy}.lean`, + `Physicslib4/GNS/{Basic,Irreducibility,ExtremeState,RadonNikodym,Superselection,DirectSum,Amplification}.lean` + (plus spot checks into `Construction.lean`, `UnitaryEquiv.lean`, `Covariance.lean`), + and `Physicslib4/Analysis/CStarCompletion.lean` (the `nolint` site). + `Physicslib4/AQFT/HaagKastlerCurved/*` and the curved-spacetime blueprint file + are out of scope (checked and confirmed unaffected — see Change audit below). +- `scratch_*` files: none found in scope. +- No file was modified. + +## Method + +- Read the full tex file end to end (not just the item list named in the task) + and, for every `\lean{...}` tag, read the cited Lean declaration(s) and + compared the mathematical content sentence by sentence against the blueprint + prose. Roughly 50 distinct blueprint nodes / Lean declaration groups were + checked this way (see the Statement audit below); all are **match** except + the one disclosed restriction inherited from `IsPositiveEnergy`. +- Ran a Python sweep extracting every `\lean{...}` identifier from the tex + (196, same count as the 09-25 review) and grepped each against + `Physicslib4/` — 0 missing. +- `python3 ~/.claude/lean-kit/lean_guard.py check --base HEAD` (change audit): + reports only `.claude/CLAUDE.md` and `.claude/lean-policy.json` as protected + changes, and both are simply the untracked `.claude/` directory (confirmed + via `git ls-files .claude/` = empty, `git status --porcelain .claude/` = `?? + .claude/`). This is pre-existing local agent-harness configuration, not a + tracked change to review; no `.tex`/`.lean` file in scope has moved since the + previous review's endpoint. `git log` confirms `HEAD` is `15b3ce6` ("Fix + second-round chapter 10 review findings"), and `git show --stat 15b3ce6` + shows it touches only `HaagKastlerCurved/*` and `Spectral/*` files plus the + curved-spacetime and spectral-theorem `.tex` files — none of which are in + §10.5's scope. So §10.5's Lean and tex are byte-identical to what + `review-2026-09-25-sec10.5.md` already audited; this session's job was to + read *more* of it, more skeptically, not to find new deltas. +- Grepped the whole scope for `sorry`, `admit`, `native_decide`, + `skipKernelTC`, `implemented_by`, `nolint`, the `Restriction:` marker, and + the removed names `commAlgebra`, `CovariantQuasilocalAlgebra`, + `covLocalOperators`, `covLocalVonNeumann`, `hcompat` (as a field/hypothesis + name, not a coincidental local variable). +- Specifically hunted for the failure modes named in the task — junk values, + vacuous statements, hypotheses stronger than needed, definitions satisfiable + by trivial data — in the definitions most exposed to that risk: + `HaagKastlerNet.IsVacuumState`'s `ftl` parameter, `AreDisjoint`/`IsIrreducible` + on the zero Hilbert space, `not_isIrreducible_directSum`'s summand + hypotheses, `ObservableCorrespondence`'s cheap inhabitant, `IsKMSState`'s + strip-boundedness clause. Findings below. +- Did not run `lake build`, `lean_verify`, `#print axioms`, or + `lean_guard.py verify` (read-only bash only per the auditor role; the task + did not ask me to run verify). The MCP `fuse` tools mentioned in the + environment banner were not present in my toolset this session, so + `lean_hover_info` / structured diagnostics were not available; all + statement comparisons below are by reading the `.lean` source directly, not + by an elaborator-verified hover. +- Did not re-check `.git/lean-kit/verify-receipt.json` beyond confirming it is + unchanged (per the task's instruction not to re-report its staleness). + +## Status of previous findings + +All findings from both 09-25 memos are still fixed (re-verified by reading, +not just by trusting the prior memo): + +- **H1** (Einstein causality / local von Neumann algebras proved about the + wrong ambient algebra) — still fixed. `grep -rn "commAlgebra\|CovariantQuasilocalAlgebra\|covLocalOperators\|covLocalVonNeumann"` + across `Physicslib4/` returns nothing (the only hits are historical narrative + in the tex, lines 480 and around, explicitly describing the removal). Read + `LocalCommutativity.lean`, `Net.lean`, `LocalVonNeumann.lean`, + `GeometricCovariance.lean` in full this session: all uniformly quantify over + `N.quasilocal`/`QuasilocalAlgebra N.U N.isotony`, one coherent object. +- **M1 / restriction markers** — still fixed. `PositiveEnergy.lean:49`, + `VacuumState.lean:137,198`, `QuasilocalKMS.lean:97` all carry + `**Restriction:**` lines naming the bounded-generator restriction and Stone's + theorem as the blocker. +- **L1/B1** (Axiom 5 strict vs non-strict inclusion) — still fixed; + `LorentzCovariance.lean` states condition (3) over `B₁ ⊆ B₂`, parameterized + by the Axiom 2 isotony family `i`, matching tex lines 588–621 verbatim. +- **L2** (justified `nolint`) — unchanged, single site, + `Physicslib4/Analysis/CStarCompletion.lean:84`, re-read this session: the + docstring immediately above it (lines 78–83) still explains why + `StarModule`/`CStarRing` are unused by the definition body but kept to match + the blueprint's standing-hypotheses node. Still the only `nolint` in scope. +- **N1** (verify-receipt stale) — per the task instructions, not re-reported. +- **N2** (`isPure_precomp_action_iff` has no blueprint node) — still true, + unchanged; see the new, closely related finding below. + +## New findings + +### Low + +**O1 — `IsWeaklyContinuousAction` (`CovariantState.lean:120–131`) has no +blueprint node, and is unused anywhere in the repository.** + +- Location: `Physicslib4/AQFT/HaagKastler/CovariantState.lean:91–131`. +- Problem: this is a substantial, carefully-documented definition (fiberwise + weak continuity of the covariance action relative to a state, phrased via a + GNS matrix-coefficient continuity condition on the sub-poset of + Lorentz transformations keeping `L·O` inside a fixed containing region `B`) + that has no `\label`/`\lean{}` entry anywhere in + `haag-kastler-axioms.tex` — confirmed by `grep -n "IsWeaklyContinuousAction" + blueprint/src/sections/sec10/haag-kastler-axioms.tex`, which returns nothing. + It is also not referenced by any other Lean declaration + (`grep -rn "IsWeaklyContinuousAction" Physicslib4/` returns only its own + definition site). This is the same class of gap as N2 from the prior review + (`isPure_precomp_action_iff`, also still unlinked): a real, non-trivial + Lean-only convenience definition that the blueprint's declaration graph does + not track. It is not a faithfulness defect — nothing depends on it, so it + cannot mislead a downstream theorem — but it means two now-existing + declarations (this one and N2's) sit outside the audited graph. +- Classification: missing `\uses`/node coverage, not a mismatch. +- Suggested fix (propose only): either add a short blueprint node for + `IsWeaklyContinuousAction` near `def:covariant-state-family` (the file's own + module docstring already describes its role as the "state-relative + continuity hypothesis for the Lorentz action" feeding strong continuity of + the GNS unitary representation), or record in the file that it is + intentionally a Lean-only scaffold not yet promoted to a blueprint node. + +### Observation (not a defect) + +**P1 — `HaagKastlerNet.IsVacuumState`'s abstract `ftl` parameter is vacuously +satisfiable, by design, and the one place this matters is handled correctly.** + +`IsVacuumState N ftl ω` conjoins invariance with `∀ γ, IsOneParameterSubgroup γ +→ ftl γ → IsPositiveEnergy (...)`. Since `ftl : (ℝ → InhomogeneousLorentzGroup) +→ Prop` is a free parameter, choosing e.g. `ftl := fun _ => False` makes the +second conjunct vacuously true for *any* invariant state, so the parameterized +form by itself proves nothing about the spectrum condition. This is exactly +the "predicate satisfiable by trivial data" shape the task asked me to look +for, and I traced every consumer to make sure it isn't silently exploited: +- The blueprint text itself flags `ftl` as "a parameter, to be instantiated + once the translation subgroup ... and its causal structure are wired in" + (`def:vacuum-state`, tex lines 1794–1801), and supplies exactly one instance, + `IsFutureTimelikeTranslation` (a real, non-vacuous existential predicate over + the forward Minkowski cone), via `IsVacuumStateConcrete` + (`def:vacuum-state-concrete`). +- The two theorems that consume `N.IsVacuumState ftl ω` + (`IsVacuumState.invariant`, `IsVacuumState.exists_gns_irreducible_covariant`) + use only the invariance conjunct (`h.1`), never the positive-energy + conjunct, exactly as documented ("no-Stone consequences", tex lines + 1803–1815) — so no theorem is claiming spectrum-condition content it hasn't + earned via a vacuous `ftl`. +- `IsVacuumStateConcrete` fixes `ftl` to the honest predicate, so the "final" + object a consumer would actually use is not exploitable this way. +No action needed; recorded because it is exactly the audit pattern the task +asked me to hunt for and I wanted the trace to be visible rather than silently +passed over. + +## Blueprint-math issues + +None found. Re-read the full 2061-line file end to end this session (not just +the sections the task named) looking specifically for asymptotic-for-finite +substitutions, wrong-direction inequalities, and unstated non-strict/strict +inclusion slips (the class of error the L1/B1 finding was); found none beyond +what is already fixed. + +## Statement audit (this session's sample, ~50 nodes) + +All **match** except where noted. Depth: full definitional unfolding compared +against blueprint prose, not just name-matching. + +- Axiom 1 / `LocalNet`, `IsAlexandrovBasisSet`, `𝔘(∅) = ℂ` normalisation via + `emptyEquivComplex` — match, including the unitality regression-check + examples in `LocalAlgebras.lean:108–115`. +- Axiom 2 / `Isotony` (data, not existence; `map_self`, `map_comp`) — match, + including the non-strict-inclusion / reflexive-case remark. +- Colimit chain: `Diamond`/`directedOn_alexandrovBasis`/`instIsDirectedOrderDiamond`, + `transitionHom`/`instDirectedSystemIsotony`, `colimitNorm` and its + well-definedness/positive-definiteness (`QuasilocalColimit.lean`, cited from + the tex, spot-checked against the norm axioms list) — match by construction + (Mathlib's `DirectLimit` + the hand-built norm, per the tex's own detailed + account of what Mathlib supplies vs. what is hand-built). +- `def:quasilocal-algebra` / `QuasilocalAlgebra` — match: carrier tied to the + net's universe (not `Type*` or `Type 0`), `ι` restricted to Alexandrov-basis + sets (not total), `dense_range`, `ι_inclusion` cocone condition against the + Axiom 2 family `i` — all three historical mismatches the tex narrates + (indexing, universe, and the third "one level up" pin) are absent from the + current `QuasilocalAlgebra.lean`. +- Axiom 3 / `LocalCommutativity`, `QuasilocalAlgebra.commute_ι_iff_commute_map`, + `LocalCommutativity.commute_ι` — match; the existential-witness-transferred- + to-every-quasilocal-algebra shape is intact and correctly documented. +- `def:quasilocal-observable` / `IsQuasilocalObservable`, + `isQuasilocalObservable_iff` (self-adjoint ∧ in range) — match. +- Axiom 4 / `ObservableCorrespondence` (`ObservableBridge.lean`) — match: three + fields (`Observable`, `measure`, `isSelfAdjoint_measure`), no surjectivity + assumed, `.maximal` is a deliberately cheap witness exactly as the blueprint + prose says a bridge principle should be (verified this is *not* the kind of + vacuity that undermines a mathematical claim: nothing downstream consumes + `ObservableCorrespondence`, matching the blueprint's explicit "should have no + mathematical consumers"). +- `thrm:quasilocal-algebra-exists` / `exists_quasilocalAlgebra` and its five + supporting embedding lemmas (`quasilocalEmbedding`, `_injective`, + `_transitionHom`, `exists_eq_colimitStarOf`, `dense_iUnion_range_quasilocalEmbedding`) + — match. +- `def:haag-kastler-net` / `HaagKastlerNet` — match: bundles Axioms 1,2,3,5; + Axiom 4 correctly absent; `quasilocal` is a `def` from the existence + theorem, not a field. +- `thrm:einstein-causality` / `einstein_causality`, + `exists_gns_einstein_causality` — match. +- `def:local-von-neumann` / `localOperators`, `localVonNeumann` — match. +- `lmm:bicommutant-of-selfadjoint-is-von-neumann` / `vonNeumannOfSelfAdjoint` — + match. +- Microcausality/isotony/statistical-independence/additive-free-locality/ + geometric-covariance/factor-orbit-invariance theorems in `LocalVonNeumann.lean` + and `GeometricCovariance.lean` — all match, checked term by term against the + ⊆/≤ direction and the spacelike-complement Galois connection. +- Relative commutant chain (`def:relative-commutant` through + `thrm:self-inclusion-factor`) in `LocalVonNeumann.lean` — match, including + the "not a lattice meet, built by hand from `Set.centralizer_union`" detail. +- `IsIrreducible`, `eq_smul_one_of_commute_of_cyclic` (topological Schur), + `isScalar_iff_coeff_proportional`, `IsPure`, `scalar_of_isSelfAdjoint_of_isPure`, + `isIrreducible_of_isPure` — match, including the affine-rescaling trick + documented in the tex proof sketch. +- `gnsVonNeumann`, `center_gnsVonNeumann_eq_of_isIrreducible`, + `gnsVonNeumann_eq_univ_of_isIrreducible`, + `isIrreducible_iff_gnsVonNeumann_eq_univ`, bundled forms + (`gnsVonNeumannAlgebra`, `..._isGreatest_of_isIrreducible`) — match. +- `isAbelian_iff_le_commutant`, `vonNeumannCenter`, `bicommutant_inter_commutant_eq`, + `bicommutant_inter_eq`, `vonNeumannCenter_isAbelian`, + `vonNeumannCenter_eq_self_iff_isAbelian`, `isAbelian_iff_eq_scalars_of_isFactor`, + `vonNeumannCenter_eq_commutant`, `isFactor_iff_center_eq_scalars` — match. +- `norm_eq_re_apply_one_of_positive`, `State.apply_one`, `State.IsExtremePoint`, + `isExtremePoint_of_isPure`/`isPure_of_isExtremePoint` + (`isPure_iff_isExtremePoint`), `convex_stateSpace`, + `mem_extremePoints_iff_isExtremePoint` — match, full proof-shape check + (rescaling `λ⁻¹ψ` / `(1-λ)⁻¹(ω-ψ)`, boundary cases `λ=0,1`) against the tex. +- `State.comp`/`State.comp_id`/`State.comp_comp` (pullback functoriality), + `isPure_comp_iff` — match. +- `isCompact_weakStateSet` — match (Banach-Alaoglu argument as described). +- `Purity.lean`'s two quasilocal specializations (`pure_iff_extreme`, + `exists_gns_pure_iff_irreducible`) — match. +- `UnitaryEquiv`, `UnitaryEquiv.isIrreducible_iff`/`isFactor_iff` — match. +- `isCyclicVector_comp_of_surjective`, `exists_unitary_of_gns_comp` + (GNS covariance), `unitaryEquiv_comp_of_gns`, + `range_comp_of_surjective`/`isIrreducible_comp_iff`/`gnsVonNeumann_comp_of_surjective`, + `isIrreducible_iff_of_gns_comp`/`isFactor_iff_of_gns_comp`, + `HaagKastlerNet.unitaryEquiv_gns_covEquiv` and its two companions in + `Purity.lean` — match. +- `AreDisjoint`, `not_areDisjoint_self` (correctly requires `[Nontrivial H₁]` — + not vacuously true on the zero space), `UnitaryEquiv.not_areDisjoint`, + `UnitaryEquiv.of_intertwines_of_isIrreducible` (Schur's lemma), + `areDisjoint_or_unitaryEquiv_of_isIrreducible`, + `eq_smul_of_intertwines_of_isIrreducible` (Schur multiplicity), + `intertwines_self_iff_isScalar` — match. +- `commutantVonNeumann`, `commutant_gnsVonNeumannAlgebra`/`commutant_commutantVonNeumann` + (double-commutant duality), `isFactor_gnsVonNeumann_iff_isFactor_commutant`, + `commutantVonNeumann_eq_scalars_iff_gnsVonNeumann_eq_univ` — match. +- `exists_gns_areDisjoint_or_unitaryEquiv_of_isPure` (pure-state dichotomy) — + match. +- `directSum`, `intertwines_single`/`summandProj_mem_commutant`, `amplification`, + `not_isIrreducible_directSum` (checked the `j ≠ k`, `v ≠ 0`, `w ≠ 0` + hypotheses are genuinely required, not vacuous decoration — the proof uses + all three) — match. +- `IsCovariantFamily`, `IsCovariantFamily.one`/`.comp` — match. +- `QuasilocalLift`, `QuasilocalLift.unique`, `isCovariantQuasilocal` + (unconditional for every `QuasilocalAlgebra`), `nonempty_quasilocalLift`, + `nonempty_trivialQuasilocalLift`, `HaagKastlerNet.action`/`action_one`/ + `action_mul`/`actionHom`, `IsInvariantState`, `IsInvariantState.exists_gns_unitary` + (and its strongly-continuous and bundled variants), + `IsInvariantState.exists_gns_irreducible_covariant`, `isPure_precomp_action_iff` + — match. +- `def:positive-energy` / `IsPositiveEnergy` — **Lean assumes more** (bounded + generator vs. the physically faithful unbounded one); disclosed and + correctly `**Restriction:**`-marked; `isPositiveEnergy_const_refl`, + `exp_generator_unique`, `IsPositiveEnergy.conj`, `IsPositiveEnergy.strongContinuous` + — match the "Positive-Energy API" node term for term. +- `def:vacuum-state` / `IsVacuumState`, `IsVacuumState.invariant`, + `IsVacuumState.exists_gns_irreducible_covariant`, `translationSub`/ + `translationFlow`/`isOneParameterSubgroup_translationFlow`/ + `IsFutureTimelikeTranslation`, `IsVacuumStateConcrete` and its two + specializations — match modulo the same disclosed restriction; see + Observation P1 above for the vacuity trace on the `ftl` parameter. +- `isPure_precomp_iff` / `isPure_precomp_action_iff` (purity is + covariance-invariant) — match. +- `unitaryEquiv_gns_action`/`isIrreducible_iff_gns_action`/`isFactor_iff_gns_action` + (GNS covariance along the quasilocal action) — match. +- `separating_of_faithful`/`exists_gns_separating` — not re-derived this + session in full but the statement shape (`π(a)Ω=0 ⟹ a=0` for a faithful + state) matches the one-line proof sketch in the tex; consistent with the + 09-25 review's match verdict. +- `kmsStrip`/`kmsStripInterior`, `IsOneParameterAut`, `IsKMSState` + (continuity + boundedness + differentiability + the two boundary values, + matching the tex's five clauses exactly), `IsKMSState.convexCombo`, + `IsKMSState.correlationOne`, `StripLiouville`, + `exists_bounded_entire_extension_of_strip_periodic`/`stripLiouville_of_pos`, + `IsKMSState.invariant`/`invariant_of_pos` (the `β > 0` hypothesis is on the + *theorem*, correctly absent from the *definition* `IsKMSState`, matching the + blueprint's own split between `def:kms-state` and `thrm:kms-invariance`), + `eqOn_strip_of_eq_boundary`, `IsKMSState.correlation_eqOn` — match. +- `HaagKastlerNet.flowAut`, `isOneParameterAut_flowAut`, `IsKMSStateForFlow`, + `IsKMSStateForFlow.convexCombo`, `IsGroundStateForFlow` (+ `.invariant`, + `.exists_strongContinuous_unitary`) — match, correctly restriction-marked + and correctly noting no stabilizer restriction is needed in Minkowski + (unlike the curved case, out of scope here). + +## Hygiene summary + +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`: exactly one + hit in scope, unchanged: `StrongDensity.lean:74` (`dense_range_in_bicommutant`), + correctly `**Restriction:**`-marked and correctly left off `\leanok` in the + tex (line 581's proof block). +- `nolint`: exactly one hit in scope, unchanged and justified: + `Physicslib4/Analysis/CStarCompletion.lean:84`. +- Stale/removed-name references (`commAlgebra`, `CovariantQuasilocalAlgebra`, + `covLocalOperators`, `covLocalVonNeumann`): none in `.lean` files; the tex + hits are historical narrative about the removal, not stale links. +- `hcompat`: the three hits in `QuasilocalIntertwiner.lean:180,188,191` are a + local proof variable (`have hcompat := isCovariantQuasilocal N Q L`), not the + removed structure field of the same name — confirmed by reading the + surrounding proof; not a regression. +- `\lean{}` coverage: 196/196 identifiers resolve to a real declaration. +- Two Lean-only declarations remain outside the blueprint's node graph: + `isPure_precomp_action_iff` (N2, prior review) and `IsWeaklyContinuousAction` + (O1, this review) — both harmless (no consumers depend on the gap), both + candidates for a short blueprint node. + +## Summary counts + +- Statement-audit items checked this session: ~50 (see list above), all + **match** except the one already-disclosed **Lean assumes more** item + (`IsPositiveEnergy`, bounded vs. unbounded generator). +- New findings: 1 Low (O1, missing blueprint node for `IsWeaklyContinuousAction`); + 1 observation, not a defect (P1, traced the `ftl`-vacuity pattern in + `IsVacuumState` and confirmed it is handled correctly). +- Previous findings (H1, M1, L1/B1, L2, N1, N2): all confirmed still in the + state the 09-25 review left them (fixed, fixed, fixed, fixed/justified, not + re-reported per instructions, still open/low as before). +- Blueprint-math issues: none found (full re-read of all 2061 lines). +- Verified by tool: the 196/196 `\lean{}`-identifier resolution sweep (Python + + grep), the `lean_guard.py check --base HEAD` change audit, and the + `git show --stat`/`git log` confirmation that no in-scope file changed since + the 09-25 review. Everything else (statement faithfulness, hygiene greps, + the vacuity trace) was judged by reading the Lean and tex source directly; + no `lake build`, `#print axioms`, or `lean_verify` was run this session. diff --git a/notes/agents/review-2026-09-29-sec10.1-10.7.md b/notes/agents/review-2026-09-29-sec10.1-10.7.md new file mode 100644 index 0000000..961907e --- /dev/null +++ b/notes/agents/review-2026-09-29-sec10.1-10.7.md @@ -0,0 +1,292 @@ +# Review: Blueprint §10.1 (GNS Construction Details) and §10.7 (General Covariance) + +Fresh, independent pass, per task instructions (conclusions not carried over from +prior memos). Read-only review; no `.lean`/`.tex` files were modified, nothing +committed. + +## Scope + +- `blueprint/src/sections/sec10/gns-construction-details.tex` (§10.1) +- `blueprint/src/sections/sec10/general-covariance-in-curved-spacetime.tex` (§10.7) +- Every Lean declaration their `\lean{}` tags cite (14 names total), plus the + Lean directories the task named: `Physicslib4/GNS/*`, `Physicslib4/Analysis/*`, + `Physicslib4/Operators/*`, `Physicslib4/AQFT/KMS.lean`, + `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` and what it links + (`IdentityComponent.lean`, `Net.lean`, `Isotony.lean`, + `Spacetime/{Diffeo,Pullback,CrossMetricIsometry,Isometry,LorentzianSpacetime,Causality}.lean`, + `AQFT/HaagKastlerCurved/Concrete.lean`). + +## Method + +- Read both in-scope blueprint `.tex` files in full; matched every `\lean{...}` + tag against the cited declaration by reading the Lean source directly (not + relying on IDE tooling). +- Read `Physicslib4/GNS/{Basic,Construction,CauchySchwarz,NullSpace}.lean` and + `Physicslib4/AQFT/HaagKastlerCurved/{GeneralCovariance,IdentityComponent,Net,Isotony,Concrete}.lean` + and `Physicslib4/Spacetime/{Diffeo,Pullback,CrossMetricIsometry,Isometry,Causality}.lean` + in full. +- Read `Physicslib4/AQFT/KMS.lean` in full and cross-checked it against + `haag-kastler-axioms.tex` (the blueprint file that actually cites it; it is + not cited from either of the two named sections, see note below). +- **Tool-verified**: `lake env lean` on a scratch file at `/tmp/audit_axioms_check.lean` + (outside the repo tree), running `#print axioms` on `gns_construction`, + `gns_unique`, `cauchy_schwarz_inequality`, `omega_star_swap_conj`, `lmm1`, + `lmm2`, `nullSubmodule_isClosed`, `IsKMSState.convexCombo`, + `IsKMSState.correlationOne`, `IsKMSState.correlation_eqOn`, + `IsKMSState.invariant`, `IsKMSState.invariant_of_pos`, `stripLiouville_of_pos`, + and `toAbstractIdentityComponent_pullback_isBasisSet`: all report only + `[propext, Classical.choice, Quot.sound]`. This also confirms the tree + compiles as-is. +- **Tool-verified**: `rg` for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by` across the scoped directories — none + found (two textual false positives, the words "sorry" and "admit" appearing + only inside English prose in `Spacetime/Basic.lean` and `Spacetime/Curves.lean` + docstrings, not as tactics). +- **Tool-verified**: `rg` for `nolint` across the scoped directories: one hit, + `Physicslib4/Analysis/CStarCompletion.lean:84` (`@[nolint unusedArguments]` on + the `CStarCompletion` abbreviation), with an adjacent comment justifying it. +- **Tool-verified**: `rg` for `Restriction:` across the scoped directories: hits + only in `StabilizerKMS.lean` (curved KMS, out of the two-file scope) and + `Spacetime/Causality.lean` (`IsGeodesic := True`), both pre-existing and + already documented with the marker. +- **Tool-verified**: every one of the 14 `\lean{}` names cited by the two + in-scope sections resolves against `blueprint/lean_decls`. +- **Tool-verified**: read `.git/lean-kit/verify-receipt.json` and compared its + timestamp/file-count against `git log` and the current file count. +- **Tool-verified**: read `.git/lean-kit/approvals.json` — absent, no + outstanding approvals. +- Everything else (statement-faithfulness judgments, `\uses{}` accuracy, the + blueprint's own proof steps, whether `NetEquivalence`/`IsGenerallyCovariant` + capture the intended notion, docstring accuracy) was judged by reading. +- Read prior memos (`review-2026-09-sec10.1-10.7.md`, + `review-2026-09-25-sec10.1-10.7.md`, `review-2026-09-26-sec10.1-10.7.md`) + only *after* forming my own conclusions, to mark new vs. previously reported. + +## Statement audit (§10.1 and §10.7 `\lean{}` items) + +All 8 blueprint items with `\lean{}` tags in the two in-scope sections: **8 match**, 0 non-matches. + +| Blueprint label | Lean declaration(s) | Classification | +|---|---|---| +| `def:state` | `GNS.State`, `GNS.State.IsFaithful` | match | +| `def:cyclic-vector` | `GNS.IsCyclicVector` | match | +| `thrm:gns-construction-theorem` | `GNS.gns_construction`, `GNS.gns_unique` | match | +| `lmm:cauchy-schwarz-inequality` | `GNS.cauchy_schwarz_inequality` | match | +| `lmm:lmm1` | `GNS.lmm1` | match | +| `lmm:lmm2` | `GNS.lmm2` | match | +| `def:net-equivalence-in-curved-spacetime` | `HaagKastlerCurved.NetEquivalence` | match | +| `def:general-covariance-in-curved-spacetime` | `HaagKastlerCurved.NetTheory`, `IsGenerallyCovariant`, `pullbackCarrierEquiv(_apply)`, `toAbstractIdentityComponent_pullback_isBasisSet` | match | + +Detail on the two most structurally interesting items: + +- **`GNS.gns_construction`/`gns_unique`.** The Lean theorem is stated over + `[CStarAlgebra A]` (unital by Mathlib's definition) and produces + `∃ (H : Type u) ..., IsCyclicVector π Ω ∧ (∀ a, ω a = ⟪Ω, π a Ω⟫) ∧ (ω.IsFaithful → Function.Injective π)`, + built by instantiating Mathlib's own `PositiveLinearMap.GNS` machinery at + `f := ω.toPositiveLinearMap`. This matches the blueprint's existential + "one can construct a Hilbert space... and *-representation... such that..." + clause-for-clause, including the faithfulness implication and the + `π(a*) = π(a)^†` property (encoded by `π` being a `StarAlgHom` into + `H →L[ℂ] H`, whose `star` is the Hilbert-space adjoint). `gns_unique` is + stated as a free-standing uniqueness theorem over *any* two triples + satisfying the cyclicity/reproducing-formula hypotheses (not literally "the + triple built by `gns_construction`"), which matches the blueprint's own + phrasing of uniqueness as a general fact about GNS triples. +- **`NetEquivalence`/`IsGenerallyCovariant`.** `NetEquivalence` is a + `structure` with `theta` as a genuine field (not an existential witness), + matching the blueprint's insistence that "Θ must be data"; its `naturality` + field is stated against the two nets' `commIsotony` (Axiom 2) embeddings, + which is now itself data carrying `map_self`/`map_comp` laws (verified by + reading `Isotony.lean`, confirming the blueprint's claim that "Axiom 2 now + carries the identity and composition laws itself" is actually true in the + current Lean, not just asserted in prose). `IsGenerallyCovariant` wraps + `NetEquivalence` in `Nonempty (...)`. This is a faithful reading, not a + silent weakening: the blueprint's own text treats "the nets are equivalent" + as an existence claim between two already-fixed nets (for each `(L, ψ)` + independently), while `Θ`, once chosen, is data; the Lean encoding tracks + exactly that distinction. `pullbackCarrierEquiv`/`pullbackCarrierEquiv_apply` + confirm the relabelling bijection is literally `ψ` (not `ψ⁻¹`), matching the + blueprint's explicit direction remark. + +## Findings + +### Medium + +**M1. `.git/lean-kit/verify-receipt.json` is stale relative to the current +tree (previously reported, still true).** The receipt records `lake build` and +`lake lint` passing at `2026-09-18T14:08:28Z` over 151 files. The current tree +has 99 `.lean` files and 15+ commits after that timestamp (`da0c971` through +`15b3ce6`, 2026-09-25/26), including several of the exact declarations audited +here (`IdentityComponent.lean`'s `lieConj_image_localVonNeumann_identityComponent`, +the Axiom-2-carries-composition-laws change to `Isotony.lean`, the +`IsGeodesic`/positive-energy `Restriction:` additions). There is no evidence in +the receipt that the current source tree has been verified by the project's +own `verify_commands`. This is a recurring process note, not something I am +asked to re-litigate as a fresh defect, but I record it as still open since it +directly bears on how much weight to put on "the tree builds." + +### Low + +**L1 (recurring, not fixed since last review). Missing `\uses{}` edge on +`thrm:von-neumann-geometric-covariance-in-curved-spacetime`, just outside the +two named files but downstream of in-scope `IdentityComponent.lean`.** +`haag-kastler-axioms-in-curved-spacetime.tex:274-287` cites +`lieConj_image_localVonNeumann_identityComponent` (defined in +`IdentityComponent.lean:177-193`, in scope) and its body sentence "For a net +over a concrete Lorentzian spacetime, with the isometries connected to the +identity, it is discharged automatically" describes a proof that is nothing +but a direct call to `toAbstractIdentityComponent_isBasisSet_smul` +(`IdentityComponent.lean:103-110`), i.e. `lmm:axiom5-basis-preservation` +(`spacetime.tex`). Neither the theorem's `\uses{def:local-von-neumann-in-curved-spacetime, +def:stabilizer-action-in-curved-spacetime, thrm:gns-unitary-stabilizer-in-curved-spacetime}` +nor its proof's `\uses{...}` list mentions `lmm:axiom5-basis-preservation`. Not +a soundness issue (the Lean is correct and sorry-free, tool-verified) — a +traceability gap in the dependency graph. Already flagged in +`review-2026-09-26-sec10.1-10.7.md`; still open in the current tree, confirmed +by re-reading the current `.tex`. + +**L2 (new). Stale docstring remark in `Concrete.lean`, adjacent to the in-scope +general-covariance bridge, describing an issue that no longer exists in the +code it points to.** `Physicslib4/AQFT/HaagKastlerCurved/Concrete.lean:50-52` +says: *"One deferred refinement noted on `Spacetime.Isometry` still applies: +the bundled differential is not yet tied to the manifold derivative."* This +sentence sits in the module docstring for `toAbstract`/`toAbstractIdentityComponent`, +the exact bridge that `IsGenerallyCovariant`/`NetTheory` are stated over. But +`Physicslib4/Spacetime/Isometry.lean` (read in full, 200 lines) has no second, +separately-bundled notion of "differential" — its `Isometry` structure's +`preserves` field, and every theorem in the file +(`preserves_self`, `isTimelike_mfderiv_iff`, etc.), is stated directly in terms +of `mfderiv`, the genuine manifold derivative; there is no other "bundled +differential" construct anywhere in that file or in `IsometryTopology.lean`/ +`IsometryCausality.lean` for such a remark to refer to (grep-verified: the +phrase and its keywords appear nowhere else in the repository). Either this +note is stale (the "deferred refinement" was resolved when `Isometry.preserves` +was written directly against `mfderiv`, and the comment was never deleted) or +it refers to something that has since been renamed/removed without updating +this cross-reference. Low severity — it is a documentation-accuracy issue, not +a statement or proof defect (`toAbstract`/`toAbstractIdentityComponent` +themselves are unaffected and match their own docstrings), but it risks +misleading a future reader into believing there is an open modelling gap in +the isometry group that `IsGenerallyCovariant`'s Axiom-5 hypothesis depends on. +Not found in any prior memo under this or a related description; this is a +new finding. + +**L3 (checked, no issue found). `IsKMSState` does not itself require `α` to +satisfy `IsOneParameterAut`; the invariance theorems add it as an explicit +hypothesis.** `Physicslib4/AQFT/KMS.lean`'s `IsKMSState α β ω` is a predicate +over an arbitrary family `α : ℝ → (A ≃⋆ₐ[ℂ] A)`, with no built-in requirement +that `α` be additive/normalized, even though the blueprint's `def:kms-state` +reads "for a one-parameter automorphism group α". This looks at first like +"Lean assumes less", but on inspection it is a deliberate and consistently +applied modularity choice: the blueprint's own theorem statements that +actually need the group law (`thrm:kms-invariance` / +`IsKMSState.invariant_of_pos`) carry `hα : IsOneParameterAut α` as an explicit +hypothesis in both the `.tex` reading (definition of KMS state and the +one-parameter-group definition are separate blueprint nodes, `def:one-parameter-aut` +vs. `def:kms-state`) and the Lean statement, while the theorems that don't need +it (`convexCombo`, `correlationOne`, `correlation_eqOn`) don't carry it. No +mismatch; I record this only because it is exactly the shape of issue this +audit looks for and it is worth showing it was checked, not merely assumed +fine. + +## Blueprint-math / `\uses{}` correctness in scope + +No proof-gap or math-correctness issues found in the two named sections +themselves. The GNS proof sketch in `gns-construction-details.tex` matches the +five-part structure the Lean file's docstring claims (Mathlib's own GNS +machinery discharges the construction; the file states the theorem in the +blueprint's vocabulary rather than re-deriving Mathlib's proof, which is a +legitimate wrapper, not vacuous duplication, since the blueprint's statement +(`State`, `IsCyclicVector`, the specific reproducing formula) does not already +exist as a single packaged Mathlib statement). The `\uses{}` edges on both +`thrm:gns-construction-theorem` and `def:net-equivalence-in-curved-spacetime`/ +`def:general-covariance-in-curved-spacetime` are complete and accurate as far +as I traced them (including the three-point "modelling notes" in +`general-covariance-in-curved-spacetime.tex`, each of which I checked against +the actual Lean: the carrier-bijection-as-data point against `NetEquivalence`'s +signature, the "only basis-set condition needed" point against `NetEquivalence`'s +fields, and the "Θ is data, ιᵢ come for free" point against `commIsotony` +carrying `map_self`/`map_comp`). + +One inherited, already-documented restriction is worth restating because it +underlies every "basis set" appearing in both sections: `IsGeodesic := True` +in `Spacetime/Causality.lean` (Restriction-marked), which means every +Alexandrov diamond / basis set used by `NetEquivalence`, +`IsGenerallyCovariant`, and the pullback basis-set-preservation lemma is built +from chronological precedence via *arbitrary* future-oriented timelike curves, +not geodesics. This is not a new finding (already flagged with a `Restriction:` +line and confirmed fixed/stable in the prior two reviews), but it is the kind +of foundational restriction that silently narrows everything downstream, so I +re-traced it end-to-end this session to confirm it still propagates correctly +(`CrossIsometry.alexandrovBasis_image` → `pullback_alexandrovBasis_image` → +`toAbstractIdentityComponent_pullback_isBasisSet`, all consuming +`ChronologicallyPrecedes`/`IsTrip`, which bottom out in `SegmentPrecedes`'s +`IsGeodesic` field) and found no place where the restriction is silently +dropped or re-strengthened without the marker. + +## Integrity checklist + +- **Axioms** (tool-verified via `lake env lean` + `#print axioms` on 14 + declarations spanning GNS, KMS, and the general-covariance bridge): all + `[propext, Classical.choice, Quot.sound]` only. No stray axioms, no + `sorryAx`. +- **`sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/`implemented_by`**: + none in the scoped directories (grep-verified; the only string matches are + the English words "sorry"/"admit" inside prose docstrings in + `Spacetime/{Basic,Curves}.lean`, not tactics). +- **`nolint`**: one use in scope, `CStarCompletion.lean:84` + (`@[nolint unusedArguments]` on the `CStarCompletion` abbreviation), + immediately preceded by a comment explaining why the two typeclass arguments + are kept even though structurally unused (they are the blueprint's + standing-hypothesis node). Justified, not a lint-gate workaround. +- **`Restriction:`**: present and correctly documented for the one restriction + that reaches into this scope (`IsGeodesic := True`); no undocumented + restriction found in the two named sections' own declarations. +- **`verify_commands`**: stale (see Medium finding M1 above). +- **Approvals**: none in effect (`.git/lean-kit/approvals.json` absent, + tool-verified). +- **`\lean{}` name resolution**: all 14 names in the two sections resolve + against `blueprint/lean_decls` (tool-verified). + +## Notes on task scope vs. blueprint section numbering + +The task lists `Physicslib4/AQFT/KMS.lean` as in scope for "§10.1", but that +file is actually cited from `haag-kastler-axioms.tex` (KMS states for the +Poincaré/covariance flow), not from `gns-construction-details.tex`; none of +`KMS.lean`'s declarations carry a `\lean{}` tag in either of the two named +`.tex` files. I audited it anyway per the explicit file list (see L3 above and +the KMS statement-by-statement check in "Method"); it is sorry-free and its +main statements match the corresponding `haag-kastler-axioms.tex` nodes +(`def:one-parameter-aut`, `def:kms-state`, `thrm:kms-convex`, +`lmm:kms-correlation-one`, `def:strip-liouville`, `thrm:strip-liouville-pos`, +`thrm:kms-invariance`, `thrm:kms-correlation-unique`), but this is outside the +two blueprint sections this audit is nominally scoped to, so I record it +separately rather than folding it into the "8/8 match" statement-audit count +above (which is restricted to items whose `\lean{}` tag actually lives in one +of the two named `.tex` files). + +## Summary counts + +- Statement audit (items with `\lean{}` in the two named blueprint sections): + **8/8 match**, 0 non-matches. +- Additional statement check outside the strict two-file scope, done because + the task's file list named it explicitly: `KMS.lean`'s 8 blueprint nodes in + `haag-kastler-axioms.tex`, all match. +- Findings: **1 Medium** (stale verify-receipt, recurring/known), **3 Low** + (1 recurring/still-open `\uses` gap just outside scope, 1 new stale + docstring in `Concrete.lean`, 1 "checked, no issue" on the `IsOneParameterAut` + modularity pattern in `KMS.lean`). +- Tool-verified: `#print axioms` on 14 key declarations (clean); `\lean{}` name + resolution against `blueprint/lean_decls` (14/14); absence of + `sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/`implemented_by` via + `rg`; the one `nolint` use and its justification; presence/correctness of the + one in-scope `Restriction:` marker; absence of `.git/lean-kit/approvals.json`; + staleness of `.git/lean-kit/verify-receipt.json` against `git log` and + current file count. +- Judged by reading: all statement-faithfulness classifications; `\uses{}` + completeness for the two named sections' own nodes; the + `NetEquivalence`/`IsGenerallyCovariant` data-vs-existence distinction; the + `IsGeodesic`-restriction propagation trace; the KMS `IsOneParameterAut` + modularity judgment; the staleness assessment of the `Concrete.lean` + docstring (confirmed by grepping for the phrase's keywords across the + repository and finding no matching construct in the files it names). diff --git a/notes/agents/review-2026-09-29-sec10.2.md b/notes/agents/review-2026-09-29-sec10.2.md new file mode 100644 index 0000000..6734ab9 --- /dev/null +++ b/notes/agents/review-2026-09-29-sec10.2.md @@ -0,0 +1,222 @@ +# Audit: Blueprint §10.2 (Spectral Theorems) vs Lean + +Date: 2026-09-29 +Scope: `blueprint/src/sections/sec10/spectral-theorems.tex` (5829 lines, 90 +blueprint nodes, 185 distinct `\lean{}` names) against +`Physicslib4/Spectral/*.lean` excluding `Spectral/Unbounded/`, plus +`Physicslib4/Operators/*.lean` where linked. Fresh review; prior memos +(`review-2026-09-25-sec10.2.md`, `review-2026-09-26-sec10.2.md`) consulted only +after drawing independent conclusions, to mark new vs. previously-reported +items. + +## Method + +- Extracted every `\lean{...}` name in the file (185 names, `grep -oP`) and + every blueprint node with its `\uses{}` graph (map in `/tmp/sec10_2_map.txt`, + not committed). +- Checked existence of all 134 `Physicslib4.Spectral.*` names against + declarations in `Physicslib4/Spectral/*.lean` / `Physicslib4/Operators/*.lean` + (script-driven grep, tool-verified: **134/134 found**, the one apparent miss + was a regex artifact on the trailing `'` in + `exists_isStarProjection_tendsto_partialSum'`, confirmed present at + `ProjectionValuedMeasure.lean:542`). +- Grepped the whole scope for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by`, `axiom`, `nolint`, `Restriction:`. +- Ran `lake env lean` on a temp file **outside** the repo + (`/tmp/audit_axioms_sec10_2.lean`) importing the in-scope modules and running + `#print axioms` on 11 capstone/near-capstone declarations. +- Read blueprint statements and the corresponding Lean declarations in full for + a representative sample spanning the whole file's structure: `InnerProduct` + conventions, `ProjectionValuedMeasure` (structure + `existsUnique_assoc`), + `ProjectionValuedMeasure.integral`/`existsUnique_integral`, + `BoundedSesquilinearForm`/`IsBoundedQuadraticForm`, `FClass`/`F1Class`/ + `F2Class`, the monotone/antitone convergence theorem, the bounded convergence + theorem, `IsStarProjection`, `spectrum_subset_real`, `spectralRadius` and its + corollary, the Riesz representation theorem for measures, + `existsUnique_realCalculus`/`realCalculus_polyOn`, and the capstone + `existsUnique_spectralMeasure`/`functionalCalculus`. This is on the order of + 20 of the 90 nodes read statement-by-statement against Lean; the remaining + ~70 were checked only for existence and (via the sorry/axiom grep and the + clean `#print axioms` on the capstone theorems they feed) absence of proof + gaps, not for line-by-line statement fidelity. **This is narrower than the + 2026-09-26 review's >100-node sample**, so treat this memo as corroborating, + not superseding, that one. +- Checked `.git/lean-kit/verify-receipt.json` and `git log` for staleness, and + confirmed `.git/lean-kit/approvals.json` does not exist (nothing to review + under that head). + +## Findings + +### Medium + +**M1. `verify-receipt.json` is stale relative to in-scope sources.** +`.git/lean-kit/verify-receipt.json` records `lake build`/`lake lint` passing at +`2026-09-18T14:08:28+00:00`. Commits `26ca993`, `effd1f5`, `15b3ce6` (2026-09-24 +through 2026-09-26) touched in-scope files (`Physicslib4/Spectral/Basic.lean`, +`BorelClasses.lean`, `Spectrum.lean`, plus `SpectralTheorem.lean` etc. via +`git log --name-only`) after the receipt's timestamp, so the recorded verify +run does not cover the current tree. Mitigating evidence: `.lake/build/lib/lean` +oleans for the touched files are dated 2026-09-26 (matching the last commit), +and my own `lake env lean` run against the current sources succeeded with a +clean axiom set, so the build is not actually broken — the receipt is just +out of date. **Previously reported** (2026-09-25 and 2026-09-26 memos), still +open. + +**M2. `existsUnique_realCalculus`/`realCalculus` take a materially different +proof route than the blueprint narrates, and part of `prpstn:hall-8.3`'s +`\uses{}` graph is not actually exercised by that route.** +`Physicslib4/Spectral/ContinuousCalculus.lean:236-274`. The blueprint's proof of +`prpstn:hall-8.3` (lines 3021-3132) builds the real continuous functional +calculus by hand from `thrm:stone-weierstrass-real`, `lmm:hall-8.1` (‖A‖ = +spectral radius for self-adjoint `A`), `prpstn:hall-7.5`/`7.7`, and the Neumann +series/resolvent apparatus developed earlier in the chapter. The Lean +`realCalculus` is instead defined as Mathlib's general-purpose `cfcHom hA` +(continuous functional calculus for C⋆-algebras), and `existsUnique_realCalculus` +packages `cfcHom` plus `norm_cfcHom` for existence, using Stone–Weierstrass only +for the uniqueness half. This substitution is disclosed in the Lean docstring +("Using `cfcHom` rather than extracting a map from `existsUnique_realCalculus` +keeps the definition independent of any unproved statement...") but the +blueprint's own proof text is not annotated to say that the Lean proof takes +this shortcut, so a reader following blueprint → Lean has no signal that the +elaborate resolvent/spectral-radius apparatus built earlier in the chapter is +not what actually discharges `prpstn:hall-8.3` in Lean. This is a documentation +gap, not a soundness problem — I did not find evidence that the earlier +apparatus (Neumann series, `mem_resolventSet_of_norm_lt`, `lmm:hall-8.1`, etc.) +is dead code; those results are also used to establish `prpstn:hall-7.5`, +`prpstn:hall-7.7`, and `def:spectral-radius` themselves, which are asserted (and +in Lean, `\lean`-tagged) independently of `prpstn:hall-8.3`. **New this +session** — not found in the 2026-09-25/26 memos' grep for "cfcHom" / +"different route" language. + +### Low + +**L1. `functionalCalculus` is total with a silent junk-value fallback, and the +fallback is documented one file away, not at its own declaration.** +`Physicslib4/Spectral/SpectralTheorem.lean:928-930` defines +`functionalCalculus hA f := (spectralMeasure hA).integral f` for *any* +`f : spectrum ℝ A → ℂ`, i.e. without a "bounded and Borel-measurable" hypothesis +that the blueprint's `def:functional-calculus` (lines 5815-5823) states as a +premise ("If ... `f` is a bounded measurable function ..."). The underlying +`ProjectionValuedMeasure.integral` (`Physicslib4/Spectral/OperatorIntegral.lean: +416-422`) is defined by `if h : f ∈ BddMeasurable X then ... else 0`, and that +`0` fallback **is** documented at `integral`'s own docstring ("defined to be `0` +on functions that are not bounded and measurable"), but `functionalCalculus`'s +docstring does not repeat or cross-reference this, so a reader who only opens +`functionalCalculus` would not learn that `f(A)` silently becomes `0` outside +the blueprint's intended domain of `f`. Benign (matches on the intended domain, +which is all that downstream theorems use), but worth a one-line docstring +addition. **Previously reported** (2026-09-26 memo, "junk values `0` for +`ProjectionValuedMeasure.integral`/`borelCalculus`/`functionalCalculus`"), +re-verified unchanged. + +**L2. `spectralRadius` is Mathlib's general `ℝ≥0∞`-valued notion; the blueprint +states `R(A)` as "a finite real number."** +`def:spectral-radius` (lines 2542-2552) asserts `R(A) ∈ ℝ` (finite, using +`prpstn:hall-7.5`). The tagged Lean `spectralRadius` (`Mathlib/Analysis/Normed/ +Algebra/Spectrum.lean:53-55`) is `ℝ≥0∞`-valued for a general normed algebra +(can be `0` for empty spectrum, `∞` for unbounded spectrum). This is a +"notation only" mismatch given the operator-algebra context at hand: the later +node `IsSelfAdjoint.toReal_spectralRadius_complex_eq_norm` explicitly takes +`.toReal`, so Lean already reconciles the two. Not a narrowing; flagged only +because the blueprint text asserts a typed fact ("is a finite real number") +that isn't literally the type of the tagged declaration. **Previously +reported** (2026-09-26 memo, item near line 62), re-verified unchanged. + +**L3. `nolint unusedArguments` on `Physicslib4.Spectral.L0`.** +`Physicslib4/Spectral/BorelClasses.lean:279-282`. Justified by the adjacent +docstring (lines 264-278): the blueprint's `𝓛₀` definition asks that `E` be +measurable, but this is not carried as a conjunct because it is derivable +(pointwise limits of continuous functions valued in `[BorelSpace X]` are +automatically measurable), so the `X`/instance arguments look unused to the +linter even though they parametrize the ambient space. Comment present and +substantive — not a lint-gate workaround. **Previously reported**, re-verified +unchanged. + +**L4. `tendsto_integral_of_boundedPointwiseLimit` adds an explicit +measurability hypothesis the blueprint leaves implicit.** +`Physicslib4/Spectral/Basic.lean:786-797` requires `∀ i, Measurable (f i)`, +which `thrm:bounded-convergence-theorem` (lines 3866-3874) does not state as a +hypothesis (it only says "uniformly bounded ... functions that converge +pointwise"). The Lean docstring explains this directly: "the blueprint leaves +it implicit in writing `∫_X f_i dμ`, but the integral is only defined with it." +Disclosed, and required for the statement to typecheck as an integral +identity — not a narrowing in substance. Not previously flagged by name in the +2026-09-26 memo's summary list, but consistent with its "documented, +benign generalization" characterization of the file as a whole; not counted as +new since it is the same category of finding already characterized there. + +## Verified clean (tool-checked) + +- **Existence of all `\lean{}` targets**: 185/185 names present; 134/134 + `Physicslib4.Spectral.*` names resolved to real declarations (grep, + tool-verified). +- **No `sorry` / `admit` / `native_decide` / `debug.skipKernelTC` / + `implemented_by` / bare `axiom`** anywhere in + `Physicslib4/Spectral/*.lean` or `Physicslib4/Operators/*.lean` (grep, + tool-verified, this session). +- **`#print axioms`** on 11 capstone/near-capstone theorems — + `existsUnique_spectralMeasure`, `functionalCalculus`, + `existsUnique_borelCalculus`, `borelCalculus`, `existsUnique_realCalculus`, + `ProjectionValuedMeasure.existsUnique_assoc`, + `ProjectionValuedMeasure.existsUnique_integral`, `riesz_representation`, + `existsUnique_measure_of_positive_linear`, `pvm_eq_of_integral_id_eq`, + `exists_spectralMeasure` — all depend only on `propext`, `Classical.choice`, + `Quot.sound` (`lake env lean` on `/tmp/audit_axioms_sec10_2.lean`, + tool-verified, this session). +- **No `Restriction:` markers** in scope (grep, tool-verified); none appear + needed — the section's design choices (junk `0` values, thin wrappers over + Mathlib's general Banach-algebra spectrum theory) are disclosed + generalizations/notational choices, not narrowings awaiting future work. +- **1 `nolint` use** in scope, justified (L3 above). +- **No `.git/lean-kit/approvals.json`** — nothing to review under that head. + +## Read-only (not tool-verified) statement-fidelity checks — all "match" + +`ProjectionValuedMeasure` (structure vs. blueprint's 4-part definition, +`ProjectionValuedMeasure.lean:71-88`); `existsUnique_assoc`; +`BoundedSesquilinearForm`/`IsBoundedQuadraticForm` (`Forms.lean:179-205`, exact +component match with the blueprint's two-part quadratic-form definition and +boundedness constant); `FClass`/`borelForm`/`borelForm_add`/`borelForm_smul`/ +`borelForm_smul_of_mem_FClass` (`BorelCalculus.lean:66-137`); the monotone/ +antitone convergence theorem (`Basic.lean:709-722`, both directions, exact +match); the bounded convergence theorem modulo L4; `IsStarProjection` (Mathlib's +general self-adjoint-idempotent structure, matches blueprint's orthogonal +projection); `spectrum_subset_real`, `isCompact_spectrum`, `spectrum_nonempty`, +`mem_resolventSet_of_norm_lt`, `isOpen_resolventSet` (all thin, well-documented +wrappers over Mathlib's general Banach-algebra spectrum theory — not +unacknowledged duplication, each docstring states exactly which blueprint +sub-claim it discharges); `existsUnique_measure_of_positive_linear` (Riesz +representation, exact hypothesis/conclusion match, +`ContinuousCalculus.lean:69-112`); `existsUnique_realCalculus`/ +`realCalculus_polyOn` (match modulo the proof-route note M2); the capstone +`existsUnique_spectralMeasure`/`functionalCalculus` (match modulo L1, +`SpectralTheorem.lean:900-930`). + +## Summary counts + +- Blueprint nodes in scope: 90; `\lean{}` names: 185 (134 project-internal, 51 + Mathlib/core). +- Classification of items read statement-by-statement (~20 nodes): match — all + of them, 4 with a disclosed caveat (L1, L2, L4, M2); Lean assumes more — 0 + undisclosed; Lean concludes less — 0; different objects — 0; edge cases + differ — 0; can't determine — 0. +- Findings this session: 0 High, 1 Medium (M1 previously reported/open, M2 + new), 4 Low (L1-L3 previously reported/re-verified unchanged, L4 same + category as a prior finding, not separately counted before). +- Tool-verified: declaration existence (185/185), sorry/axiom/nolint/ + native_decide grep (clean except the one justified `nolint`), `#print axioms` + on 11 theorems (clean), verify-receipt timestamp vs. `git log` (stale). +- Read-only judgment: ~20 statement-by-statement comparisons listed above, plus + the `cfcHom` proof-route observation (M2), which required reading the Lean + proof body, not just its signature. + +## Recommendation for a follow-up session + +The 2026-09-26 review's >100-node sample plus this session's independent +20-node sample and full existence/axiom sweep together cover the large +majority of §10.2's surface with no High or new soundness findings. The +highest-value remaining work is: (a) refresh `verify-receipt.json` (M1), (b) +add a one-line cross-reference in the blueprint's `prpstn:hall-8.3` proof (or +in `existsUnique_realCalculus`'s docstring, pointing the other way) noting that +the Lean existence proof uses Mathlib's `cfcHom` rather than the from-scratch +Stone–Weierstrass construction the blueprint prose describes (M2). diff --git a/notes/agents/review-2026-09-29-sec10.3.md b/notes/agents/review-2026-09-29-sec10.3.md new file mode 100644 index 0000000..6052b7e --- /dev/null +++ b/notes/agents/review-2026-09-29-sec10.3.md @@ -0,0 +1,996 @@ +# Review: Blueprint §10.3 "Unbounded Spectral Theorems" vs. Lean + +Date: 2026-09-29 +Reviewer: audit subagent (read-only). Session ended at the turn limit; this +memo records findings so far, not a completed exhaustive pass. This is a +fresh review (not relying on conclusions of prior memos for its own +judgments), with a final cross-reference against `notes/agents/review-2026-09-25-sec10.3.md` +and `notes/agents/review-2026-09-sec10.3.md` to flag which findings are new +vs. previously reported. + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/unbounded-spectral-theorems.tex` + (3174 lines, 256 distinct `\lean{...}` identifiers: 186 `Physicslib4.*`, + 70 Mathlib/root). +- Lean: `Physicslib4/Spectral/Unbounded/{Basic,Spectrum,DirectSum,Integral, + Normal,AbstractCalculus,Cayley}.lean` (~6500 lines). +- No `.lean`/`.tex` file was modified. + +## Method / what was tool-verified vs. read + +Tool-verified (commands actually run this session): +- **Link existence, all 256 names.** Extracted every `\lean{...}` identifier + and checked each resolves to a real declaration: the 186 `Physicslib4.*` + names against `theorem|def|lemma|abbrev|structure|instance|class ` + in `Physicslib4/`, and the 70 non-local names against + `.lake/packages/mathlib/Mathlib` (with a second, less-anchored pass for + 13 names reached via dot notation, e.g. `Filter.Tendsto.cauchySeq`, + `IsCompact.tendsto_subseq`, `Summable.of_norm_bounded`). **Result: 0 + missing**, all 256 resolve. +- **Hygiene grep** across `Physicslib4/Spectral/`: `sorry`, `admit`, + `native_decide`, `debug.skipKernelTC`, `implemented_by`, `nolint`, + `Restriction:`. Result: no `sorry`/`admit`/`native_decide`/ + `implemented_by`; one `nolint unusedArguments` (see Low finding below); + zero `Restriction:` markers anywhere in `Physicslib4/Spectral/`. +- **Axioms.** `lake env lean` on a scratch file (`/tmp/axiom_check_sec103.lean`, + outside the repo tree) running `#print axioms` on + `existsUnique_spectralMeasure_unbounded`, `spectralMeasure_concentrated`, + `existsUnique_spectralMeasure_normal`, `exists_isCayleyTransform`, + `pmapSpectrum_subset_real`, `isEssentiallySelfAdjoint_iff_dense_range`. + All six depend on exactly `[propext, Classical.choice, Quot.sound]`. +- **Verify receipt vs. git log.** `.git/lean-kit/verify-receipt.json` records + `lake build`/`lake lint` both `exit 0` at `2026-09-18T14:08:28Z`. Current + `HEAD` (`15b3ce6`) is committed `2026-09-26T05:22:03+02:00`, i.e. after the + receipt; `.git/lean-kit/approvals.json` does not exist. + +Judged by reading (statement-faithfulness audit; no lean-kit/fuse MCP tools +were available as callable tools this session, so all statement comparisons +were done by reading blueprint prose against the Lean source directly): +depth-compared blueprint vs. Lean for `def:hall-3.1` (unbounded operator), +`def:hall-9.1`/`existsUnique_adjoint_apply` (adjoint), `def:hall-9.2` +(symmetric), `def:hall-9.5`/`LinearPMap.isSelfAdjoint_def` (self-adjoint), +`def:hall-9.6` (closed/closable), `def:hall-9.7` (essentially self-adjoint), +`def:hall-9.16`/`IsResolvent` (resolvent set/spectrum), `thrm:hall-9.17` +(spectrum of self-adjoint operator is real), `thrm:hall-9.21` +(`isEssentiallySelfAdjoint_iff_dense_range`), `prpstn:hall-9.26` +(`IsDirectSumOperator`/direct-sum construction), `def:abstract-continuous-functional-calculus`/ +`IsAbstractCalculus`, `thrm:hall-10.20`/`existsUnique_spectralMeasure_normal`, +`thrm:hall-10.23`/`spectrum_mvApply` (including its documented "Formalization +note"), `thrm:hall-10.28`/`exists_isCayleyTransform`, `def:hall-7.14`/ +`spectralSubspace`, `thrm:hall-10.4`/`existsUnique_spectralMeasure_unbounded` ++ `spectralMeasure_concentrated` (the section's capstone theorem). + +## Findings + +### Medium + +**M1 (carried forward from 2026-09-18 receipt; still open). Verify receipt +is stale relative to the current tree.** +- `.git/lean-kit/verify-receipt.json`: `time: 2026-09-18T14:08:28Z`. +- `git log`: `HEAD` = `15b3ce6`, committed `2026-09-26T05:22:03+02:00`; at + least the five commits `2dff159, bc0d8c5, 388de55, 6ff85aa, 15b3ce6` (all + visible in `git log --oneline -15`) postdate the receipt, and per the prior + memos several of them touch `Physicslib4/Spectral/Unbounded/*`. +- No fresh receipt exists; `.git/lean-kit/approvals.json` is absent, so no + approvals are in effect either. +- This session did not re-run `lake build`/`lake lint` (not requested; the + targeted `lake env lean` axiom check above is a narrower substitute + covering six declarations, not the whole tree or the lint gate). +- Not new: this is the same H1 finding from both prior memos, still + unresolved as of this session. + +**M2 (carried forward from 2026-09-25 follow-up; not re-verified in depth +this session, only existence-of-declarations re-confirmed). `lmm:hall-10.27`'s +Lean witness (`exists_subspace_isAlmostEigenvector`) and the duplicate +non-uniform almost-eigenvector lemma.** +- Quick re-check this session (grep only, not full proof re-read): + `Physicslib4/Spectral/Unbounded/Normal.lean` still defines both + `exists_const_isAlmostEigenvector_mvApply_uniform` (line 503) and + `exists_const_isAlmostEigenvector_mvApply` (line 599) as separately proved + theorems, and `spectralSubspace`/`pvmOperator`/ + `mapsTo_pvmOperator_spectralSubspace` remain defined in the same file. I + did not re-read `exists_subspace_isAlmostEigenvector`'s full proof body + this session to confirm the prior claim that it bypasses the + spectral-subspace apparatus its blueprint `\uses` list cites (former M3), + nor re-confirm the non-uniform lemma is still an independent ~85-line + proof rather than a corollary of the uniform one (former L3). Reporting + these as **still-open, not freshly re-verified** rather than re-asserting + them as new evidence. + +### Low + +**L1. One `nolint` in scope, justified by an inline comment (not part of +`Physicslib4/Spectral/Unbounded/`, but inside the broader `Spectral` +directory the section's `\lean` tags reach into).** +- `Physicslib4/Spectral/BorelClasses.lean:279`, `@[nolint unusedArguments]` + on `def L0`. The docstring immediately above (lines 265-276) explains why + the linter is silenced: the blueprint's class also requires the ambient + set measurable, which is dropped from the Lean definition as derivable + (`measurableSet_of_mem_L0`) rather than restated, and the linter flags the + resulting unused `[MeasurableSpace X]`-style argument pattern. This reads + as a considered design note, not a lint-gate workaround, but is flagged + per the audit's standing instruction to report every `nolint` regardless. + +## Statement-audit results (all items depth-read this session) + +All of the following were classified **match** (Lean states exactly what +the cited blueprint node states, up to notational unfolding): +`def:hall-3.1`, `def:hall-9.1` (+ `existsUnique_adjoint_apply`), +`def:hall-9.2`/`prpstn:hall-9.4`, `def:hall-9.5`, `def:hall-9.6`, +`def:hall-9.7`, `def:hall-9.16`/`IsResolvent`, `thrm:hall-9.17` +(`pmapSpectrum_subset_real`), `thrm:hall-9.21` +(`isEssentiallySelfAdjoint_iff_dense_range`), `prpstn:hall-9.26` +(`IsDirectSumOperator`, `directSumDomain`), `def:abstract-continuous-functional-calculus` +(`IsAbstractCalculus`, all 5 properties present 1-1), `thrm:hall-10.20` +(`existsUnique_spectralMeasure_normal`, `eq_of_integral_id_eq_ambient`), +`thrm:hall-10.23` (`spectrum_mvApply`, whose short Mathlib-CFC-based proof +is explicitly flagged by a "Formalization note" both in the blueprint text, +line 2265, and in the Lean docstring — a **documented** deviation, which is +the correct handling), `thrm:hall-10.28` (`IsCayleyTransform`, +`exists_isCayleyTransform`), `def:hall-7.14` (`spectralSubspace`), +`thrm:hall-10.4` (`existsUnique_spectralMeasure_unbounded`, +`spectralMeasure_concentrated`, including the degenerate `H = {0}` case +handled explicitly in the Lean proof by `rcases subsingleton_or_nontrivial H`, +matching the blueprint's own "the degenerate case" proof paragraph). + +Two positive design points worth recording (not findings against +faithfulness — Lean is *more* general than the blueprint, which is fine and +is documented): +- `Physicslib4/Spectral/Basic.lean:81-92` explicitly records that the + blueprint's standing "H separable" convention is *not* threaded as a + global hypothesis; it is added explicitly (as `[SeparableSpace H]`) only + on the one declaration that needs it, + `completeSpace_and_separableSpace_of_isClosed` + (`Physicslib4/Spectral/Unbounded/Integral.lean:363`), matching + `lmm:closed-subspace-is-hilbert` exactly. +- Several capstone theorems (`existsUnique_spectralMeasure_normal`, + `spectrum_mvApply`) omit the blueprint's `H ≠ {0}` hypothesis where the + proof does not actually need it, per the same documented policy of + localizing `Nontrivial H` rather than assuming it globally. + +## Not covered this session (open follow-up) + +Given the turn limit, the following blueprint nodes in scope were **not** +independently depth-read this session (existence of their `\lean` links was +checked by the exhaustive script above, but statement content was not +compared line-by-line): the projection-valued-measure integration +machinery in detail (`prpstn:hall-10.1`, `prpstn:hall-10.2`, +`prpstn:coincidence-with-the-bounded-integral`, the truncation/monotone- +convergence lemmas), `prpstn:hall-9.26-internal` (internal-form direct sum, +site of the previously-reported M2/"Restriction:"-marker-then-reworded +instance-hypothesis issue — confirmed this session only that zero +`Restriction:` markers remain anywhere in scope, consistent with the prior +memo's claim that it was rewritten to "Remark:"), `lmm:borel-bijection-transports-pvm` +(`restrictPVM`/`mapPVM`), `prpstn:hall-10.29`/`thrm:hall-10.30` (Cayley +spectral-measure transport), the almost-eigenvector chain +`lmm:hall-10.24`-`lmm:hall-10.27` in full proof detail (only cross-checked +via grep for declaration names, not re-read for the M2-above bypass claim), +and the abstract-calculus measure construction +(`def:abstract-associated-measures` through +`thrm:abstract-calculus-yields-pvm`). + +## Summary counts + +- `\lean{}` links checked for existence: 256 (186 `Physicslib4.*` + 70 + Mathlib/root); **0 missing**. +- Hygiene grep: 0 `sorry`/`admit`/`native_decide`/`implemented_by`; 1 + `nolint` (justified, L1); 0 `Restriction:` markers. +- Axioms: 6 declarations checked via `lake env lean` `#print axioms`, all + exactly `[propext, Classical.choice, Quot.sound]`. +- Findings: 2 Medium (M1 stale receipt — carried forward, still open; M2 — + carried forward from prior session's M3/L3, re-flagged as not freshly + re-verified this session), 1 Low (L1, `nolint`, newly logged this + session though the code itself is unchanged). +- Statement-audit items depth-compared this session: 15, all **match** + (2 with a documented, policy-sanctioned generalization: dropped + `SeparableSpace`/`Nontrivial H` hypotheses where provably unneeded). +- Verified with a tool: link existence (256/256), hygiene grep, axiom + closure (6 theorems), receipt-vs-git-log timestamps. +- Judged by reading only: all 15 statement-faithfulness comparisons above; + M2's carried-forward claims were *not* re-verified by reading this + session (flagged explicitly as such, to avoid re-asserting last session's + evidence as this session's own). + +# Follow-up B: direct-sum, Borel-transport and Cayley-transport nodes + +(Recovered copy: this section was originally appended to +`notes/agents/review-2026-09-29-sec10.3.md`, which was accidentally +overwritten by another agent. Rewritten here in full from context.) + +Read-only depth audit of the nodes flagged as not covered in the section +above. Scope: `def:hall-a.45` through `prpstn:hall-9.26-internal` (direct +sums, `Physicslib4/Spectral/Unbounded/DirectSum.lean`); +`lmm:borel-bijection-transports-pvm` (`restrictPVM`, `mapPVM`, +`assoc_mapPVM`); and the full Cayley-transform chain +`lmm:unitary-is-normal` through `thrm:hall-10.4` +(`Physicslib4/Spectral/Unbounded/Cayley.lean`). 19 nodes read and compared +against the Lean signatures; no `.lean`/`.tex` file modified. + +### Classification counts + +All 19 nodes: **match**. No "Lean assumes more/less", "different objects", +or "edge cases differ" findings. + +- `def:hall-a.45`, `def:unitary-operator`, + `def:internal-orthogonal-decomposition`, `prpstn:polarization-identity`, + `lmm:finite-direct-sum-dense`, `lmm:internal-decomposition-unitary`, + `prpstn:hall-9.26`, `prpstn:hall-9.26-internal` — all match + (`DirectSum.lean`). +- `thrm:change-of-variables`, `lmm:borel-bijection-transports-pvm`, + `lmm:cayley-omits-one` — match (`Cayley.lean:400-519`). +- `lmm:unitary-is-normal`, `lmm:unitary-spectrum-circle`, `lmm:cayley-map`, + `thrm:hall-10.28`, `lmm:cayley-spectral-mapping`, `prpstn:hall-10.29`, + `thrm:hall-10.30`, `thrm:hall-10.4` — match (`Cayley.lean`). + +### Notable points checked, not findings + +- `prpstn:hall-9.26-internal`'s `[∀ n, CompleteSpace (K n)]` instance + (`DirectSum.lean:391`) is exactly the case the blueprint's remark and the + Lean docstring both flag as costing no generality (`hK.isClosed` implies + it via `IsClosed.completeSpace_coe`); confirmed the docstring at + `DirectSum.lean:538-540,564-566,580-582,596-598` states this each time + the instance appears, so it is not an unrecorded restriction. +- Lean's external-form section (`DirectSumOperator`, `DirectSum.lean:168-383`) + drops the blueprint's "separable" hypothesis on each `H_j` and its "ℕ-indexed + sequence" restriction (arbitrary index type `ι` instead); this is a strict + generalization the blueprint's own proof of `prpstn:hall-9.26` never + actually uses (no `\uses` edge to a separability lemma), so it does not + narrow anything and is not classified as a mismatch. +- `mapPVM` (`Cayley.lean:451`) requires `hinv : Measurable + (Equiv.ofBijective T hbij).symm` and uses it in the `notMeasurable'` + field — the blueprint's own Part 2 statement already carries "both `T` + and `T^{-1}` are measurable" as a hypothesis (its post-proof remark only + says the hypothesis is not needed for the *stated conclusion*, which + matches: Lean needs it only for the structure's junk-value-on-nonmeasurable-sets + field, consistent with the remark). +- `cayleyInv u = (I·(u+1)/(u-1)).re` (`Cayley.lean:84`) hits the `x/0 = 0` + junk value at `u = 1`. Checked: every place `cayleyInv`/`cayleyPVM` is + integrated (`pmapIntegral_cayleyInv_eq`, `pmapIntegral_cayleyPVM_id`) is + against a measure with `μU {u | u = 1} = 0` + (`spectralMeasure_singleton_one_eq_zero`, used explicitly), so the junk + value is never load-bearing — matching the blueprint's own handling + (`D(1) := 0` by convention, justified by the same null-set fact). +- `restrictPVM` (`Cayley.lean:405`) hypotheses (`MeasurableSet Y₀`, + `μ Y₀ᶜ = 0`) match blueprint Part 1 (`Y_0 ∈ Ω(Y)`, `μ(Y\setminus Y_0)=0`) + exactly. +- `thrm:hall-10.4`'s `existsUnique_spectralMeasure_unbounded` and + `spectralMeasure_concentrated` (`Cayley.lean:933,960`) both explicitly + handle the `Subsingleton H` (i.e. `H = {0}`) case matching the + blueprint's "degenerate case" proof paragraph — not a vacuous/omitted + case. + +### Verification method + +All 19 classifications were judged by reading the blueprint `.tex` and the +Lean source directly (`Read`/`grep`); no `lean_hover_info`, `lean_verify`, +or build was run this pass (statement comparison only, per task budget). + +# Follow-up A: PVM integration nodes + +Date: 2026-09-29 (separate subagent pass). Fills the "not covered" gap +flagged in `notes/agents/review-2026-09-29-sec10.3.md` for the +integration-against-a-PVM machinery, i.e. `pmapIntegral` / `integralApply` +/ `integralDomain` / `integralForm` and the directly surrounding lemmas in +`Physicslib4/Spectral/Unbounded/Integral.lean`. Read-only; no `.lean`/`.tex` +file was modified. No `lean_hover_info` / fuse MCP tools were available as +callable tools this session either, so all comparisons are from reading the +blueprint `.tex` and the Lean source directly (not tool-assisted, beyond +`grep`/`Read`/`git`). + +(Note: this section was originally written as an appendix to +`notes/agents/review-2026-09-29-sec10.3.md`, alongside a concurrently +written "Follow-up B" section by another subagent covering the direct-sum, +Borel-transport and Cayley-transport nodes. That file was later +overwritten and this section lost; it is reproduced here standalone, from +context, per the coordinator's instruction. References below to +"Follow-up B" refer to that other memo's content, not to anything in this +file.) + +## Node inventory (found by `grep -n "\\\\lean{" ... | grep`, cross-checked +against `grep -n "pmapIntegral\|integralApply\|integralDomain\|integralForm"` +on the `.tex`) + +In scope — nodes whose statement is directly about `pmapIntegral`/ +`integralApply`/`integralDomain`/`integralForm` (domain, linearity, +multiplicativity, adjoint, self-adjointness for real `f`, closedness) or is +immediate supporting machinery for them: + +1. `def:hall-sesquilinear-form-on-a-subspace` (l.1105) — `SesquilinearFormOn` +2. `def:hall-quadratic-form-on-a-subspace` (l.1113) — `IsQuadraticFormOn`, + `polarizationOn`, `IsBoundedQuadraticFormOn` +3. `prpstn:quadratic-forms-on-a-subspace-properties` (l.1135) — + `polarizationOn_eq_inner`, `polarizationOn_conj_symm` +4. `lmm:restriction-of-quadratic-form` (l.1187) — `isQuadraticFormOn_restrict`, + `polarizationOn_restrict` +5. `def:hall-a.46` (l.1255) — `MemLp`, `eLpNorm`, `Lp`, `L2.innerProductSpace` + (Mathlib; standing definition `W_f` is spelled against) +6. `lmm:l2-implies-l1` (l.1376) — Mathlib lemmas only +7. `prpstn:hall-10.2` (l.1396) — `integralDomain`, `integralForm`, + `dense_integralDomain`, `isQuadraticFormOn_integralForm`, + `norm_polarizationOn_integralForm_le`, `existsUnique_repr_integralForm`, + `pmapIntegral`, `norm_sq_pmapIntegral` +8. `lmm:bounded-on-set-range-in-domain` (l.1510) — + `range_subset_integralDomain`, `integral_norm_sq_le_of_mem_range` +9. `prpstn:hall-10.1` (l.1528) — `pmapIntegral`, `integralApply`, + `inner_pmapIntegral`, `inner_self_pmapIntegral`, `norm_sq_pmapIntegral`, + `eq_pmapIntegral_of_inner_self` +10. `prpstn:coincidence-with-the-bounded-integral` (l.1568) — + `integralDomain_eq_top_of_bddMeasurable`, `pmapIntegral_of_bddMeasurable` +11. `lmm:integral-ignores-null-sets` (l.1582) — `integralDomain_congr_of_null`, + `pmapIntegral_congr_of_null` +12. `lmm:truncations-converge` (l.1600) — `tendsto_integral_truncation` +13. `lmm:associated-measure-of-image` (l.1634) — `assoc_integral_apply`, + `lintegral_assoc_integral_apply` +14. `lmm:integral-preserves-spectral-subspaces` (l.1664) — + `mapsTo_pmapIntegral_range`, `range_subset_integralDomain` +15. `prpstn:hall-10.3` (l.1706) — `isSelfAdjoint_pmapIntegral_of_real` + +Adjacent, out of the requested core (uses `pmapIntegral` in an *application* +— the Cayley-transform reconstruction of a general self-adjoint operator — +rather than stating a property of the integral construction itself); spot- +checked for signature sanity only, not depth-audited here (this session's +"Follow-up B" independently reached the same conclusion for these two +nodes, in a full audit): +16. `prpstn:hall-10.29` (l.2966) — `pmapIntegral_cayleyInv_eq` +17. `thrm:hall-10.30` (l.3036) — `cayleyPVM`, `pmapIntegral_cayleyPVM_id` + +## Per-node classification + +All 15 in-scope nodes: **match**. No mismatches, no "Lean assumes more/less" +narrowing, no undocumented restriction, no reachable junk-value fallback, +found in this pass. Details: + +- **Nodes 1-4 (forms on a subspace).** `SesquilinearFormOn D := D →ₗ⋆[ℂ] D →ₗ[ℂ] ℂ` + matches "conjugate-linear in the first slot, linear in the second." The + blueprint's `IsQuadraticFormOn` is stated as two conditions (`|λ|²`- + homogeneity; the polarization map is itself a sesquilinear form); Lean's + `IsQuadraticFormOn` (`Integral.lean:91`) states the second condition as + `∃ L : SesquilinearFormOn D, ∀ φ ψ, L φ ψ = polarizationOn Q φ ψ` — i.e. + "there is a bundled sesquilinear map agreeing with `polarizationOn Q`" + rather than "`polarizationOn Q` literally has the sesquilinearity + property" — a bundling-vs-unbundling difference in how the same + mathematical content is packaged, not a change of content (notation + only). `polarizationOn_eq_inner` and `polarizationOn_conj_symm` + (`Integral.lean:115,130`) reproduce Part 1/Part 2 of + `prpstn:quadratic-forms-on-a-subspace-properties` verbatim including + hypotheses. `isQuadraticFormOn_restrict`/`polarizationOn_restrict` + (`:163,176`) match `lmm:restriction-of-quadratic-form` exactly (`D' ≤ D` + ↔ "`D'` a subspace of `D`"). +- **Node 5 (`def:hall-a.46`).** Cited Lean names are bare Mathlib + definitions; the blueprint text itself flags the quotient-type + discrepancy between its informal `L^p` and Mathlib's `Lp` and states it + "does not affect any argument below" — a documented, not silent, + divergence. Match. +- **Node 7 (`prpstn:hall-10.2`, the central technical proposition).** + `integralDomain μ f` (`:435`) is `{ψ | MemLp f 2 (μ.assoc ψ)}` = `W_f` + exactly. `integralForm` (`:464`) is `∫ x, f x ∂(μ.assoc ψ)` = `Q_f` + exactly. `dense_integralDomain` requires `hf : Measurable f` and concludes + `Dense (integralDomain μ f : Set H)` — Part 1 of the blueprint + proposition. `isQuadraticFormOn_integralForm` (Part 1, quadratic-form + property), `norm_polarizationOn_integralForm_le` (Part 2's bound + `|L_f(φ,ψ)| ≤ ‖φ‖ ‖f‖_{L²(μψ)}`, stated with `Real.sqrt (∫ ‖f‖² dμψ)` in + place of the blueprint's `‖f‖_{L²(X,μψ)}` notation — same quantity), + `existsUnique_repr_integralForm` (Part 3's `∃!` representing vector) all + match their cited parts with `hf : Measurable f` present exactly where + the blueprint says "let `f` be measurable." +- **Node 9 (`prpstn:hall-10.1`).** `pmapIntegral μ f : H →ₗ.[ℂ] H` (`:706`) + packages `integralApply` as a `LinearPMap` with `domain = integralDomain μ f` + — "unbounded operator on H with domain W_f" exactly. `inner_pmapIntegral` + is the off-diagonal identity, `inner_self_pmapIntegral` the diagonal one + (`= ∫ f dμψ`), `norm_sq_pmapIntegral` the norm formula, and + `eq_pmapIntegral_of_inner_self` is precisely the "strengthened uniqueness" + clause: `A : H →ₗ.[ℂ] H`, `A.domain = integralDomain μ f`, + `∀ ψ, ⟪ψ, Aψ⟫ = ∫ f dμψ` implies `A = pmapIntegral μ f` — matches the + blueprint's "any operator satisfying merely the diagonal identity" clause + word for word. + - **Junk-value fallback check.** `integralApply` (`:673`) is defined by + `if h : Measurable f ∧ ∃! χ, ... then h.2.choose else 0` — i.e. it + silently returns `0` when `f` is non-measurable or the representing + vector fails to exist. Checked every theorem in the file that mentions + `integralApply`/`pmapIntegral`/`inner_pmapIntegral`/`norm_sq_pmapIntegral` + etc. (grep, all ~17 call sites): every one of them carries an explicit + `hf : Measurable f` hypothesis (or `f ∈ BddMeasurable X`, which implies + it), and `existsUnique_repr_integralForm` guarantees the `∃!` half + whenever `f` is measurable, so the `else 0` branch is *never* reached by + any stated theorem in scope — matching the file's own docstring claim + at `Integral.lean:670-671` ("every result about `pmapIntegral` assumes + `f` measurable anyway"). This was checked by reading all declarations, + not merely trusting the docstring. +- **Node 10 (`prpstn:coincidence-with-the-bounded-integral`).** + `integralDomain_eq_top_of_bddMeasurable` (`W_f = H` for bounded `f`) and + `pmapIntegral_of_bddMeasurable` (`pmapIntegral μ f = (μ.integral f).toPMap ⊤`, + i.e. the unbounded integral coincides with §9's bounded integral, lifted + to a `LinearPMap` with domain `⊤`) match exactly. +- **Node 11 (`lmm:integral-ignores-null-sets`).** + `integralDomain_congr_of_null`/`pmapIntegral_congr_of_null` both take + `hN : MeasurableSet N`, `hμN : μ N = 0`, `hfg : ∀ x ∉ N, f x = g x` and + conclude domain/operator equality — matches "agreeing off a `μ`-null set" + precisely (the null-set condition is on the *operator-valued* measure `μ`, + i.e. `μ N = 0`, not merely each scalar `μψ N = 0`, matching the blueprint's + own hypothesis, not a weaker one). +- **Node 12 (`lmm:truncations-converge`).** `tendsto_integral_truncation` + matches: `Tendsto (fun n => μ.integral (1_{|f|0`, `ε‖ψ‖ ≤ ‖Tψ-λψ‖` on `Dom(T)` gives `Range(T-λ1)` closed + — matches exactly, including that `Dom(T-λ1) = Dom(T)` by the `subSmul` + definition cited in the blueprint's own parenthetical. +- **`lmm:uniqueness-of-resolvent`** (`existsUnique_isResolvent`, + `Spectrum.lean:74-78`) — the two-sided bounded inverse `B` in + `def:hall-9.16`'s `IsResolvent` structure is unique when it exists, + exactly as stated (the structure's two fields `mem_domain`+`rightInverse` + and `leftInverse` reproduce the blueprint's numbered properties 1 and 2 + verbatim, checked separately though not itself in the audited-node list). +- **`lmm:spectrum-notions-agree`** (`pmapResolventSet_toPMap_top`, + `pmapSpectrum_toPMap_top`, `Spectrum.lean:87-126`) — for `A : H →L[ℂ] H` + regarded as an unbounded operator with `Dom = ⊤`, the unbounded resolvent + set/spectrum agree with Mathlib's bounded-operator `resolventSet`/ + `spectrum ℂ A`; matches exactly. +- **`lmm:b-squared-inequality-symmetric`** (`sq_norm_le_of_isSymmetric`, + `Spectrum.lean:138-155`) — `b² ‖ψ‖² ≤ ‖(T-λ1)ψ‖²` for `λ=a+ib`, `ψ ∈ + Dom(T)`, `T` symmetric — matches exactly (Lean's `‖·‖²` for the real + quantities is the same as the blueprint's `⟨·,·⟩` since + `⟨χ,χ⟩ = ‖χ‖²` for any `χ`). + +### Junk-value fallback check (specific to this batch of nodes) + +Mathlib's `LinearPMap.adjoint` returns the zero map when the domain is not +dense (documented in `LinearPMap.lean`'s module docstring and confirmed by +reading `adjoint_apply_of_not_dense`). Checked every one of the 22 audited +statements that mentions `T†`/`(T†).domain` for whether it could reach this +junk value silently: +`existsUnique_adjoint_apply`, `mem_adjoint_domain_iff_exists`, +`adjoint_apply_eq_of_forall_inner`, `adjoint_le_adjoint_of_le`, +`orthogonal_range_eq_ker_adjoint`, `adjoint_add_toPMap` all carry an +explicit `HasDenseDomain` hypothesis on the relevant operator; +`existsUnique_isSelfAdjoint_extension`/`eq_closure_of_isSelfAdjoint_of_le` +take `IsEssentiallySelfAdjoint`/`IsSelfAdjoint` hypotheses, which force +density via `IsSelfAdjoint.dense_domain`. No audited statement in this batch +states a property of `T†` without either an explicit density hypothesis or +one implied by a stronger hypothesis already present — no reachable +junk-value leak found. + +### `\leanok` correctness + +`grep -n "sorry\|admit\|native_decide\|debug.skipKernelTC" +Physicslib4/Spectral/Unbounded/{Basic,Spectrum,Cayley}.lean` — no matches. +All proof blocks for the 22 audited nodes are sorry-free, so their `\leanok` +tags are correct. The three nodes whose blueprint proof body is empty +(`\begin{proof}\leanok\end{proof}` with no text) — +`prpstn:convergence-facts`, `thrm:sequential-closedness`, and +`prpstn:hall-a.49` — follow the section's own documented convention +(l.8 of the `.tex`: standard results with proofs outside the development's +scope are stated in full but left unproved in the blueprint text), not a +misuse: each cites only genuine, already-checked Mathlib lemmas as its +`\lean{}` witnesses. + +### Mathlib-name-link check + +For every node whose `\lean{}` tag names a bare Mathlib declaration (as +opposed to a `Physicslib4.*` wrapper), read the Mathlib source directly +(not just the name) to confirm it states the blueprint's claim, not merely +something plausibly-related: `tendsto_atTop_ciSup`, +`Metric.isCompact_of_isClosed_isBounded`, `IsCompact.tendsto_subseq`, +`Summable.of_norm_bounded`, `tendsto_nhds_unique`, +`Filter.Tendsto.cauchySeq`, `Dense.eq_of_inner_left`, +`Dense.eq_of_inner_right`, `isSeqClosed_iff_isClosed`, +`mem_closure_iff_seq_limit`, `Prod.tendsto_iff`, `LinearPMap.le`, +`LinearPMap.exists_of_le`, `LinearPMap.domRestrict`, +`Submodule.orthogonal_orthogonal_eq_closure` — all confirmed to state +exactly the cited fact. `LinearPMap.adjoint`/`LinearPMap.adjointDomain`/ +`LinearPMap.mem_adjoint_domain_iff`/`LinearPMap.adjoint_isFormalAdjoint` +(underlying `def:hall-9.1`, itself upstream of several audited nodes) were +also read directly in `Mathlib/Analysis/InnerProductSpace/LinearPMap.lean` +and confirmed to match the blueprint's adjoint definition including the +documented junk-value convention addressed above. + +### Verification method + +All 22 classifications, the junk-value reachability check, and the +`\leanok` correctness check were judged by reading the blueprint `.tex` +(lines 1-700, covering all 22 labels) against the Lean source +(`Physicslib4/Spectral/Unbounded/Basic.lean`, `Spectrum.lean`) and the +relevant Mathlib source files directly (`Read`/`grep`); no `lean_hover_info` +or other fuse MCP tool was called this pass. The `sorry`/`admit`/ +`native_decide`/`debug.skipKernelTC` hygiene claim was tool-verified via +`grep` across the three Lean files in scope, not merely spot-read. + +## Follow-up D: measure-integration and bounded-normal nodes + +Read-only statement audit of 22 nodes in +`blueprint/src/sections/sec10/unbounded-spectral-theorems.tex`, checked against +the Lean declarations they cite (`Physicslib4/Spectral/Unbounded/Integral.lean`, +`Physicslib4/Spectral/Unbounded/Normal.lean`, and cited Mathlib lemmas in the +vendored `.lake/packages/mathlib` checkout). All 22 are **match** (several are +genuine generalizations of the blueprint statement, which I still count as +match since they subsume it, not narrow it). No mismatches, no missing +`\lean` tags, no unproved `\leanok` claims, and no `sorry`/`admit`/ +`native_decide`/`skipKernelTC` found in the two Lean files that carry these +declarations (`Integral.lean`, `Normal.lean`, also checked `Basic.lean`, +`DirectSum.lean`). + +### Per-node findings + +- **lmm:associated-measure-total-mass** — `assoc_univ_eq`/`assoc_le_norm_sq` + (Integral.lean:194,204). Matches `μ_ψ(X) = ‖ψ‖²` and `μ_ψ(E) ≤ ‖ψ‖²` + exactly, stated with `ENNReal.ofReal (‖ψ‖^2)` since `μ.assoc ψ : Measure X` + is `ℝ≥0∞`-valued — notation only, not a mismatch. +- **thrm:monotone-convergence-theorem-for-integrals** — + `MeasureTheory.lintegral_tendsto_of_tendsto_of_monotone` + + `MeasureTheory.lintegral_iSup`. Both are stated for a general measure space + (blueprint's hypothesis exactly), with the "tendsto" version using a.e. + monotonicity/a.e. convergence rather than everywhere — a strict + generalization of the blueprint's "for all x". Match. +- **thrm:dominated-convergence-theorem** — + `MeasureTheory.tendsto_integral_of_dominated_convergence`, + `Integrable.mono'`, `aestronglyMeasurable_of_tendsto_ae`. Together give + exactly the blueprint conclusion (g and each gₙ integrable, integrals + converge), generalized to a.e. hypotheses and to functions valued in any + normed space (blueprint uses ℂ). Match. +- **prpstn:additivity-of-the-integral-in-the-measure** — + `lintegral_add_measure`, `lintegral_smul_measure` (ℝ≥0∞ case, unconditional) + and `integral_add_measure`, `integral_smul_measure` (Bochner case, with the + integrability side condition the blueprint states). Match. +- **prpstn:monotonicity-of-the-integral-in-the-measure** — + `lintegral_mono'` (varies both measure and integrand; instantiated with + `f = g`) + `Measure.le_iff` (converts pointwise `ν(E) ≤ ν'(E)` to `ν ≤ ν'`). + Match. +- **prpstn:countable-additivity-of-the-integral** — `lintegral_iUnion` (over a + general countable index type, disjoint union) + `setLIntegral_univ`. + Combines to the blueprint's disjoint-cover statement, sum is `tsum` + (= the stated series for `ℝ≥0∞`). Match. +- **prpstn:integrals-agree-when-measures-agree** — + `Physicslib4.Spectral.Unbounded.setLIntegral_congr_measure` + (Integral.lean:378), literally the blueprint statement. Match. +- **lmm:range-of-projection-is-kernel** — `range_eq_ker_one_sub`, + `mem_range_iff_apply_eq`, `isClosed_range_of_isStarProjection` + (Integral.lean:326,340,351), stated for `IsStarProjection P`. Match. +- **lmm:range-membership-concentrates-measure** — `assoc_compl_eq_zero`, + `lintegral_assoc_eq_setLIntegral` (Integral.lean:254,274). Match. +- **lmm:norm-convergent-decomposition** — `hasSum_apply_of_partition`, + `apply_biUnion_eq_sum` (Integral.lean:286,296). Match (Lean's `HasSum` is + exactly "convergent in the norm topology", partial-sum statement matches + Part 2 verbatim). +- **def:hall-10.19** — `IsStarNormal` (Mathlib, `star_comm_self`). For + `H →L[ℂ] H`, `star = adjoint`, so this is exactly "`AA* = A*A`". Match. +- **lmm:self-adjoint-is-normal** — `IsSelfAdjoint.isStarNormal` (Mathlib). + Match. +- **lmm:power-growth-controlled-by-spectral-radius** — + `tendsto_norm_pow_div_atTop` (Normal.lean:90). Notably this Lean lemma has + **no** `[Nontrivial H]` hypothesis, unlike the blueprint's stated + `H ≠ {0}` (needed there only to make `R(A)` a sup over a nonempty set); + Mathlib's `spectralRadius` handles the trivial case by convention, so this + is a generalization, not a narrowing. Match. +- **lmm:hall-10.22** — `spectralRadius_mul_le_of_commute [Nontrivial H]` + (Normal.lean:118), hypothesis `Commute A B`. Match. +- **lmm:adjoint-product-and-involution** — Mathlib's + `ContinuousLinearMap.adjoint_comp`, `ContinuousLinearMap.adjoint_adjoint`. + Match. +- **prpstn:hall-10.21** — `IsStarNormal.spectralRadius_eq_nnnorm` (Mathlib, + `Analysis/CStarAlgebra/Spectrum.lean:135`), stated for a general + `CStarAlgebra A`, no `Nontrivial` hypothesis at all — a generalization of + the blueprint's `H ≠ {0}` (`‖A‖ = R(A)`, using `nnnorm`/`spectralRadius ℂ`). + Match. +- **lmm:normality-balances-norms** — `norm_adjoint_sub_smul_apply` + (Normal.lean:402). Match. +- **def:hall-10.24** — `IsAlmostEigenvector` structure (Normal.lean:424), + fields `ne_zero : ψ ≠ 0` and `norm_lt : ‖(A - λ•1)ψ‖ < ε*‖ψ‖`. Match. +- **lmm:polynomials-in-normal-are-normal** — `mvApply`, `mvEvalConj`, + `adjoint_mvApply`, `isStarNormal_mvApply`, `commute_mvApply` + (Normal.lean:612–655). Match (adjoint formula, normality, and the + commuting-with-`A`-and-`A*` clause are all present). +- **lmm:restriction-of-normal-operator** — `exists_restrict_isStarNormal` + (Normal.lean:663). Stated as an existential (`∃ B, ...`) constructing the + restriction explicitly, rather than the blueprint's direct "`A|_W` is + normal, its adjoint is `A*|_W`"; mathematically the same content (`B` is a + concrete witness, not an opaque existence claim), so I read this as + **notation only**, not a narrowing. One thing worth flagging: the + closedness hypothesis `_hW : IsClosed (W : Set H)` and nonzero hypothesis + `_hne : W ≠ ⊥` are both underscore-named in the signature, i.e. *unused* in + the proof — Lean's lemma is proved without needing them, a strict + generalization of the blueprint's hypotheses, not a restriction. The + blueprint's conclusion "`W` is a separable Hilbert space" is not restated + (it is carried instead as the `[CompleteSpace W]` instance argument), which + is a modeling choice, not lost content. +- **crllr:norm-of-polynomial-in-a-astar** — `norm_mvApply [Nontrivial H]` + (Normal.lean:868). Uses `sSup ((fun λ => ‖mvEvalConj p λ‖) '' spectrum ℂ A)` + which is exactly `sup_{λ∈σ(A)} |p(λ,λ̄)|`. Match. +- **thrm:continuous-functional-calculus-normal** — `mvPolyOn`, + `normalCalculus` (`:= cfcHom hA`), `existsUnique_normalCalculus`, + `normalCalculus_mvPolyOn`, `normalCalculus_mul`, `normalCalculus_star`, + `norm_normalCalculus`, `normalCalculus_one_and_id`, + `isSelfAdjoint_normalCalculus_of_real`, `isStarNormal_normalCalculus` + (Normal.lean:881–1008). All five numbered properties plus the two final + clauses (self-adjoint on real-valued `f`, normal for every `f`) are present. + None of these declarations require `[Nontrivial H]`, again a generalization + of the blueprint's `H ≠ {0}`. Match. The file's own "Formalization note" + after `thrm:hall-10.23`/`spectrum_mvApply` (not itself in my node list, but + feeding this one) candidly states the Lean proof uses Mathlib's `cfc` + machinery (`cfc_map_spectrum`) rather than the blueprint's almost-eigenvector + route through Lemmas 10.25–10.27 — this divergence is already acknowledged + in the blueprint text itself, so it is not an unrecorded restriction. + +### Classification counts + +- match: 22 +- notation only: 0 (folded into match above for `assoc_univ_eq`/ + `assoc_le_norm_sq` and `exists_restrict_isStarNormal`, noted inline) +- Lean assumes more: 0 +- Lean assumes less: 0 +- different objects: 0 +- edge cases differ: 0 +- can't determine: 0 + +### Method notes + +- Verified by reading source: all Lean signatures above were read directly + from `Physicslib4/Spectral/Unbounded/Integral.lean`, + `Physicslib4/Spectral/Unbounded/Normal.lean`, and the pinned + `.lake/packages/mathlib` sources (not `lean_hover_info`/build, since this + was a read-only statement audit and no MCP Lean session was invoked). +- Verified by grep: absence of `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by` in `Integral.lean`, `Normal.lean`, + `Basic.lean`, `DirectSum.lean`. +- Judged by reading (not tool-verified): that Mathlib's `spectralRadius`/`cfc` + conventions on the trivial algebra make the missing `[Nontrivial H]` + hypotheses genuine generalizations rather than silently different + definitions — I did not build/typecheck a counterexample, only read the + relevant Mathlib source comments and definitions. + +# Follow-up E: abstract extended calculus nodes + +Date: 2026-09-29 (separate subagent pass, read-only statement audit). Scope: +`blueprint/src/sections/sec10/unbounded-spectral-theorems.tex`, nodes +`lmm:abstract-calculus-non-negative` through `crllr:abstract-extended-norm-bound` +(the standing convention `conv:section-abstract`, l.2333, plus 10 nodes, +l.2357-2646), against `Physicslib4/Spectral/Unbounded/AbstractCalculus.lean`. +No `.lean`/`.tex` file modified. + +(This section was originally appended to +`notes/agents/review-2026-09-29-sec10.3.md`; that file was later overwritten +by another agent, losing this section, so it is rewritten here in full as a +standalone file from the auditing agent's own context.) + +### Standing hypotheses (`conv:section-abstract`) + +`X` a compact metric space with Borel σ-algebra; `Φ` an abstract continuous +functional calculus on `X`; `μ_ψ` its induced measures; `Φ̃` its extended +calculus — carried as parameters/hypotheses throughout. Lean matches this +via `variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] +[CompleteSpace H]` and `variable {X : Type*} [MetricSpace X] [CompactSpace X] +[MeasurableSpace X] [BorelSpace X]` (`AbstractCalculus.lean:51-52`), with +`hΦ : IsAbstractCalculus Φ` threaded explicitly through every declaration +rather than as a further `variable` — a packaging choice, not a content +change. + +### Per-node classification + +1. **`lmm:abstract-calculus-non-negative`** (`isSelfAdjoint_of_real`, + `inner_nonneg_of_nonneg`, `ofRealCM`, `:55,89,104`) — **match**. Part 1: + `f : C(X, ℝ)` (real-valued continuous function typed directly, lifted by + `ofRealCM`) gives `IsSelfAdjoint (Φ (ofRealCM f))` and `(⟪ψ,Φ(ofRealCM f)ψ⟫).im = 0`, + equivalent to the blueprint's "self-adjoint, and `⟨ψ,Φ(f)ψ⟩ ∈ ℝ`." Part 2 + (`inner_nonneg_of_nonneg`, `hf : ∀ x, 0 ≤ f x`) concludes + `0 ≤ (⟪ψ,Φ(ofRealCM f)ψ⟫).re`, matching "`⟨ψ,Φ(f)ψ⟩ ≥ 0`" given Part 1's + vanishing imaginary part. Using `C(X,ℝ)` instead of "`f ∈ C^0(X;ℂ)` + real-valued" is notation only, same object. +2. **`lmm:abstract-associated-measures-finite`** (`abstractMeasure_univ`, + `:180`) — **match**. `(abstractMeasure hΦ ψ) Set.univ = ENNReal.ofReal (‖ψ‖^2)` + = `μ_ψ(X) = ‖ψ‖²`; finiteness is a separate `IsFiniteMeasure` instance + (`:163`) rather than restated inline, same content. +3. **`prpstn:abstract-extended-forms-are-bounded`** + (`isBoundedQuadraticForm_abstractForm`, `norm_abstractForm_le`, + `abstractForm_continuous`, `abstractForm`, `:195,232,282,297`) — + **match**. `abstractForm hΦ f ψ := ∫ x, f x ∂(abstractMeasure hΦ ψ)` + is `Q_f(ψ)`; boundedness/quadratic-form-hood and continuity-agreement are + both gated by `hf : f ∈ BddMeasurable X` exactly as "bounded measurable + `f`"; `norm_abstractForm_le` gives `‖Q_f(ψ)‖ ≤ (⨆x,‖f x‖) * ‖ψ‖^2`, the + stated bound with `‖f‖_∞ = ⨆ x, ‖f x‖`. +4. **`def:abstract-extended-calculus`** (`extendedCalculus`, + `inner_extendedCalculus`, `extendedCalculus_continuous`, `:308,318,329`) — + **match, with a documented junk-value fallback**. `extendedCalculus hΦ f` + is defined by `if h : f ∈ BddMeasurable X then (...).toOperator else 0` + (`:309`) — total on all `f : X → ℂ`, returning `0` outside the blueprint's + domain (bounded measurable `f`), where the blueprint's `Φ̃` is simply + undefined. The docstring at `:302-304` states this explicitly ("extended + by `0` to functions that are not bounded and measurable"). Checked: every + theorem in the file that states a property of `extendedCalculus` carries + an explicit `f ∈ BddMeasurable X` hypothesis, so the `else 0` branch is + never reached by any stated theorem in scope — not a reachable + junk-value leak, just a total-function packaging convention. + `inner_extendedCalculus` and `extendedCalculus_continuous` reproduce the + defining property and the "genuinely extends `Φ`" clause exactly. +5. **`lmm:abstract-extended-linear`** (`extendedCalculus_smul_add`, `:342`) + — **match**. `extendedCalculus hΦ (αf+βg) = α•Φ̃(f)+β•Φ̃(g)` for + `f,g ∈ BddMeasurable X`, exactly as stated. +6. **`lmm:abstract-extended-convergence`** (`polarization_abstractForm`, + `tendsto_inner_extendedCalculus`, `:364,377`) — **Part 1 match, Part 2 + Lean assumes more.** Part 1 (`polarization_abstractForm`, `hh : h ∈ + BddMeasurable X`): `polarization (abstractForm hΦ h) φ ψ = ⟪φ,Φ̃(h)ψ⟫` is + the off-diagonal formula exactly. Part 2 (`tendsto_inner_extendedCalculus`, + `:377-382`) requires an *explicit* hypothesis `hh₀ : h₀ ∈ BddMeasurable X` + in addition to `hh : ∀ i, h i ∈ BddMeasurable X`, `hbdd : ∀ i x, ‖h i x‖ ≤ M`, + and pointwise convergence — but the blueprint's statement (l.2486-2489) + states the convergence principle for `{h_i}` bounded measurable with + `|h_i| ≤ M` converging pointwise to `h`, **without** listing "`h` bounded + measurable" as a hypothesis, because it is an automatic consequence (a + uniformly-bounded pointwise limit of measurable functions is measurable + and bounded by the same `M` — the same fact the file's own + `extendedCalculus_mul` proof derives internally via its local `hlim` + helper, `:427-430`, using `measurable_of_tendsto_metrizable`). So the + Lean lemma demands as an explicit premise something the blueprint treats + as free; every call site in this file happens to supply it by deriving + it locally first (e.g. `:456,493`), so the extra hypothesis is not + unsatisfiable or misused, but it does narrow the statement actually + proved relative to the blueprint's (every future caller must also + perform that derivation rather than getting it for free from + boundedness+convergence). Classified **Lean assumes more** (redundant-but- + undischarged hypothesis), file:line `AbstractCalculus.lean:378`. +7. **`lmm:abstract-extended-real-self-adjoint`** + (`isSelfAdjoint_extendedCalculus_of_real`, `:398`) — **match**. `f ∈ + BddMeasurable X`, `∀x, (f x).im = 0` (bounded, measurable, real-valued) + gives `IsSelfAdjoint (Φ̃(f))`, exactly. +8. **`prpstn:abstract-extended-multiplicative`** (`extendedCalculus_mul`, + `:413`) — **match**. `Φ̃(fg) = Φ̃(f)Φ̃(g)` for `f,g ∈ BddMeasurable X`. +9. **`lmm:abstract-extended-conjugation`** (`extendedCalculus_conj`, `:518`) + — **match**. `Φ̃(f̄) = Φ̃(f)^*` for `f ∈ BddMeasurable X`. +10. **`crllr:abstract-extended-norm-bound`** (`norm_extendedCalculus_le`, + `:718`) — **match**. `‖Φ̃(f)‖ ≤ ⨆ x, ‖f x‖` for `f ∈ BddMeasurable X`; the + docstring (`:711-713`) notes the sup is `0` when `X` is empty, matching + the same convention implicit in the blueprint's `‖f‖_∞ ≡ sup_{x∈X}|f(x)|` + (empty-sup convention, not a discrepancy since neither text nor Lean + special-cases nonempty `X` for this corollary). + +### Definitions this section depends on + +`BddMeasurable X` (`Physicslib4/Spectral/Basic.lean:234`) is the `Submodule +ℂ (X → ℂ)` with carrier `{f | Measurable f ∧ ∃ C, ∀ x, ‖f x‖ ≤ C}` — exactly +"bounded measurable complex-valued functions," matching every blueprint use +of that phrase in this section. Not separately flagged as a node here since +it is not one of the ten audited, but checked as a dependency of all of them. + +### Classification counts + +10 nodes: 9 **match** (of which 1, node 4, has a documented, non-reachable +junk-value fallback worth noting but not a mismatch), 1 **split** +(`lmm:abstract-extended-convergence`: Part 1 match, Part 2 Lean-assumes-more). +0 mismatches, 0 "different objects," 0 "edge cases differ" (beyond the +noted empty-`X` convention, which is consistent), 0 "can't determine." + +**Ordered by how much they narrow the project's claim** (most to least): +1. `lmm:abstract-extended-convergence` Part 2 (`tendsto_inner_extendedCalculus`, + `AbstractCalculus.lean:378`) — extra hypothesis `hh₀ : h₀ ∈ BddMeasurable X` + not present in the blueprint statement (l.2486-2489), though derivable + and in fact derived at every call site in this file. +2. `def:abstract-extended-calculus` (`extendedCalculus`, `:308`) — total + function with `else 0` outside `BddMeasurable X`; confirmed unreachable + by any theorem in scope, so noted rather than classified as a narrowing. + +No `sorry`/`admit`/`native_decide`/`implemented_by` found in +`AbstractCalculus.lean` (grep, this pass). No `\leanok` misuse: all ten +nodes' proof blocks are sorry-free. + +### Verification method + +All ten classifications, the standing-hypothesis check, and the junk-value +reachability check were judged by reading the blueprint `.tex` +(l.2333-2646) against the Lean source directly (`Read`/`grep`); no +`lean_hover_info` or other fuse MCP tool was called this pass. The +`sorry`/`admit`/`native_decide`/`implemented_by` hygiene claim and the +"every call site supplies `hh₀`" / "junk branch never reached" claims were +tool-verified via `grep` across the full file, not merely spot-read. diff --git a/notes/agents/review-2026-09-29-sec10.4.md b/notes/agents/review-2026-09-29-sec10.4.md new file mode 100644 index 0000000..0e09fa6 --- /dev/null +++ b/notes/agents/review-2026-09-29-sec10.4.md @@ -0,0 +1,363 @@ +# Audit: blueprint §10.4 "Spacetime" (fresh, complete review) + +Date: 2026-09-29 + +Scope: `blueprint/src/sections/sec10/spacetime.tex` (all nodes, lines 1-1846) +and every Lean declaration its `\lean{...}` tags cite, i.e. the full contents +of: + +`Physicslib4/Spacetime/{Basic, CausalStructure, Curves, Causality, +CausalComplement, LorentzianSpacetime, Minkowski, MinkowskiDirected, +MinkowskiDilation, LorentzCauchySchwarz, LorentzCone, LorentzOrthogonal, +Diffeo, Isometry, IsometryCausality, IsometryTopology, Pullback, +CrossMetricIsometry}.lean` + +plus `Physicslib4/AQFT/HaagKastlerCurved/IdentityComponent.lean` for +`lmm:axiom5-basis-preservation` (`toAbstractIdentityComponent_isBasisSet_smul`). + +Per instructions this is a fresh, independent pass; prior sec10.4 memos +(`review-2026-09-sec10.4.md`, `review-2026-09-25-sec10.4.md`, +`review-2026-09-26-sec10.4.md`) were consulted only after forming my own +conclusions, to classify findings as new vs. carried-forward. + +## Method + +**Verified by reading, line by line, every declaration cited by a `\lean{}` +tag in the file**, comparing it sentence-by-sentence against the +corresponding blueprint statement. This covers all ~140 blueprint nodes in +`spacetime.tex` (definitions, lemmas, theorems and their proofs) and all +~294 distinct Lean identifiers named in their `\lean{}` tags. Every one of +the 19 Lean files listed above was read in full (not sampled). + +**Tool-verified:** +- `blueprint/lean_decls` (present, generated by a prior `leanblueprint + checkdecls`-style run, timestamped 2026-09-25T17:22, after the last commit + touching `Physicslib4/Spacetime/`) contains every one of the 294 `\lean{}` + identifiers extracted from `spacetime.tex` (`comm -23` against the sorted, + deduplicated identifier list returned empty) — strong evidence, not just a + read, that every cited name resolves in the built environment. +- `lake env lean` on a scratch file in `/tmp` importing every in-scope module + and running `#print axioms` on 16 representative top-level theorems spanning + every subsection (`Spacetime.pullback`, `LorentzianSpacetime.pullback`, + `isTopologicalBasis_alexandrovBasis(_standardMinkowski)`, + `CausallyCompleteRegion`, `chronologicallyPrecedes_trans`, + `causallyPrecedes_trans/_asymm/_antisymm`, `causalComplement_antitone`, + `toAbstractIdentityComponent_isBasisSet_smul`, + `reverse_cauchy_schwarz(_of_lorentzianAt)`, `alexandrovBasis_image_smul`, + `minkowskiForm_smul`): every one reports exactly + `[propext, Classical.choice, Quot.sound]`, and the file compiled without + error, confirming these declarations are sorry-free and exist as claimed. +- `grep -rn 'sorry\|admit\b\|native_decide\|debug.skipKernelTC\|implemented_by'` + across the 19 in-scope files and `IdentityComponent.lean`: zero true hits + (the only string matches are docstring prose — "sorry-free", "not `sorry` + placeholders" — in `Basic.lean:59` and `Curves.lean:55`). +- `grep -rn 'nolint'`: exactly one hit, `Causality.lean:81`, + `@[nolint unusedArguments]` on `def IsGeodesic (_μ : M.SmoothPath) : Prop := + True`. Justified: the argument is unused only because the predicate is + currently the `True` placeholder; the docstring immediately above it carries + a `**Restriction:**` line naming the intended general form (auto-parallelism + under the Levi-Civita connection) and what it is waiting on (Mathlib support + for pseudo-Riemannian affine connections). This is the one known, documented + restriction named in the task; per instructions it is not re-reported as a + new finding. +- `grep -rn 'Restriction:'`: exactly the three lines tied to the `IsGeodesic` + docstring (`Causality.lean:75,92,144`) — no undocumented restriction found + elsewhere in the 19 files. +- `python3 ~/.claude/lean-kit/lean_guard.py check --base HEAD`: reports only + `.claude/CLAUDE.md` and `.claude/lean-policy.json` as protected changes + (both untracked harness-setup files from this session's environment, per + `git status`); no protected change touches any Lean or blueprint file in + scope, so no change audit is warranted for §10.4 this session. +- `.git/lean-kit/verify-receipt.json`: exists, records `lake build` and + `lake lint` both exit 0, but at `time: 2026-09-18T14:08:28Z` — this + **predates** the current `HEAD` (`15b3ce6`, committed + `2026-09-26T05:22:03+02:00`, "Fix second-round chapter 10 review + findings") by over a week and several commits. The receipt does **not** + reflect the current tree. (This is a whole-project integrity note, not + specific to §10.4 correctness; the two most recent commits it misses touch + `Physicslib4/AQFT/HaagKastlerCurved/*` and `Physicslib4/Spectral/*`, outside + this section's scope, but the receipt should be treated as stale until a + fresh `verify` is run.) +- `.git/lean-kit/approvals.json`: does not exist. No approvals in effect for + §10.4. +- `.lake/.build-errors.json` (a stale artifact from a build attempt at + `2026-09-25T10:45`, predating `HEAD`): records one `sorry` in + `Physicslib4/AQFT/HaagKastler/StrongDensity.lean:74` and a build **error** + ("Unknown identifier `C`") in + `Physicslib4/AQFT/HaagKastler/QuasilocalIntertwiner.lean:679` as of that + timestamp. Both files are outside chapter 10 (Haag-Kastler axioms in flat + spacetime, not §10.4), and the `StrongDensity.lean` sorry already carries its + own `**Restriction:**` docstring line. Neither affects any §10.4 Lean file. + Flagged here only because it bears on whether "the tree currently builds" + in the integrity sense the task asks about; it does not change any finding + below. + +## Findings + +### Medium (carried forward from `review-2026-09-26-sec10.4.md`, still unresolved) — `IsPastEndpoint`/`IsFutureEndpoint` are typed for `SmoothPath`, contradicting the blueprint's explicit "no smoothness input" clause + +**Location:** `Physicslib4/Spacetime/Curves.lean:920,932`, cited by +`def:endpoints` (`spacetime.tex:270-281`). + +Blueprint text (`spacetime.tex:278`, emphasis in original): + +> "For an arbitrary path $\mu$, the past and future endpoints are singled out +> by extremality of the *parameter*, not by counting boundary components, and +> **no causal or smoothness input enters**: $p$ is a *past endpoint* of $\mu$ +> if there is an $s \in \Sigma$ with $\mu(s) = p$ that is *minimal*..." + +Lean (unchanged since the prior audit): + +```lean +def IsPastEndpoint (μ : M.SmoothPath) (p : M.Carrier) : Prop := + ∃ s ∈ μ.parameterSpace, μ.toFun s = p ∧ (∀ s' ∈ μ.parameterSpace, s ≤ s') + +def IsFutureEndpoint (μ : M.SmoothPath) (p : M.Carrier) : Prop := + ∃ s ∈ μ.parameterSpace, μ.toFun s = p ∧ (∀ s' ∈ μ.parameterSpace, s' ≤ s) +``` + +Both take `μ : M.SmoothPath`, not `μ : M.Path`, even though the definition +body uses only `parameterSpace`, `toFun` and the order on `ℝ` — exactly what +the blueprint's own body says, and nothing that needs smoothness. The +companion `IsEndpoint (μ : M.Path) (p : M.Carrier) : Prop` (`Curves.lean:905`) +is correctly stated for a general `Path`; it is the two more specific +predicates that narrow the domain. This is "Lean assumes more" — an extra +structural hypothesis (smoothness + non-vanishing derivative on the path) not +present in, and explicitly disclaimed by, the blueprint's own wording. No +downstream theorem currently needs the general-`Path` form (every consumer — +`IsTripSegment`, `IsCausalTripSegment`, the pushforward lemmas, the +Minkowski-specific corollaries — only ever applies it to a `SmoothPath`), so +it has no observed proof consequence, but as a standalone definition audited +against its cited blueprint entry it is narrower than stated, and — unlike +the `IsGeodesic` precedent — the narrowing carries no `**Restriction:**` +docstring line. + +I independently re-read `Curves.lean` in full this session (not relying on +the prior memo) and confirm the code is unchanged at these lines; this +finding is real and still open, not something I am re-discovering +independently — crediting the 2026-09-26 audit for the original report. + +### Low (carried forward, still unresolved) — no `Curve`/`SmoothCurve`-level endpoint predicate + +`def:endpoints` says a point is an endpoint "of a path $\mu : \Sigma \to M$ +**or its associated curve**" (`spacetime.tex:271`). Only the `Path`/`SmoothPath` +forms are formalized (`IsEndpoint`, `IsPastEndpoint`, `IsFutureEndpoint`); +there is no `Curve.IsEndpoint` or `SmoothCurve.IsPastEndpoint` defined via +`Quot.lift` or an existential-over-representative, the pattern used elsewhere +in this file (`IsTimelikeSmoothCurve`, `IsFutureOrientedSmoothCurve`, etc.). +Consistent with how the definition is consumed downstream (`IsTrip` always +goes through a representative `SmoothPath` directly), so nothing is blocked, +but the blueprint's "or its associated curve" clause has no Lean witness. +Re-confirmed present (still missing) this session. + +### Low (carried forward, still unresolved) — asymmetric strictness between `PathEquiv` and `SmoothPathEquiv`/`OrientedSmoothPathEquiv` + +`PathEquiv` (`Curves.lean:264`) requires a homeomorphism `φ : ℝ → ℝ` defined +(and inverted) on **all of `ℝ`** that happens to map `Σ₁` onto `Σ₂`. +`SmoothPathEquiv`/`OrientedSmoothPathEquiv` (`Curves.lean:279,297`) only +require `ContDiffOn`/mutual-inverse conditions **on the respective parameter +spaces**, with no requirement that `φ`, `ψ` extend to a diffeomorphism of all +of `ℝ`. Mathematically almost certainly harmless (any homeomorphism/ +diffeomorphism between two non-degenerate closed intervals of `ℝ` extends to +one of all of `ℝ`), but the two Lean definitions sit at different levels of +generality without comment, while the blueprint's wording ("a homeomorphism +of the parameter space", `def:curves`) is uniform across both clauses. +Low severity, judged by reading only; re-confirmed present this session. + +### Low (integrity, whole-project, new observation this session) — `verify-receipt.json` is stale relative to `HEAD` + +See the tool-verified note above: the receipt records success as of +`2026-09-18`, eight days and several commits before the current `HEAD` +(`2026-09-26`). Nothing in §10.4 specifically is implicated (the commits +since the receipt touch `HaagKastlerCurved`, `Spectral`, and this section's +own two most recent "review findings" fixes, all of which I independently +re-verified compile and are axiom-clean via the `#print axioms` run above), +but the receipt itself should not be relied on as current evidence that +`lake build`/`lake lint` pass on today's tree without re-running them. + +## Re-confirmed matches (read in full, no issues found) + +Every one of the following was read in full this session (not sampled) and +found to match the blueprint's stated hypotheses, conclusions and edge cases +exactly, including sign conventions, vacuous/empty cases, and every +self-disclosed caveat in the blueprint's own prose: + +- `def:spacetime` (`Basic.lean`): the `Spacetime` structure's seven fields + (topology/Hausdorff/connected/charted-space/model/manifold instance, + tangent finite-dimensionality, `val`+`symm`+`nondegenerate`+`lorentzian`+ + `contMDiff`) match the blueprint's bundle-section formulation verbatim, + including the deliberate non-instantiation of Mathlib's + `ContMDiffRiemannianMetric` class and the `∞` vs `⊤` regularity-index + distinction. +- `def:standard-minkowski-spacetime`, `def:minkowski-spacetime`, + `def:alexandrov-topology` (`Minkowski.lean`, `Causality.lean`): exact match, + including the full derivation (not an assumed characterisation) that + `chronologicalFuture`/`chronologicalPast` on standard Minkowski coincide + with the coordinate forward/backward cones, correctly extended from a + single trip segment to a general (`Relation.TransGen`) trip via + `minkowskiCone_add`. +- `def:timelike-spacelike-null-vectors`, `lmm:causal-classification`, + `def:time-orientable`, `def:future-and-past-pointing-vectors`, + `lmm:pointing-orientation` (`CausalStructure.lean`): exact match, including + the `c ≠ 0` vs. `c > 0` distinction between causal-type and orientation + invariance. +- `lmm:reverse-cauchy-schwarz` (`LorentzCauchySchwarz.lean`), + `lmm:timelike-cone-convexity` (`LorentzCone.lean`), + `lmm:cone-sign-lemma`/`lmm:spacelike-complement-definite`/ + `lmm:future-cone-convexity` (`LorentzOrthogonal.lean`, 508 lines): exact + match at the level of individual inequalities and hypotheses, including the + blueprint's own modelling note that the "aligned" hypothesis `g(v,w) ≤ 0` is + taken as an explicit hypothesis rather than derived, since deriving it needs + positive-definiteness of the spacelike complement not available from the + pointwise `LorentzianAt` data alone. +- `def:paths`, `def:curves`, `def:timelike-and-causal-smooth-curves`, + `def:future-and-past-oriented-smooth-curves`, + `thrm:smooth-curve-causal-well-defined`, `def:oriented-smooth-curve`, + `thrm:oriented-curve-well-defined`, `thrm:oriented-curve-projection`, + `lmm:extremal-parameter-mem-frontier`, + `lmm:endpoint-parameter-space-eq-Icc` (`Curves.lean`, 1030 lines, read in + full): exact match apart from the two carried-forward findings above. +- `def:trip`, `def:causal-trip` and the `IsGeodesic := True` placeholder + (`Causality.lean:75-153`): matches the blueprint's own "Remark (geodesic + placeholder in the formalization)" (`spacetime.tex:327`) verbatim, including + the 57 "Formalization note" paragraphs recurring at every downstream node + that rests on `≪`/`≺` — every one of these 57 sites checked to be present. + Per task instructions, not re-reported as a new finding. +- `thrm:precedence-transitive`, `def:no-closed-causal-curve`, + `thrm:causal-order-refinements`, + `def:chronological-future-and-chronological-past`, + `def:causal-future-and-causal-past`, `lmm:chronological-implies-causal`, + `lmm:future-past-monotone`, `def:causal-diamond`, + `lmm:causal-diamond-structure`, `thrm:causal-diamond-vs-chronological`, + `def:spacelike-related`, `def:completely-spacelike`, + `lmm:completely-spacelike-symm/structural`, `lmm:alexandrov-basis-open`, + `lmm:chronological-future-past-open`, + `lmm:alexandrov-nbhd-univ-of-no-diamond`, + `lmm:alexandrov-covering-hausdorff`, `def:causally-convex-region`, + `lmm:causal-diamond-causally-convex`, `thrm:causally-complete-convex`, + `lmm:causally-convex-closure-ops`, `def:causal-convex-hull`, + `lmm:causal-convex-hull-extensive`, `thrm:causal-convex-hull-closure` + (`Causality.lean`, 712 lines, read in full): exact match, including every + vacuous base case (`univ`/`∅`) and the exact Alexandrov-basis + characterisation of the diamonds. +- `def:spacelike-complement`, `lmm:spacelike-complement-order`, + `def:causal-closure`, `lmm:causal-closure-is-closure-operator`, + `def:causally-complete-region`, `thrm:causally-complete-lattice`, + `lmm:spacelike-complement-de-morgan`, `thrm:causal-complement-de-morgan` + (`CausalComplement.lean`, 466 lines, read in full): exact match, including + the self-disclosed failure of the full orthocomplement law + (`spacetime.tex:644`) and the anonymous `CompleteLattice` instance called + out by name in the blueprint prose. +- `def:lorentzian-spacetime`, `lmm:lorentzian-causal-lifts`, + `lmm:alexandrov-nbhd-univ-of-no-diamond` consequence, + `thrm:alexandrov-topological-basis` (`LorentzianSpacetime.lean`): exact + match including the `[Nontrivial M.Carrier]` instance matching "at least + two points" and the explicit downward-directedness hypothesis matching the + blueprint's own flagging that it is "not implied by Hausdorffness alone". +- `lmm:minkowski-past-between`/`-future-between`, + `lmm:minkowski-diamonds-downward-directed`, + `lmm:minkowski-exists-common-past`/`-future`, + `lmm:minkowski-diamonds-upward-directed`, + `thrm:minkowski-alexandrov-basis` (`MinkowskiDirected.lean`, read in full): + exact match. +- `lmm:minkowski-dilation-cone`, `thrm:minkowski-dilation-causal-automorphism`, + `thrm:minkowski-dilation-not-isometry` (`MinkowskiDilation.lean`): exact + match, including the concrete witness vector `e₀` for non-isometry. +- `lmm:isometry-preserves-classification`, the `Isometry` structure/`Group`/ + faithful `MulAction` instances (`Isometry.lean`); the topological-group + construction and identity-component subgroup (`IsometryTopology.lean`, not + itself `\lean`-cited but load-bearing infrastructure for Axiom 5): exact + match to the module's own stated modelling notes. +- `lmm:pushforward-path`, `lmm:isometry-preserves-chronology`, + `lmm:isometry-preserves-basis-sets`, `lmm:axiom5-basis-preservation` + (`IsometryCausality.lean`, `IdentityComponent.lean`): exact match, including + the `PreservesFutureOrientation`/`futureOrientationPreserving`/ + `orientedIdentityComponent` chain that discharges Axiom 5's basis-set + preservation as a theorem rather than an unprovable consequence of the bare + topology. +- `lmm:mfderiv-diffeo-linear-equiv` through `lmm:mfderiv-inverse-eq-symm` + (`Diffeo.lean`): exact match, including the deliberately-flagged distinction + between the `ContinuousLinearEquiv.symm` and the genuine + `mfderiv ψ.symm`/global-inverse differential (the module docstring's own + warning that these are *not* definitionally equal, and the two separate + round-trip-cancellation lemmas this forces). +- `def:pullback-metric` through `lmm:pullback-preserves-future-orientation` + (`Pullback.lean`, 624 lines, read in full against ~20 blueprint nodes): + every formula, sign and cancellation identity matches, including the + historical-label note on `lmm:pullback-metric-smooth-in-charts` + (`spacetime.tex:1452`, self-disclosed by the blueprint) and the + `ContinuousLinearMap.inverse` vs. `mfderiv ψ.symm` distinction being spent + in exactly the lemmas the blueprint predicts. +- `def:cross-metric-isometry` through `thrm:pullback-is-lorentzian-spacetime` + (`CrossMetricIsometry.lean`, 537 lines, read in full): exact match, + including the file's own disclosed, harmless generalisation from the + blueprint's single-manifold `Diffeo M M` to two spacetimes `Diffeo M N` + (recovered as `N := M`). + +## Blueprint-math issues + +None found beyond what the blueprint itself already discloses (the failure +of the full orthocomplement law, the historical mislabeling of +`lmm:pullback-metric-smooth-in-charts`, and the `IsGeodesic` placeholder). No +new mathematical error, missing hypothesis, or incorrect `\uses{}` edge was +found in this pass; every `\uses{}` edge I checked while reading correctly +lists its logical prerequisites. + +## Summary counts + +- Blueprint nodes in scope: ~140 (every `\begin{definition/lemma/theorem}` in + `spacetime.tex`), all read and compared statement-by-statement. +- `\lean{}` identifiers checked: 294, all resolve (cross-checked against + `blueprint/lean_decls`, a tool-generated artifact, not just by reading). +- `\leanok` honesty: every `\leanok`-marked proof corresponds to a Lean proof + with no `sorry`/`admit`/`native_decide` and only the three standard axioms + (confirmed on 16 representative theorems via `lake env lean` + + `#print axioms`, and by an exhaustive `grep` across all 19 files for zero + `sorry`/`admit` hits). +- Classification: 0 High/Critical; 1 Medium (carried forward, unresolved: + `IsPastEndpoint`/`IsFutureEndpoint` typed `SmoothPath` against the + blueprint's explicit general-`Path` wording); 3 Low (2 carried forward — + missing `Curve`-level endpoint predicate, asymmetric `PathEquiv` vs. + `SmoothPathEquiv` strictness; 1 new — stale whole-project + `verify-receipt.json`). +- ~130 nodes re-confirmed as exact matches this session (full re-read, not + relying on prior memos), spanning every subsection of §10.4. +- Verified with a tool: `blueprint/lean_decls` cross-check (294/294 resolve); + `lake env lean` + `#print axioms` on 16 theorems (all axiom-clean); `grep` + for `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`/`nolint`/ + `Restriction:` (one justified `nolint`, one documented `Restriction:`, zero + of the others); `lean_guard.py check --base HEAD` (no protected §10.4 file + changed this session); presence/staleness of `verify-receipt.json` and + absence of `approvals.json`. +- Judged by reading only: all ~140 statement-faithfulness comparisons; the + mathematical correctness of each blueprint proof sketch against its cited + `\uses{}` lemmas. + +## Files referenced + +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/src/sections/sec10/spacetime.tex` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Basic.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalStructure.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Curves.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Causality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalComplement.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzianSpacetime.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Minkowski.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/MinkowskiDirected.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/MinkowskiDilation.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzCauchySchwarz.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzCone.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzOrthogonal.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Diffeo.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Isometry.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/IsometryCausality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/IsometryTopology.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Pullback.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CrossMetricIsometry.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/AQFT/HaagKastlerCurved/IdentityComponent.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/lean_decls` +- `/Users/kdavis/Code/physicslib/physicslib4/.git/lean-kit/verify-receipt.json` +- `/Users/kdavis/Code/physicslib/physicslib4/.lake/.build-errors.json` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-sec10.4.md` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-25-sec10.4.md` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-26-sec10.4.md` diff --git a/notes/agents/review-2026-09-29-sec10.6.md b/notes/agents/review-2026-09-29-sec10.6.md new file mode 100644 index 0000000..e08762b --- /dev/null +++ b/notes/agents/review-2026-09-29-sec10.6.md @@ -0,0 +1,262 @@ +# Audit: blueprint §10.6 "Haag-Kastler Axioms in Curved Spacetime" (fresh review) + +Date: 2026-09-29 +Reviewer: audit subagent (read-only) +Scope: `blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex` +(all nodes) and the Lean it cites: `Physicslib4/AQFT/HaagKastlerCurved/{Spacetime, +LocalAlgebras, Isotony, LocalCommutativity, LocalAlgebra, IsometricCovariance, Net, +EinsteinCausality, LocalVonNeumann, Concrete, GeometricCovariance, IdentityComponent, +Purity, CovariantState, StabilizerAction, StabilizerKMS}.lean`. +`GeneralCovariance.lean` is excluded per instructions (belongs to §10.7). + +This is a fresh, complete review of the whole file, not a rebuild from prior memos. +`notes/agents/review-2026-09-sec10.6.md` and `review-2026-09-25-sec10.6.md` were +read only afterwards, to mark which findings are new vs. already reported/fixed +(see "Status of prior findings" below). + +Read-only review. No `.lean`/`.tex` files were modified; no commits made. + +## Method + +Tool-verified: +- Read the full blueprint file (696 lines) and every Lean file in scope end to end. +- Extracted all 66 `\lean{...}` names from the tex and checked them against + `blueprint/lean_decls` (the generated declaration list): 65/66 present; the 66th + (`...HaagKastlerNet.lieConj_image_localVonNeumann_identityComponent`) is not in + that stale cache but was confirmed to exist by direct source read + (`IdentityComponent.lean:177-193`) and by `lake env lean` (see below) — see + Finding F-3. +- `lake env lean` on a standalone file outside the repo tree (`/tmp/leanaudit/check_sec10_6.lean`) + importing `Net`, `EinsteinCausality`, `LocalVonNeumann`, `GeometricCovariance`, + `StabilizerAction`, `StabilizerKMS`, `IdentityComponent` and running `#print axioms` + on 8 representative theorems spanning the chapter (`einstein_causality`, + `localVonNeumann_subset_centralizer`, `localVonNeumann_mono`, + `lieConj_image_localVonNeumann`, `exists_gns_unitary_stabilizer`, + `IsKMSStateForFlow.exists_gns_unitary_strongContinuous`, + `lieConj_image_localVonNeumann_identityComponent`, `nonempty_haagKastlerNet`): + all report exactly `[propext, Classical.choice, Quot.sound]`. +- `grep` for `sorry`, `admit`, `native_decide`, `debug.skipKernelTC`, + `implemented_by`, `nolint` across every file in scope (excluding + `GeneralCovariance.lean`): zero hits. +- `grep` for the policy's restriction marker `Restriction:`: exactly one hit in + scope, `StabilizerKMS.lean:147` (`IsGroundStateForFlow`), correctly worded and + consistent with the sibling marker in `Physicslib4/AQFT/PositiveEnergy.lean`. +- Read `.git/lean-kit/verify-receipt.json` (`lake build` + `lake lint`, both exit + 0, timestamped `2026-09-18T14:08:28Z`) and compared against `git log` for the + files in scope: `git log --format='%h %ad %s' -- Physicslib4/AQFT/HaagKastlerCurved/ + blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex` shows four + commits post-dating the receipt (`224e76b`, `6ff85aa`, `bc0d8c5`, `15b3ce6`, all + 2026-09-25/26). `.git/lean-kit/approvals.json` does not exist — no approvals in + effect (confirmed by `ls .git/lean-kit/`, since the `lean_guard.py approve --list` + invocation is blocked for the auditor role by design). +- `stat`/`git log` on `blueprint/lean_decls` vs. `IdentityComponent.lean` and the + commit that added the missing declaration, to establish that the mismatch found + above is a stale cache, not a genuine dangling `\lean{}` link (Finding F-3). +- `grep -rn` for `IsWeaklyContinuousAction` and `IsIsotonyCoherentBelow`/ + `isIsotonyCoherentBelow` across `Physicslib4/` and `blueprint/src/`: each name + occurs only in its own defining file (plus its own docstring), confirming they + are unused/unreferenced elsewhere (Finding F-2). + +Judged by reading: the full statement-by-statement comparison of all 28 blueprint +nodes in scope against their Lean declarations; the diagnosis in Finding F-1 that +`IsometricCovariance`'s clause (3) hypotheses are mathematically forced by the +abstract interface (not an arbitrary narrowing) but undocumented at their point of +introduction; severity assignment for all findings. + +## Statement audit + +All 28 `\lean{}`-tagged blueprint nodes in this file (Axioms 1-5 and their +supporting definition `def:local-observable`, the bundled `HaagKastlerNet`, +Einstein causality, the local-von-Neumann-algebra family — definition, bundled +form, microcausality, isotony, statistical independence (raw and bundled), +additive-free locality, geometric covariance and its factor/iso corollaries, +relative commutants and irreducible inclusions, abelian/center-duality facts, +purity (extreme-point, irreducible-GNS, factor-generating, dichotomy, GNS +covariance), covariant state families, the stabilizer action and its GNS unitary +(plain and strongly continuous, bundled and unbundled, irreducible-covariant +corollary, purity invariance, GNS covariance), and the Killing-flow KMS/ground-state +family) classify as **match**: the Lean hypotheses and conclusions correspond to +the blueprint prose element-for-element, including the vacuous-case handling that +the blueprint prose calls out explicitly (`LocalCommutativity`'s "if no such `B` +exists, no constraint is imposed" — `LocalCommutativity.lean:62-63` reads +identically) and the explicit-hypothesis pattern the blueprint calls out for +`thrm:von-neumann-geometric-covariance-in-curved-spacetime` ("the abstract +`LorentzianSpacetime` interface does not supply basis-set preservation ... so it +enters as an explicit hypothesis" — matches `GeometricCovariance.lean`'s `hgB₁` +hypotheses verbatim, and its identity-component discharge now exists, +`IdentityComponent.lean:177-193`, closing the gap flagged by the 2026-09-25 review's +finding N-1). + +One subtlety, not a reclassification but worth recording precisely (see Finding +F-1 below): `def:isometric-covariance-in-curved-spacetime` (Axiom 5) has the same +"abstract interface doesn't guarantee basis-set preservation" property as the +downstream geometric-covariance theorem, but — unlike that downstream theorem — +neither the blueprint prose for Axiom 5 nor the Lean docstring for +`IsometricCovariance` discloses it. + +## Findings + +### Medium + +**F-1. Axiom 5's coherence-with-isotony clause carries two undocumented +well-formedness hypotheses, plus one fully redundant hypothesis, none of which +appear in the blueprint prose or the declaration's own docstring.** + +- `haag-kastler-axioms-in-curved-spacetime.tex:93-126` + (`def:isometric-covariance-in-curved-spacetime`, Axiom 5) states condition (3) + as: "for Alexandrov topology basis elements `Bι ⊆ Bκ` and the unital + `*`-monomorphism `i` of Axiom 2, `α_φ` commutes with `i`" — with no further + qualification. +- `Physicslib4/AQFT/HaagKastlerCurved/IsometricCovariance.lean:94-102`: + ``` + ∀ (φ : M.Isom) ⦃B₁ B₂ : Set M.Carrier⦄ + (hB₁ : M.IsBasisSet B₁) (hB₂ : M.IsBasisSet B₂) + (h : B₁ ⊆ B₂) + (hφB₁ : M.IsBasisSet (φ • B₁)) + (hφB₂ : M.IsBasisSet (φ • B₂)) + (hφ : (φ • B₁ : Set _) ⊆ φ • B₂) + (a : U.algebra B₁), + (α φ B₂ ...) (i.map hB₁ hB₂ h a) = i.map hφB₁ hφB₂ hφ ((α φ B₁ ...) a) + ``` + carries three hypotheses (`hφB₁`, `hφB₂`, `hφ`) that are absent from both the + blueprint prose and the declaration's own docstring + (`IsometricCovariance.lean:55-77`, which restates condition (3) as "for every + `φ` and inclusion `B₁ ⊆ B₂`, `α φ B₂ ∘ i.map = i.map ∘ α φ B₁`" with no + mention of them). +- `hφB₁`/`hφB₂` are not cosmetic: `Isotony.map` (Axiom 2) is only defined given + proofs that both endpoints are basis sets + (`Isotony.lean:58-60`), so the right-hand side `i.map hφB₁ hφB₂ hφ` does not + even typecheck without them. This is exactly the caveat the blueprint *does* + disclose for the downstream theorem `thrm:von-neumann-geometric-covariance-in-curved-spacetime` + (`tex:281`: "the abstract `LorentzianSpacetime` interface does not supply + basis-set preservation ... so it enters as an explicit hypothesis") — but that + disclosure is written only at the point the caveat resurfaces, not at Axiom 5 + itself, where it originates. Consequence: for any `LorentzianSpacetime` + instance in which `IsBasisSet` is not preserved by some isometry `φ`, clause + (3) of Axiom 5 is *vacuously* satisfied for that `φ`, `B₁`, `B₂` — a real + restriction on what "isometric covariance" forces, on the abstract interface, + that is not recorded anywhere per the project's `Restriction:` convention. + (The trivial witness net, `trivialLocalNet_isometricCovariance`, + `Net.lean:353-358`, happens to prove clause (3) genuinely rather than by this + vacuity, so satisfiability is not itself in question — this is about what the + axiom fails to force on *other* instances of the interface.) +- `hφ : (φ • B₁ : Set _) ⊆ φ • B₂` is, separately, fully redundant: it follows + from `h : B₁ ⊆ B₂` alone via `Set.smul_set_mono h` (true for the image of any + function, not just a group action), yet is threaded as an explicit hypothesis + in the foundational Axiom 5 definition itself. This is the same pattern the + 2026-09-25 review flagged as Finding N-2 in `GeometricCovariance.lean`'s + *derived corollaries* (since fixed there — the current `GeometricCovariance.lean` + derives this inclusion internally via `smul_subset_of_mem_stabilizer` rather + than asking for it); it has not been cleaned up at its original occurrence in + `IsometricCovariance.lean`, which is the more consequential site since every + downstream axiom-5 consumer inherits it. +- *Suggested fix (report only, per role)*: add a `**Restriction:**` docstring + line to `IsometricCovariance` naming the basis-set-preservation gap and noting + it is closed for concrete spacetimes by + `toAbstractIdentityComponent_isBasisSet_smul` (`IdentityComponent.lean:103-110`); + and/or drop the redundant `hφ` and derive it internally with one `have` (as + `GeometricCovariance.lean` now does), the same fix already applied downstream. + +### Low + +**F-2. Two definitions in scope are unreferenced by the blueprint and unused +elsewhere in the codebase, kept only for exposition (Mathlib-duplication/dead-code +check, item 7).** + +- `IsWeaklyContinuousAction` (`CovariantState.lean:109-119`): no `\lean{}` tag in + the tex cites it, and it is not used by any other declaration in the repository + (only its own docstring mentions its name). +- `IsIsotonyCoherentBelow` / `isIsotonyCoherentBelow` (`LocalVonNeumann.lean:214-227`): + likewise uncited and unused; the docstring is self-aware about this ("The + definition is retained as a name for the condition" — i.e. Axiom 2's + composition law made the ad hoc per-site hypothesis this named unnecessary + everywhere, and the declaration is kept purely as a historical/expository + marker). Not a faithfulness problem, just literal dead code. + +### Process (not a statement-audit finding) + +**F-3. `blueprint/lean_decls` is stale by one commit relative to the tree under +review; not a genuine dangling link.** + +`blueprint/lean_decls` (last regenerated 2026-09-25 17:22:57, per `stat`) does not +list `Physicslib4.AQFT.HaagKastlerCurved.HaagKastlerNet.lieConj_image_localVonNeumann_identityComponent`, +which the blueprint's `\lean{}` tag on +`thrm:von-neumann-geometric-covariance-in-curved-spacetime` (`tex:275`) cites. +That declaration was added by commit `15b3ce6` ("Fix second-round chapter 10 +review findings", 2026-09-26 05:22:03), i.e. after the cache was last generated. +I independently confirmed the declaration exists, is well-typed, and is +axiom-clean by reading `IdentityComponent.lean:177-193` and via `lake env lean` ++ `#print axioms` (Method, above) — so this is a stale generated artifact, not a +missing/incorrect Lean declaration. Per CLAUDE.md's build recipe ("Blueprint link +check: `leanblueprint checkdecls`, after a successful build"), that check should +be rerun to refresh the cache before the next release of the rendered blueprint. + +**F-4. The verify-receipt predates four commits touching this section's scope; +no approvals are recorded.** + +`.git/lean-kit/verify-receipt.json` records `lake build` + `lake lint` both +exiting 0 at `2026-09-18T14:08:28Z`. Commits `224e76b`, `6ff85aa`, `bc0d8c5`, +`15b3ce6` (2026-09-25/26) touch files in this audit's scope and post-date that +receipt. `.git/lean-kit/approvals.json` does not exist, so there is nothing to +review there. I was not asked to run the full `verify_commands` for this task and +did not do so (it is a ~3000-job build); the 8-theorem `#print axioms` sample +above succeeded and was axiom-clean, so the tree is not obviously broken, but the +recorded receipt does not currently vouch for the post-2026-09-18 state of this +chapter. *Suggested action*: rerun `python3 ~/.claude/lean-kit/lean_guard.py verify` +(or the project's `verify_commands`) and refresh the receipt. + +## Status of prior findings (for continuity, not relied on for this round's conclusions) + +Both `notes/agents/review-2026-09-sec10.6.md` (H-1, M-1, M-2, L-1) and +`notes/agents/review-2026-09-25-sec10.6.md` (N-1, N-2, N-3, N-4) are **fixed** as +of the current tree — verified by rereading every line each memo cited: +- H-1 (private isotony family inside old `IsometricCovariance`): fixed — + `IsometricCovariance` takes `i : Isotony U` as a parameter + (`IsometricCovariance.lean:78`). +- M-1 (missing `Restriction:` on the bounded-generator scaffold): fixed — + present at `StabilizerKMS.lean:147` and `PositiveEnergy.lean`. +- M-2 / N-3 (stale `LocalCommutativity` declaration docstring): fixed — the + current docstring (`LocalCommutativity.lean:55-65`) says "with Axiom 2 isotony + family `i`... whose images... commute pointwise," no longer the old + existential "there is a coherent family" phrasing. +- L-1 (full-group vs. identity-component bridge for Axiom 5's general-covariance + consumer): fixed — cross-referenced in `Concrete.lean:48-51`. +- N-1 (`GeometricCovariance.lean`'s basis-set-preservation hypothesis never + discharged for a concrete/identity-component net): fixed — + `lieConj_image_localVonNeumann_identityComponent` now exists + (`IdentityComponent.lean:177-193`) and is cited in the blueprint's `\lean{}` + tag (`tex:275`). +- N-2 (redundant `h₁' : (g:M.Isom) • B₁ ⊆ B` hypothesis threaded through all six + `GeometricCovariance.lean` declarations): fixed — the current file derives this + internally via `smul_subset_of_mem_stabilizer` (`GeometricCovariance.lean:48-50`) + rather than taking it as an argument. (The *same class* of redundancy recurs + one level up, in `IsometricCovariance.lean` itself — see Finding F-1 above, + which is new this round, not a reopening of N-2.) +- N-4 (stray-backtick typo, "`Classical.choose`n"): fixed — + `Net.lean:159` now reads "chosen (`Classical.choose`) from the Axiom 3 + existence witness." + +## Summary counts + +- Statement-audit nodes: 28 match-groups, 0 non-matches, 0 can't-determine. +- Findings this round: 0 High, 1 Medium (F-1), 2 Low (F-2), plus 2 process + findings (F-3, F-4). +- `\lean{}` link integrity: 66/66 resolve to real declarations; 65/66 present in + the (stale) `blueprint/lean_decls` cache, 1/66 confirmed by direct source read + and compilation (F-3). +- Lean hygiene: no `sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/ + `implemented_by`/`nolint` anywhere in scope; the one `Restriction:` marker in + scope is present and correctly worded; `#print axioms` clean on 8 sampled + theorems spanning the whole chapter. +- Tool-verified: full-file reads of the blueprint tex and all 16 Lean files in + scope; `\lean{}`-name resolution against `blueprint/lean_decls`; `lake env lean` + + `#print axioms` on 8 theorems via a temp file outside the repo tree; greps + for sorry/admit/nolint/native_decide/implemented_by/Restriction/dead-code names; + `git log`/`stat` timestamp comparison for the stale-cache and stale-receipt + findings; absence of `.git/lean-kit/approvals.json`. +- Judged by reading: the full statement-by-statement blueprint-vs-Lean comparison + for all 28 nodes; the diagnosis in F-1 that `hφB₁`/`hφB₂` are mathematically + forced (not an arbitrary narrowing) while still being an undocumented + restriction at their point of origin; the dead-code characterization in F-2; + confirmation that all eight prior findings from the last two audits of this + section are genuinely fixed rather than superficially reworded. diff --git a/notes/agents/review-2026-09-sec10.1-10.7.md b/notes/agents/review-2026-09-sec10.1-10.7.md new file mode 100644 index 0000000..d3a4ad4 --- /dev/null +++ b/notes/agents/review-2026-09-sec10.1-10.7.md @@ -0,0 +1,201 @@ +# Review: Blueprint §10.1 (GNS Construction Details) and §10.7 (General Covariance) + +Scope: `blueprint/src/sections/sec10/gns-construction-details.tex`, +`blueprint/src/sections/sec10/general-covariance-in-curved-spacetime.tex`, and the Lean +they cite: `Physicslib4/GNS/{Basic,Construction,NullSpace,CauchySchwarz}.lean`, +`Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean`, plus their direct +dependencies (`Physicslib4/AQFT/HaagKastlerCurved/{Net,Isotony,LocalCommutativity, +LocalAlgebra,LocalAlgebras,IsometricCovariance,Concrete}.lean`, +`Physicslib4/Spacetime/{LorentzianSpacetime,CrossMetricIsometry,Curves,Causality}.lean` +and the "Pullback metrics and cross-metric isometries" subsection of +`blueprint/src/sections/sec10/spacetime.tex`). + +Read-only review. No `.lean`/`.tex` files were modified. + +## Method + +- Read both blueprint sections in full and cross-referenced every `\lean{...}` / + `\leanfile{...}` tag against the cited declaration. +- Read `Physicslib4/GNS/Basic.lean`, `Construction.lean`, `NullSpace.lean`, + `CauchySchwarz.lean`, and `Physicslib4/AQFT/HaagKastlerCurved/GeneralCovariance.lean` + in full. +- Read the supporting chain in `Physicslib4/AQFT/HaagKastlerCurved/Net.lean`, + `Isotony.lean`, and the "Pullback metrics and cross-metric isometries" part of + `blueprint/src/sections/sec10/spacetime.tex` (defs/lemmas actually `\uses{}`'d by + the in-scope theorem `def:general-covariance-in-curved-spacetime`). +- Verified via tool: `lake env lean` on a scratch file at `/tmp/axcheck.lean` running + `#print axioms` on `gns_construction`, `gns_unique`, `lmm1`, `lmm2`, + `cauchy_schwarz_inequality`, and `toAbstract_pullback_isBasisSet` — all report only + `[propext, Classical.choice, Quot.sound]`. This also confirms the files compile + against the current tree (no stale `.olean`). +- Verified via tool: `grep` for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by`, `nolint`, `Restriction:` across the scoped + files. +- Verified via tool: cross-checked every `\lean{...}` name in scope against + `blueprint/lean_decls` (all present) and against `git log`/`lean_guard.py check` + for changes since the last `verify-receipt`. +- Everything else (the blueprint proof sketches, the informal-to-Lean translation + judgments, `\uses{}` accuracy) was judged by reading. + +## Summary of classifications (statement audit) + +| Blueprint node | Lean | Classification | +|---|---|---| +| `def:state` | `GNS.State`, `GNS.State.IsFaithful` | match | +| `def:cyclic-vector` | `GNS.IsCyclicVector` | match | +| `thrm:gns-construction-theorem` | `GNS.gns_construction` (+ `GNS.gns_unique`, uncited) | **match, with a tagging gap** (see Major 1) | +| `lmm:cauchy-schwarz-inequality` | `GNS.cauchy_schwarz_inequality`, `GNS.omega_star_swap_conj` | match (deliberately weaker hypotheses than `State`, exactly as the blueprint's own lemma statement requires) | +| `lmm:lmm1` | `GNS.lmm1` | match | +| `lmm:lmm2` | `GNS.lmm2` | match | +| `def:net-equivalence-in-curved-spacetime` | `HaagKastlerCurved.NetEquivalence` | match | +| `def:general-covariance-in-curved-spacetime` | `HaagKastlerCurved.NetTheory`, `IsGenerallyCovariant`, `LorentzianSpacetime.pullbackCarrierEquiv(_apply)`, `toAbstract_pullback_isBasisSet` | match | + +No "Lean assumes more", "Lean concludes less", "different objects", or "edge cases +differ" items were found among the directly-tagged declarations in these two +sections. Every `\lean{}` name resolves to a real declaration with `\leanok` honestly +reflecting no `sorry` and clean axioms. + +## Critical (false/unfaithful statements) + +None found. + +## Major + +**1. `thrm:gns-construction-theorem`'s `\lean{}` tag omits `gns_unique`, the +declaration that actually proves the clause the blueprint text asserts.** + +`blueprint/src/sections/sec10/gns-construction-details.tex:42-54`: +``` +\lean{Physicslib4.GNS.gns_construction} +... +Furthermore, if $\omega$ is a faithful state, then the *-representation $\pi_\omega$ +is faithful. In addition the GNS triple associated to $(\mathfrak{U}, \omega)$ is +unique up to unitary equivalence. +``` +The uniqueness-up-to-unitary-equivalence clause is stated as part of "The GNS +Construction Theorem" in the blueprint's prose (and the proof node's `\uses{}` +list and body walk through a full "Uniqueness up to Unitary Equivalence" section). +In Lean this clause is proved separately, as `Physicslib4.GNS.gns_unique` +(`Physicslib4/GNS/Construction.lean:183-270`), a deliberate design choice explained +in that file's module docstring ("expressing the uniqueness clause as a conjunct +... is awkward"). That's a reasonable Lean-side decision, but the blueprint's +`\lean{}` tag for `thrm:gns-construction-theorem` cites only `gns_construction`, so +mechanical tools that resolve "what Lean backs this blueprint node" (including +`blueprint/lean_decls`, which lists `gns_construction` but not `gns_unique`) will +report the theorem as fully backed by a declaration that does *not* contain the +uniqueness clause the blueprint text claims. The mathematical content is present +and correctly proved (verified: `gns_unique` compiles, axioms clean); this is a +documentation/traceability gap, not an unsound proof. + +*Suggested fix*: add `Physicslib4.GNS.gns_unique` to the `\lean{}` list of +`thrm:gns-construction-theorem` (or split the blueprint statement into two theorem +environments, one for existence+faithfulness and one for uniqueness, each with its +own accurate `\lean{}` tag). + +**2. The blueprint's own "geodesic placeholder" restriction (used throughout +the causal-precedence chain feeding `\uses{}` of `def:general-covariance-in-curved-spacetime`) +is documented in prose but not marked with the project's `Restriction:` convention, +so an automated restriction sweep (grep for `Restriction:`) would miss it.** + +`blueprint/src/sections/sec10/spacetime.tex:328` carries an explicit, well-written +remark: +``` +\textbf{Remark (geodesic placeholder in the formalization).} ... the predicate +\texttt{Physicslib4.Spacetime.IsGeodesic} is defined to be \texttt{True}, so it +imposes no constraint. ... This is the one place where \ref{def:trip} and +\ref{def:causal-trip} diverge from their Lean implementations... +``` +The corresponding Lean, `Physicslib4/Spacetime/Causality.lean:66-74`: +```lean +/-- +A *geodesic* of a spacetime, as needed by section 10.4 of the blueprint. + +Mathlib v4.31.0-rc1 does not provide a Lorentzian / pseudo-Riemannian +geodesic. We provide an opaque placeholder predicate. Downstream work +should replace this by the genuine geodesic condition... +-/ +@[nolint unusedArguments] +def IsGeodesic (_μ : M.SmoothPath) : Prop := True +``` +explains the restriction clearly, but the docstring never uses the literal marker +`**Restriction:**` that `CLAUDE.md` specifies ("Record a deliberate restriction in +the docstring of the declaration, on a line starting `**Restriction:**`"). Per +`.claude/lean-policy.json`, `restriction_marker` is `"Restriction:"`, and this audit's +own §3 procedure is to grep for exactly that marker — which finds nothing here. +`def:trip`/`def:causal-trip` (and hence chronological/causal precedence, the +Alexandrov basis, and everything `def:general-covariance-in-curved-spacetime` +`\uses{}` transitively through `def:lorentzian-spacetime` and the cross-metric +isometry chain) rest on this weakened notion. + +Note on mathematical direction: this is *not* obviously narrowing in the direction +one might first assume. Standard Lorentzian geometry defines chronological +precedence via arbitrary future-directed timelike curves, not curves required to be +piecewise geodesic, so `IsGeodesic := True` likely makes the Lean `≪`/`≺` relations +coincide with the standard textbook notion rather than the blueprint's own (stricter, +geodesic-requiring) `def:trip`. Whether this is a widening or narrowing of any given +downstream theorem therefore needs a case-by-case check; it is flagged here because +it currently isn't discoverable by the marker convention the project relies on. + +*Suggested fix*: add a line starting `**Restriction:**` to the `IsGeodesic` docstring +(e.g. "**Restriction:** `IsGeodesic` is `True` until a Lorentzian Levi-Civita +connection is available in Mathlib; the intended condition is auto-parallelism of the +tangent field along the curve.") so the marker-based sweep in future audits finds it. + +## Minor + +**3. Stale project-wide `verify-receipt.json`, though not for the audited files.** +`.git/lean-kit/verify-receipt.json` records a successful `lake build` + `lake lint` +at `2026-09-18T14:08:28+00:00`, but `HEAD` (`11768f7`, 2026-09-24) is 9 commits ahead. +`git log --since= -- Physicslib4/GNS Physicslib4/AQFT/HaagKastlerCurved +Physicslib4/Spacetime blueprint/src/sections/sec10` shows none of those 9 commits +touch the files in this review's scope (they are all in +`blueprint/src/sections/sec10/unbounded-spectral-theorems.tex` and +`Physicslib4/Spectral/Unbounded/*`), and I independently recompiled the scoped +declarations with `lake env lean` just now with clean results, so this is a +process/bookkeeping note rather than a soundness concern for §10.1/§10.7. No +`.git/lean-kit/approvals.json` exists, so no outstanding approvals need review. + +**4. `nolint` usage in the dependency chain is justified.** +`Physicslib4/Spacetime/Causality.lean:75`: `@[nolint unusedArguments]` on +`IsGeodesic (_μ : M.SmoothPath) : Prop := True` — the unused argument is exactly the +placeholder pattern described in Finding 2 above; the docstring explains why the +argument is present but unused. Justified, no action needed beyond Finding 2. + +## Lean quality (§4) notes + +- `Physicslib4/GNS/Construction.lean` and `Physicslib4/GNS/NullSpace.lean` each + independently define a private `State.toPositiveLinearMap` with identical bodies + (`Construction.lean:54-71`, `NullSpace.lean:61-77`). Harmless (both `private`, + scoped to their own file) but a minor duplication that a shared internal helper + could remove. +- No one-conclusion-per-declaration violations, no duplicated-hypothesis issues, and + no misleading docstrings were found in the six directly-scoped files. + +## Integrity checklist + +- Axioms: `gns_construction`, `gns_unique`, `lmm1`, `lmm2`, + `cauchy_schwarz_inequality`, `LorentzianSpacetime.toAbstract_pullback_isBasisSet` — + all `[propext, Classical.choice, Quot.sound]` only. Verified with `lake env lean`. +- `sorry` / `admit` / `native_decide` / `debug.skipKernelTC` / `implemented_by`: none + in the scoped files or their direct dependency chain (grep-verified). (Elsewhere in + the repo, out of scope: `Physicslib4/AQFT/HaagKastler/StrongDensity.lean:57` carries + a properly marked `**Restriction:** the proof is left as sorry` — Minkowski chapter + 9 material, not part of this review's scope, noted only for completeness.) +- `nolint`: one use in the dependency chain (`Causality.lean:75`), justified — see + Finding 4. +- `verify_commands` (`lake build`, `lake lint`) last recorded success predates HEAD by + 9 commits, none touching this review's scope — see Finding 3. +- Approvals: none in effect (`.git/lean-kit/approvals.json` absent). + +## Blueprint soundness (§3) + +The informal proofs in both sections are careful and internally consistent; I did not +find gaps or hidden assumptions in the GNS construction proof or in the general +covariance definitions/remarks. The `\uses{}` lists for the two in-scope theorem +nodes are accurate against what their Lean proofs actually invoke. The extensive +"Pullback metrics and cross-metric isometries" subsection of `spacetime.tex` +(dependency chain for `def:general-covariance-in-curved-spacetime`) is unusually +well-annotated about Mathlib API pitfalls (junk values of +`ContinuousLinearMap.inverse`, the two different meanings of "$(d\psi_x)^{-1}$", +etc.) and each such pitfall is explicitly resolved with a named lemma; no unflagged +gaps were found in the portion read for this review. diff --git a/notes/agents/review-2026-09-sec10.2.md b/notes/agents/review-2026-09-sec10.2.md new file mode 100644 index 0000000..71b3619 --- /dev/null +++ b/notes/agents/review-2026-09-sec10.2.md @@ -0,0 +1,231 @@ +# Review: Blueprint §10.2 "Spectral Theorems" vs Lean + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/spectral-theorems.tex` (5829 lines, + 144 `\lean{...}` tags, 186 individual Lean identifiers cited across + ~120 blueprint items: definitions, propositions, lemmas, theorems, + corollaries). +- Lean: `Physicslib4/Spectral/{Basic,BorelCalculus,BorelClasses, + ContinuousCalculus,Forms,OperatorIntegral,ProjectionValuedMeasure, + SpectralTheorem,Spectrum}.lean`. `Physicslib4/Operators/*.lean` was checked + for citations but is not cited from this section. +- Out of scope (per task and per CLAUDE.md): chapters 1-9, and + `blueprint/src/sections/sec10/unbounded-spectral-theorems.tex` + (§10.3, `Physicslib4/Spectral/Unbounded/*`), which is a separate blueprint + file already covered by a prior review + (`notes/agents/review-2026-09-sec10.1-10.7.md`). +- `scratch_*` files ignored (none present under `Physicslib4/Spectral`). + +## Method + +- Read the full blueprint file in sections (preamble/conventions, elementary + operator properties, projection-valued measures and operator-valued + integration, resolvent/spectrum/Gelfand-formula block, continuous + functional calculus, bounded Borel functional calculus and the + monotone-class bootstrap, the spectral measure construction and + uniqueness, and the final Spectral Theorem + Functional Calculus + definition). +- For every blueprint item, read the paired Lean declaration (via `Read`/ + `grep`) and compared hypotheses, quantifiers, and conclusions by hand; + no `lean_hover_info`/LSP tool calls were available in this session, so all + comparisons are by direct source reading. +- Mechanically verified, for all 144 `\lean{}` tags: (a) that every + `Physicslib4.*` identifier is textually declared in the cited files + (regex scan for `theorem|def|lemma|abbrev|structure|instance` + manual + grep resolution of the three regex false positives, all of which existed); + (b) that all 24 distinct non-`Physicslib4` (core Mathlib) identifiers exist + in `.lake/packages/mathlib` under the exact dotted name used (two looked + like 0-hits under a naive `grep -w`, both resolved on inspection: + `Complex.analyticOnNhd_iff_differentiableOn` and + `spectrum.map_polynomial_aeval` both exist, just declared inside + `namespace Complex`/`namespace spectrum` rather than with the prefix + written literally in the source line). +- Checked `\leanok`/`\begin{proof}` pairing programmatically: no statement + block carries `\lean{}` without a following `\leanok`; no `\begin{proof}` + block omits an immediately-following `\leanok`. (144/144 and all proof + blocks consistent.) +- Ran `#print axioms` on the two capstone declarations via `lake env lean`. +- Grepped for `sorry`, `admit`, `native_decide`, `skipKernelTC`, + `implemented_by`, `axiom`, `nolint`, and the `Restriction:` marker across + the in-scope files. +- Spot-checked `.git/lean-kit/verify-receipt.json` and + `.git/lean-kit/approvals.json` against `git log` for the in-scope files. + +## Findings + +No High-severity findings. The section is in materially good shape: every +`\lean{}` link resolves, every proof claimed `\leanok` compiles with only +the three permitted axioms, there is no `sorry`/`admit`/`native_decide`, and +every definition/theorem pairing I checked in detail is a faithful +translation of the blueprint statement (not merely notation-compatible, but +hypothesis-for-hypothesis matching, including junk-value conventions). + +### Medium + +1. **Stale verify receipt for this section's own recent history.** + `.git/lean-kit/verify-receipt.json` records `lake build` and `lake lint` + passing as of `2026-09-18T14:08:28Z`. Commits `26ca993` ("Fix lake lint + and blueprint declaration-check failures") and `effd1f5` ("Replace + Laurent's theorem by Gelfand's formula and prune unused nodes") both + touch `blueprint/src/sections/sec10/spectral-theorems.tex` and land + *after* that timestamp (`git log --since=` on the in-scope + paths shows both, plus a run of §10.3 work). I confirmed the "Laurent" + reference the second commit removed has no leftover trace (`grep -rn + Laurent` is empty in both the blueprint and Lean tree), so the change + itself looks clean by inspection — but the receipt on disk no longer + reflects a verification of the current tree for this file. + **Suggested fix:** re-run `python3 ~/.claude/lean-kit/lean_guard.py + verify` (or `lake build && lake lint`) and refresh the receipt before + relying on it for §10.2 sign-off. + +### Low + +2. **`spectrum ℝ A` stands in for the blueprint's `σ(A) ⊆ ℂ`.** + Throughout `ContinuousCalculus.lean` and `SpectralTheorem.lean`, the + blueprint's spectrum-as-a-subset-of-ℂ is represented by Mathlib's real + spectrum `spectrum ℝ A`. This is explicitly documented in the + implementation notes of `SpectralTheorem.lean` (self-adjoint operators + have real spectrum, and `spectrum ℝ A` is homeomorphic to `σ(A) ⊆ ℂ` via + `Complex.ofReal`), and the blueprint's own Proposition + `prpstn:hall-7.7` ("The Spectrum of a Self-Adjoint Operator is Real") + licenses exactly this identification. This is a documented representation + choice rather than a mismatch; recorded here for completeness since it is + a design decision every downstream theorem statement (including the + capstone theorem) inherits silently. + +3. **`@[nolint unusedArguments]` on `L0` (BorelClasses.lean:279).** + Justified in the docstring immediately above it: `[MeasurableSpace X]` is + carried only so `L0`'s statement type-checks against later lemmas, and is + not used in the definition's body. This is not a lint-gate workaround — + it is a real unused argument with a stated reason. No action needed; + verified by reading, not by running the linter myself. + +4. **Deliberate weakenings recorded as prose conventions rather than + `Restriction:` docstrings.** Two standing assumptions from the blueprint + preamble (separability of `H`, and `H ≠ {0}`) are explicitly *not* + threaded through the Lean development: separability is asserted nowhere + in Lean (with a documented argument that no proof needs it), and + `Nontrivial H` is added only to the handful of declarations that actually + need it (non-emptiness of the spectrum, the spectral radius, `‖1‖ = 1`). + Both narrowings are pointed the *right* direction (Lean is more general + than the blueprint's stated hypotheses, not less), so they are not + "Lean assumes more" in the problematic sense, and the blueprint itself + states both facts in prose (`def:bounded-operator-notation` and + `conv:nonzero-hilbert-space`). They do not use the project's + `Restriction:` marker convention, but that marker is reserved (per + CLAUDE.md) for cases where Lean proves *less* than intended pending + future work; here Lean already proves the fully general statement, so a + `Restriction:` tag would be inappropriate. No fix needed; flagged only so + a future reader does not mistake the absence of a marker for an + unrecorded restriction — it is a recorded generalization, not a + restriction. + +5. **Report scope note.** I did not exercise `lean_hover_info` (tool not + invoked in this session) and instead read declarations directly from + source; for the ~15 items with the heaviest `\uses{}` graphs (notably + `thrm:spectral-theorem-for-bounded-operators` itself, `thrm:hall-8.10`, + and `def:F-class`) I checked that every `\uses{}` label corresponds to a + real, sensible Lean dependency by reading the proof, but did not + exhaustively re-derive the full dependency graph against `#print axioms` + or the import graph. Given the clean axiom check on the two capstone + declarations, I judge this residual risk low. + +## Statement-by-statement audit (representative sample) + +All items sampled below are **match** unless noted. Given the size of the +section (120+ blueprint items), I read every item's blueprint text and did +line-level comparison against the Lean signature for all of them, and +report here only the ones worth a note; the remainder (elementary operator +algebra, the `𝓛₀`/monotone-class bootstrap, the sesquilinear/quadratic form +machinery, the `𝓕`/`𝓕₁`/`𝓕₂` classes, the orthogonal-sum-of-projections +block, and the two-spectral-measures-agree chain) were all **match**, with +junk values (e.g. `ProjectionValuedMeasure.integral f = 0` when `f` is not +bounded-measurable) documented at the definition site. + +- `def:projection-valued-measure` / `Physicslib4.Spectral.ProjectionValuedMeasure` + — **match**. The blueprint's implicit `μ(∅) = 0` is correctly *not* + encoded as a structure field (it's derivable from `hasSum'`); documented + in the docstring. Five structure fields correspond to the blueprint's + five conditions one-for-one. +- `thrm:riesz-representation` / `Physicslib4.Spectral.existsUnique_measure_of_positive_linear` + — **match**. `X` compact metric + `[BorelSpace X]`, `Λ` a positive linear + functional on `C(X, ℝ)`, conclusion `∃! ν, IsFiniteMeasure ν ∧ ∀ f, ∫ f ∂ν + = Λ f`. The `IsFiniteMeasure` conjunct is not an extra hypothesis but part + of the existence claim, matching "positive measure" for a functional + defined on all of `C(X,ℝ)` on a compact space. +- `thrm:spectral-theorem-for-bounded-operators` / + `Physicslib4.Spectral.existsUnique_spectralMeasure` — **match**. `hA : + IsSelfAdjoint A → ∃! μ : ProjectionValuedMeasure (spectrum ℝ A) H, μ.integral + (fun l => (l:ℝ):ℂ) = A`, exactly the blueprint's existence-and-uniqueness + claim (modulo the `spectrum ℝ A` representation noted above). + `#print axioms` shows only `propext, Classical.choice, Quot.sound`. +- `def:functional-calculus` / `Physicslib4.Spectral.functionalCalculus` — + **match**, with a documented junk value (`0` outside `BddMeasurable`) and + a proved coincidence (`borelCalculus_eq_integral`) with the section's + *other* construction of `f(A)`, exactly as the blueprint's closing prose + claims. +- `def:bounded-sesquilinear-form` / `Physicslib4.Spectral.BoundedSesquilinearForm` + — **match**, via Mathlib's bundled `H →L⋆[ℂ] H →L[ℂ] ℂ`; the + implementation notes correctly explain why bundling (rather than a + predicate on raw functions) is equivalent to the blueprint's definition. +- `def:hall-8.6` (`borelForm`), `def:F-class` (`FClass`), `def:hall-8.8` + (`borelCalculus`) — **match**, all following the `spectrum ℝ A` / + `BddMeasurable` conventions consistently. +- `thrm:hall-8.10` / `Physicslib4.Spectral.exists_spectralMeasure` — + **match**. Existence half of the capstone theorem is proved compositionally + from `spectralMeasure_apply` and `spectralMeasure_integral_id`, exactly + mirroring the blueprint's two-part proof structure. +- `thrm:hall-prblm-8.3.4` / `Physicslib4.Spectral.pvm_eq_of_integral_id_eq` + — **match** (uniqueness half). + +No item was classified as **Lean assumes more**, **Lean concludes less**, +**different objects**, or **edge cases differ** in the sample audited. + +## Blueprint-math issues + +None found. The blueprint's own proof sketches for the items read in detail +(Riesz representation reduction to a positive linear functional on +`C(σ(A);ℝ)`, the two-part existence/uniqueness assembly of the capstone +theorem, the polarization-identity derivation, the `𝓛₀`/monotone-class +bootstrap argument) are internally consistent and each cited step is +present and used correctly. The one place where the blueprint made a +substantive correction to its own history — replacing a reference to +"Laurent's theorem" with Gelfand's formula for the spectral radius +(`thrm:gelfand-formula`, commit `effd1f5`) — is already fully applied with +no stale references remaining. + +## Summary counts + +- Blueprint items in scope with `\lean{}`: 144 (~120 distinct labelled + items; several propositions cite multiple Lean lemmas). +- Classification of items audited in detail: match — all; notation only — + 0; Lean assumes more — 0; Lean concludes less — 0; different objects — 0; + edge cases differ — 0; can't determine — 0. +- Broken `\lean{}` links: 0. +- `\leanok`/proof inconsistencies: 0. +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`: 0. +- `axiom` declarations: 0. +- `nolint` uses: 1 (justified by docstring). +- `Restriction:` markers in scope: 0 (none needed — see Low finding 4). +- Axiom check on capstone theorems: `propext, Classical.choice, Quot.sound` + only. +- Findings: 1 Medium (stale verify receipt), 4 Low (documentation/scope + notes, no code or blueprint changes needed). + +## Verified by tool vs. judged by reading + +- **Tool-verified:** all `\lean{}` identifier existence (grep-based + resolution against the Lean sources and against `.lake/packages/mathlib`); + `\leanok`/`\begin{proof}` pairing (Python scan of the `.tex` source); + axiom closure of `existsUnique_spectralMeasure` and `functionalCalculus` + (`lake env lean` + `#print axioms`); presence/absence of `sorry`, `admit`, + `nolint`, `Restriction:`, `native_decide`, etc. (`grep -rn`); staleness of + the verify receipt (`git log --since` against the receipt timestamp). +- **Judged by reading:** faithfulness of each Lean statement to its + blueprint counterpart (hypotheses, quantifiers, junk values); internal + correctness of the blueprint's own proof sketches; whether the two + Medium/Low "representation choice" items are adequately documented. diff --git a/notes/agents/review-2026-09-sec10.3.md b/notes/agents/review-2026-09-sec10.3.md new file mode 100644 index 0000000..69fb504 --- /dev/null +++ b/notes/agents/review-2026-09-sec10.3.md @@ -0,0 +1,509 @@ +# Review: Blueprint §10.3 "Unbounded Spectral Theorems" vs. Lean + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) +Status: session interrupted by a network outage partway through; scope was +triaged toward the items named in the task and toward integrity/link checks +that are cheap to verify exhaustively. See "Coverage" under Method. + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/unbounded-spectral-theorems.tex` + (3170 lines / ~120 labelled items, all marked `\leanok`). +- Lean: `Physicslib4/Spectral/Unbounded/{Basic,Spectrum,DirectSum,Integral, + Normal,AbstractCalculus,Cayley}.lean` (5644 lines total). +- No `.lean`/`.tex` file was modified. No fuse/lean-kit MCP tools + (`lean_hover_info`, `lean_verify`, `lean_minimal_hypotheses`) were available + as callable tools in this session; all checks were done by reading source + and blueprint text and by `grep`/`git`/`lean_guard.py`. + +## Method + +- Extracted all 188 distinct identifiers named in `\lean{...}` macros in the + section (118 `Physicslib4.*`, 70 root/Mathlib names) and checked each + resolves to a real declaration: by exact grep against the 7 audited files + for the `Physicslib4.*` names, and against `.lake/packages/mathlib/Mathlib` + (lenient, namespace-aware grep) for the rest. +- Grepped the 7 files for `sorry`, `admit`, `native_decide`, + `debug.skipKernelTC`, `implemented_by`, `nolint`, and the restriction + marker `Restriction:`. +- Read the blueprint prose and proof for the items named in the task's + "known context" (integral's `Measurable` guard, `cayleyPVM`/`mapPVM` + measurability guards, `lmm:closed-subspace-is-hilbert`'s + `[SeparableSpace H]`, the `hall-9.26`/`hall-9.26-internal` pair, the + `hall-10.23`/`hall-10.26` gap, `inclSpectrum`), and read the corresponding + Lean declarations, to classify each against the statement-audit rubric. +- Ran `python3 ~/.claude/lean-kit/lean_guard.py check --base HEAD` and read + `.git/lean-kit/verify-receipt.json` / `.git/lean-kit/approvals.json` + against `git log` to assess integrity/verify staleness. + +### Coverage + +Depth-read and cross-checked against Lean: `def:hall-3.1`, `def:hall-9.1` +through `def:hall-9.7`, `prpstn:hall-9.4`, `prpstn:hall-9.8`, +`prpstn:hall-9.10`, `def:product-hilbert-space`, +`prpstn:closure-linearity-and-sequential-description`, +`lmm:closure-of-symmetric-is-symmetric`, +`def:closed-linear-map-on-a-subspace`, `prpstn:hall-9.26` and +`prpstn:hall-9.26-internal`, `prpstn:hall-10.1`, `prpstn:hall-10.2`, +`lmm:closed-subspace-is-hilbert`, `lmm:hall-10.26`, `thrm:hall-10.23`, +`inclSpectrum`. Link existence was checked for every labelled item in the +file. Not depth-read this session (link existence only, statement content +unchecked): the Cayley-transform block (`lmm:cayley-map`, +`lmm:cayley-omits-one`, `def:hall-7.14`, `prpstn:hall-10.3`/`10.29`/`10.20`, +`thrm:hall-10.4`, `thrm:hall-10.28`), the abstract-calculus/DirectSum +external-form details beyond `hall-9.26`, and the projection-valued-measure +integral lemmas beyond `hall-10.1`/`10.2`. These are flagged as open follow-up +rather than reported as findings. + +## Findings + +### High + +**H1. Verify receipt is stale relative to the audited material.** +- Location: `.git/lean-kit/verify-receipt.json` (time `2026-09-18T14:08:28Z`, + commands `lake build`, `lake lint`, both `exit: 0`) vs. `git log`. +- Problem: `git log --since=2026-09-18T14:08:28+00:00` lists 11 later commits, + including exactly the commits that finished the material under audit: + `431a6fe` (remaining unbounded-operator results), `5b224c9`, `0773f3d`, + `8b8eb0b`, `a40b591`, `0c684be`, `9aae0e6`, `7e54dd1` ("Prove the Cayley + transform and unbounded spectral theorem (section 10.3)"), `453679b` + ("Prove lmm:closed-subspace-is-hilbert under a separable H"), `26ca993` + ("Fix lake lint and blueprint declaration-check failures"), `effd1f5` + ("Replace Laurent's theorem by Gelfand's formula..."). All of these are + dated 2026-09-24, six days after the receipt. There is no later receipt. + So the recorded verify does not cover the current state of + `Spectral/Unbounded/*`, including a commit whose stated purpose was fixing + a lint failure — i.e. the last *known-passing* lint run predates the fix + for a lint failure. +- Suggested fix: re-run `lake build && lake lint` (and + `leanblueprint checkdecls`) and record a fresh receipt before treating this + section as verified. I did not run the build myself in this session + (time/network constrained); this is reported from the receipt/git-log + evidence only. + +**H2. Blueprint-math gap: `lmm:hall-10.26`'s constant is not stated uniform +in λ, but `thrm:hall-10.23`'s proof needs it to be.** +- Location: blueprint lines 2108-2113 (`lmm:hall-10.26` statement) and + 2231-2232 (`thrm:hall-10.23` proof). +- Problem: `lmm:hall-10.26` states: "there is a constant $C$ (depending on + $p$, $A$, **and $\lambda$**, but not on $\varepsilon$ or $\psi$)...". The + proof of `thrm:hall-10.23` then asserts (line 2232): "there is a single + constant $C$, depending only on $p$ and $A$, valid for all $\lambda$ with + $|\lambda| \le \|A\|$" — i.e. uniform over an infinite family of $\lambda$'s + — and justifies this only by an aside ("Inspecting the recursion there, C + is built from ..., and is non-decreasing in $|\lambda|$"), not by a cited + proposition. This is exactly the gap noted in the task's known context: the + blueprint's own chain of reasoning for 10.23 (via the almost-eigenvector + route) needs a strengthening of 10.26 that 10.26 does not state and that + is not separately proved as a citable fact. +- Suggested fix (blueprint, propose only): either restate `lmm:hall-10.26` + with the uniformity built in (constant depending on $p$, $A$, and a bound + $R$ on $|\lambda|$, valid for all $|\lambda|\le R$), or add a short + corollary capturing the uniformity claim, with a `\uses` edge from + `thrm:hall-10.23`. + +### Medium + +**M1. Lean's proof of `thrm:hall-10.23` takes a different, undocumented +route that happens to sidestep H2 — but the deviation isn't recorded +anywhere.** +- Location: `Physicslib4/Spectral/Unbounded/Normal.lean:806-830` + (`mvApply_eq_cfc`, `spectrum_mvApply`). +- Problem: `spectrum_mvApply` (tagged "Blueprint reference: `thrm:hall-10.23`") + is proved by rewriting `mvApply A p` as Mathlib's `cfc (mvEvalConj p) A` + and invoking `cfc_map_spectrum`. It never calls + `exists_const_isAlmostEigenvector_mvApply` (the Lean name for + `lmm:hall-10.26`) at all, so the gap in H2 does not affect Lean's soundness + — the theorem is correctly proved. But the blueprint text still presents + the almost-eigenvector argument as *the* proof of 10.23, and nothing in + the `.tex` or in the Lean docstring says the formalization uses a shorter + Mathlib-CFC route instead. A reader relying on the blueprint to understand + what was formalized would be misled about the proof actually checked by + Lean (matching the task's note that "10.23 via Mathlib CFC" is one of + several such deviations, alongside 10.29, 10.3, 9.26). +- Suggested fix: add a remark in the blueprint after `thrm:hall-10.23` (or in + the Lean docstring) noting the formalized proof uses Mathlib's continuous + functional calculus rather than the almost-eigenvector argument above, so + H2 is moot for the Lean development. I did not have time this session to + check the other three named deviations (10.29, 10.3, 9.26's *external* + form) against blueprint prose in the same depth; recommend a follow-up + pass on those three specifically. (Follow-up below now covers 10.29 and + 10.3: neither turns out to deviate from its blueprint proof route in a way + that matters to the statement audit — see "Follow-up" section.) + +**M2. `CompleteSpace (K n)` instance hypothesis on the internal-direct-sum +lemmas, marked `Restriction:` but argued to cost nothing — marker used +non-standardly.** +- Location: `Physicslib4/Spectral/Unbounded/DirectSum.lean:535-632`, five + theorems (`isEssentiallySelfAdjoint_of_isInternalDirectSumOperator`, + `domain_closure_eq_internalDomain`, `domain_adjoint_eq_internalDomain`, + `hasSum_closure_apply_of_isInternalDirectSumOperator`, + `hasSum_adjoint_apply_of_isInternalDirectSumOperator`). +- Blueprint (`prpstn:hall-9.26-internal`, lines 1015-1028): hypothesizes only + that `{K_n}` is "an internal orthogonal decomposition of H into separable + **closed** subspaces" — completeness of each `K_n` is a consequence (closed + subset of a complete space), not a hypothesis. +- Lean: each of the five theorems takes `[∀ n, CompleteSpace (K n)]` as an + explicit instance argument. Every docstring is honest about this, saying + verbatim: "the instance `[∀ n, CompleteSpace (K n)]` ... is assumed rather + than derived from `hK.isClosed` via `IsClosed.completeSpace_coe`; being + `Prop`-valued it costs no generality, a caller supplying it with `haveI`." +- Problem: this is a real hypothesis in the Lean signature beyond what the + blueprint states, even though it is derivable and therefore not a genuine + restriction of the class of applicable `(K, A, T)`. Using the same + `**Restriction:**` marker as a genuine scope-narrowing restriction (e.g. + the bounded-generators note in `VacuumState.lean`) dilutes what the marker + means for an auditor scanning for real restrictions — this one needs no + "waiting on X" resolution, it's a convenience the theorem could remove + itself. +- Suggested fix (propose only): either derive + `haveI : ∀ n, CompleteSpace (K n) := fun n => (hK.isClosed n).completeSpace_coe` + inside each theorem so no caller-visible hypothesis is added, or reword the + docstring to say explicitly this is *not* a mathematical restriction (so it + stops matching the auditor's `Restriction:` grep as if it were one). + +### Low + +**L1. `inclSpectrum`/`continuous_inclSpectrum` duplicate Mathlib.** +- Location: `Physicslib4/Spectral/Unbounded/AbstractCalculus.lean:727-737`. +- `inclSpectrum hsub := fun lam => ⟨(lam : ℂ), hsub lam.2⟩` is definitionally + `Set.inclusion hsub`, and `continuous_inclSpectrum` restates Mathlib's + `continuous_inclusion` (both confirmed present: + `Mathlib/Topology/ContinuousMap/Basic.lean:413-416` even bundles + `Set.inclusion` as a `ContinuousMap` already). Purely cosmetic; no + soundness or scope issue. +- Suggested fix: replace with `Set.inclusion hsub` / + `continuous_inclusion hsub` (propose only; a `def`/no new declaration + change like this needs orchestrator sign-off per policy's + `new_declarations` table treating `def` as `block` for new work). + +**L2. Working-tree protected-file changes and no approvals on file (outside +sec10.3 content, noted for completeness).** +- `lean_guard.py check --base HEAD` reports `.claude/CLAUDE.md` and + `.claude/lean-policy.json` as protected-file changes in the working tree + (both appear as untracked in the session's initial git status). + `.git/lean-kit/approvals.json` does not exist, so no approvals are in + effect. Neither bears on the Lean/blueprint content of §10.3; not + investigated further. + +## Blueprint-math issues + +- See H2 above (the substantive one found this session): `lmm:hall-10.26` + vs. `thrm:hall-10.23`'s proof-time need for uniformity in λ. +- No other blueprint-internal inconsistency was found in the material that + was depth-read (adjoint/closure/self-adjointness chain, `hall-9.26` + external/internal pair, `hall-10.1`/`10.2` integral construction, + `closed-subspace-is-hilbert`). The degenerate-summand case in `hall-9.26` + (line 958, `H_j = {0}`) is explicitly and correctly handled as a separate + case rather than silently assumed away — checked and is not a vacuity + issue. +- The follow-up pass below found no additional blueprint-internal + inconsistency in `thrm:hall-10.28`, `prpstn:hall-10.29`, `prpstn:hall-10.3`, + `thrm:hall-10.4`, `thrm:hall-10.20`, or `lmm:borel-bijection-transports-pvm`. + +## Items checked and cleared (verified, not just read) + +- **Junk value in `integralApply`** (Integral.lean:667-675): returns `0` + when `f` is not measurable or no representing vector exists. Confirmed + harmless: `prpstn:hall-10.1`'s blueprint statement itself requires `f` + measurable, and every downstream theorem using `pmapIntegral`/ + `integralApply` (`integralApply_eq`, `pmapIntegral_domain`, etc.) carries + an explicit `Measurable f` hypothesis; the junk branch never appears in a + proved theorem's hypotheses-satisfied case. +- **`lmm:closed-subspace-is-hilbert`'s `[SeparableSpace H]`** + (Integral.lean:363-367): confirmed the ambient `variable {H ...}` in + `Basic.lean:60` and `Integral.lean:58` does *not* include + `[SeparableSpace H]` (Lean generalizes the whole development beyond the + blueprint's standing "H is separable" convention), so this lemma + re-introduces separability explicitly exactly where the conclusion needs + it. This matches blueprint intent; not a mismatch. +- **All 118 `Physicslib4.*` `\lean{}` links**: resolve to real declarations + in the 7 audited files (checked via anchored grep for + `theorem|lemma|def|abbrev|structure|instance|class `). +- **All 70 non-`Physicslib4` `\lean{}` links**: resolve in + `.lake/packages/mathlib/Mathlib` (13 needed a second, namespace-aware pass + after a naive grep first missed them — e.g. `Filter.Tendsto.cauchySeq` and + `IsCompact.tendsto_subseq` are real Mathlib declarations reached via dot + notation from `namespace Filter`/`IsCompact`, not literal top-level names). +- **No `sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/ + `implemented_by`/`nolint`** anywhere in the 7 files (grep, exhaustive). +- **`Restriction:` markers**: only the 5 in DirectSum.lean (M2), all + identical text; none elsewhere in the 7 files. + +## Not verified (judged by reading only, or not reached) + +- Actually running `lake build`/`lake lint` myself to get a fresh pass/fail + (H1 is reported from receipt + git log evidence, not from a fresh run). +- `def:hall-7.14` (spectral subspace) and `IsResolvent`/`def:hall-9.16` + themselves were re-used, not re-audited, in the follow-up below (they were + in scope of an assumed-prior pass over `Spectrum.lean`); only their + signatures were `#print`ed to confirm consistency with how the Cayley + block cites them. + +## Follow-up: statement audit of 10.28, 10.29, 10.3, 10.4, 10.20, mapPVM + +This section closes out the six items left as open follow-up above. All six +were depth-read against the blueprint's statement text and checked against +Lean via `Read` plus `lake env lean` `#check`/`#print` (the fuse/lean-kit MCP +tools were still not available as callable tools this session either). + +### thrm:hall-10.28 (Cayley transform existence) — **match** + +- Blueprint (lines 2772-2789): fixes `A` self-adjoint, *defines* + `U ψ ≡ (A+i1)(A-i1)⁻¹ψ`, and states four properties of this specific `U` + (unitary; `U-1` injective; `Range(U-1) = Dom(A)` with the stated inverse + formula; `U-1 = 2i(A-i1)⁻¹`). +- Lean (`Cayley.lean:191-235`, tool-verified via `#print`/`#check`): + `structure IsCayleyTransform (A) (B U) : Prop` bundles `IsResolvent A i B` + (i.e. `B = (A-i1)⁻¹` as a two-sided bounded inverse, `#print`ed and + confirmed to match `def:hall-9.16`'s resolvent) with `U ψ = A⟨Bψ,_⟩ + i•Bψ`, + and `exists_isCayleyTransform (hA : IsSelfAdjoint A) : ∃ B U, + IsCayleyTransform A B U ∧ U ∈ unitary _ ∧ Injective (U-1) ∧ + range(U-1) = Dom(A) ∧ (∀ χ h, A⟨(U-1)χ,h⟩ = i•(U+1)χ) ∧ U-1 = 2i•B`. +- The one stylistic difference: the blueprint *defines* `U` by a formula and + then proves properties of that `U`; Lean states existence of a `(B,U)` + pair satisfying a defining predicate. This is not a narrowing — Lean + separately proves `IsCayleyTransform.unitary_eq` (`Cayley.lean:553-557`, + using `existsUnique_isResolvent` for `B`'s uniqueness), so the `(B,U)` + produced is unique given `A`, exactly as if it had been introduced by a + `def`. Point 3's `∀ ψ ∈ Range(U-1), Aψ = i(U+1)(U-1)⁻¹ψ` becomes + `∀ χ h, A⟨(U-1)χ,h⟩ = i(U+1)χ` (quantifying over the pre-image `χ` rather + than `ψ = (U-1)χ` and its inverse) — a routine reindexing, not a change of + content. All four numbered points are present with matching hypotheses + (`IsSelfAdjoint A`, no `Nontrivial H` needed, matching the blueprint, which + also states this theorem without `H ≠ {0}`). + +### prpstn:hall-10.29 (`A = ∫ D dμ^U`) — **match** + +- Blueprint (lines 2962-2970): for self-adjoint `A` with `H ≠ {0}`, Cayley + transform `U`, and `D` the inverse Cayley map, `A = ∫_{σ(U)} D dμ^U`, with + equality of domains. +- Lean (`Cayley.lean:683-703`, tool-verified `#check`): + `pmapIntegral_cayleyInv_eq [Nontrivial H] {A} (hA : IsSelfAdjoint A) {B U} + (hU : IsCayleyTransform A B U) {μU} (hμU : μU.integral (fun u => u) = U) : + pmapIntegral μU (fun u => (cayleyInv u : ℂ)) = A`. `pmapIntegral` returns a + `LinearPMap`, so this single equality already asserts domain equality + (`LinearPMap` equality is defined as equality of domain and of the map on + it) — matching "with equality of domains" without needing a second clause. + `[Nontrivial H]` matches the blueprint's `H ≠ {0}` hypothesis exactly (and + the blueprint gives the reason: `μ^U` is supplied by `thrm:hall-10.20`, + which assumes it — matching Lean's dependency on + `existsUnique_spectralMeasure_normal` inside `existsUnique_spectralMeasure_unbounded`). + +### prpstn:hall-10.3 (integral of a real function is self-adjoint) — **match** + +- Blueprint (lines 1705-1710): `f` real-valued measurable on `X` ⟹ + `∫_X f dμ` is self-adjoint on `W_f`. +- Lean (`Integral.lean:1132-1140`, tool-verified `#check`): + `isSelfAdjoint_pmapIntegral_of_real {f : X → ℂ} (hf : Measurable f) + (hreal : ∀ x, (f x).im = 0) : IsSelfAdjoint (pmapIntegral μ f)`. `f : X → ℂ` + with `∀ x, (f x).im = 0` is exactly "real-valued" represented as a + complex-valued function with vanishing imaginary part (the encoding used + uniformly for real-valued integrands throughout this file, e.g. in + `prpstn:hall-10.29`'s use of `cayleyInv` composed with `Complex.ofReal`); + `IsSelfAdjoint (pmapIntegral μ f)` is self-adjointness of the `LinearPMap` + with domain `W_f` (`integralDomain μ f`), matching "self-adjoint on `W_f`" + directly (`IsSelfAdjoint` for a `LinearPMap` already means `T = T†` as + partial maps, domain included). No extra hypotheses beyond `Measurable f` + and real-valuedness. + +### thrm:hall-10.4 (spectral theorem for unbounded self-adjoint operators) — **match** + +- Blueprint (lines 3077-3084): `A` unbounded self-adjoint on `H` (no stated + `H ≠ {0}` here — the degenerate case is handled inside the proof) ⟹ + unique PVM `μ^A` on Borel(`ℝ`) with `∫_ℝ λ dμ^A = A`; moreover `μ^A` is + concentrated on `σ(A)`. +- Lean, in two declarations that jointly cover the statement (tool-verified + `#check`, `Cayley.lean:933-978`): + - `existsUnique_spectralMeasure_unbounded {A} (hA : IsSelfAdjoint A) : + ∃! μ, pmapIntegral μ (fun x => (x:ℂ)) = A` — the existence/uniqueness + half, including the `H = {0}` degenerate case handled explicitly inside + the proof (`rcases subsingleton_or_nontrivial H`), matching the + blueprint's own explicit "degenerate case" paragraph in the proof + (lines 3089). + - `spectralMeasure_concentrated {A} (hA) {μ} (hμ : pmapIntegral μ id = A) : + μ {x | x ∉ σ(A)} = 0 ∧ ∀ E, MeasurableSet E → μ E = μ (E ∩ σ(A))` — + matches the "concentrated on the spectrum" clause verbatim, including + the blueprint's own restated "equivalently" form + (`μ^A(E) = μ^A(E ∩ σ(A))` for every Borel `E`). + The blueprint's closing remark that restricting `μ^A` to `σ(A)` "therefore + gives" a PVM there with `∫_{σ(A)} λ dμ^A = A` is explanatory (it follows + from `spectralMeasure_concentrated` together with + `lmm:borel-bijection-transports-pvm` Part 1, i.e. `restrictPVM`, both + already in the development) rather than a separate claim needing its own + `\lean` citation, and the tex's own `\lean` tag list for this theorem does + not include a third identifier for it. + +### thrm:hall-10.20 (bounded normal operators, incl. ambient/compact-`Y` form) — **match** + +- Blueprint (lines 2647-2660): `A ∈ B(H)` normal, `H ≠ {0}` ⟹ unique PVM + `μ^A` on Borel(`σ(A)`) with `∫_{σ(A)} λ dμ^A = A`; ambient form: for + compact `X ⊇ σ(A)` and PVM `ν` on `X` with `∫_X λ dν = A`, + `ν(E) = μ^A(E ∩ σ(A))` for every Borel `E ⊂ X`. +- Lean (`AbstractCalculus.lean:863-895`, tool-verified `#check`): + - `existsUnique_spectralMeasure_normal {A} (hA : IsStarNormal A) : + ∃! μ, μ.integral (fun lam => lam) = A` — the plain form, over + `spectrum ℂ A` directly. + - `eq_of_integral_id_eq_ambient {A} (hA : IsStarNormal A) {Y : Set ℂ} + (hY : IsCompact Y) (hsub : σ(A) ⊆ Y) {μA} (hμA) {ν} (hν) {E} + (hE : MeasurableSet E) : ν E = μA (inclSpectrum hsub ⁻¹' E)` — the + ambient form, matching the blueprint's `ν(E) = μ^A(E∩σ(A))` (the + preimage of `E` under the inclusion `σ(A) ↪ Y` is exactly `E ∩ σ(A)` + read back in `σ(A)`'s coordinates). + - One notable but *intentional* hypothesis difference: + `existsUnique_spectralMeasure_normal` carries **no** `Nontrivial H` + hypothesis, unlike the blueprint's stated `H ≠ {0}`. This is not a + mismatch: the blueprint's own `conv:nonzero-hilbert-space` + (`spectral-theorems.tex:58-64`) states `H ≠ {0}` as a section-wide + *convention*, adopted purely for fidelity to Hall's text, and explicitly + says: "the Lean formalization records it as a `Nontrivial H` hypothesis + on just those declarations that actually depend on it ... rather than as + a global assumption." `existsUnique_spectralMeasure_normal`'s proof + (via `abstractPVM`/Riesz representation) does not need non-emptiness of + `σ(A)` and so correctly omits the hypothesis, exactly per that + documented policy; this was tool-verified by `#check`ing the signature + and reading the proof (`AbstractCalculus.lean:863-879`), which never + invokes non-emptiness of the spectrum. + +### lmm:borel-bijection-transports-pvm (`restrictPVM`, `mapPVM`, `assoc_mapPVM`, `mapPVM_apply`) — **match** + +- Blueprint (lines 2901-2914): Part 1 (Restriction) — `μ` a PVM on `Ω(Y)`, + `Y₀ ∈ Ω(Y)` with `μ(Y\Y₀) = 0` ⟹ `Ω(Y₀)` is a σ-algebra on `Y₀` and `μ` + restricted to it is a PVM on `Y₀`. Part 2 (Transport) — `T : Y → Z` a + bijection with `T` and `T⁻¹` both measurable, `μ` a PVM on `Ω(Y)` ⟹ + `ν(F) := μ(T⁻¹F)` is a PVM on `Ω(Z)`, with `ν_ψ = T_*μ_ψ`. +- Lean (`Cayley.lean:405-483`, tool-verified `#check`): + - `restrictPVM (μ) {Y₀} (hY₀ : MeasurableSet Y₀) (hmass : μ Y₀ᶜ = 0) : + ProjectionValuedMeasure Y₀ H` — `Y₀ᶜ` here is the ordinary set + complement in `Set Y`, i.e. `Y \ Y₀`, matching `μ(Y\Y₀)=0` exactly. The + returned structure's fields were read directly (not just the type): its + `toFun E := μ (Subtype.val '' E)` and proof obligations reconstruct + Parts 1–4 of the PVM definition from `μ`'s, matching the blueprint proof + step for step (e.g. `univ'` uses the disjoint decomposition + `Y = Y₀ ⊔ (Y\Y₀)` exactly as in the blueprint's proof of Part 1). + - `mapPVM (μ) (T) (hT : Measurable T) (hbij : Bijective T) + (hinv : Measurable (Equiv.ofBijective T hbij).symm) : + ProjectionValuedMeasure Z H` — requires precisely "`T` measurable, `T` + bijective, and the inverse measurable", matching Part 2's hypotheses + with no relaxation. Read the body: the `hinv` binder (underscore-named + `_hinv` in the source but used) is genuinely used in `notMeasurable'` to + rule out `T⁻¹' F` being measurable for non-measurable `F` — not a dead + hypothesis. + - `mapPVM_apply` and `assoc_mapPVM` restate `ν(F) = μ(T⁻¹F)` and + `ν_ψ = T_*μ_ψ` respectively, matching Part 2's two conclusions verbatim + (`assoc_mapPVM`'s statement `(mapPVM μ T hT hbij hinv).assoc ψ = + Measure.map T (μ.assoc ψ)` is literally `ν_ψ = T_*μ_ψ`). + - The blueprint's closing remark (line 2943) that bijectivity of `T` is + only used for `ν(Z) = μ(Y)` in property 2, and that measurability of + `T⁻¹` is not needed for Part 2 itself but only for later re-transport, + is consistent with `mapPVM`'s signature carrying `hinv` as a hypothesis + that is *not* used to derive any of the PVM axioms for `ν` (checked: it + is used only in `notMeasurable'`, which is precisely the axiom that + needs `T⁻¹` to behave like an actual inverse on measurable sets, not a + substantive extra use). + +### Definitions checked for junk values (as requested) + +- **`IsCayleyTransform`**: no junk value risk — it is a `Prop`-valued + structure (not a partial function with a fallback branch); soundness + reduces to `IsResolvent`, `#print`ed (`Spectrum.lean:45`) and confirmed to + require `B` to be a genuine two-sided inverse of `A - i1` on `Dom(A)` + (`mem_domain`, `rightInverse`, `leftInverse` fields), matching + `def:hall-9.16`. +- **`cayleyPVM`** (`Cayley.lean:713-737`): the `MeasurableSet E` guard + (`if MeasurableSet E then ... else 0`) is the same convention used + throughout for every `ProjectionValuedMeasure` (the structure's + `notMeasurable'` field requires exactly this), not a shortcut specific to + `cayleyPVM`; it does not create a vacuity risk because every theorem using + `cayleyPVM` (`pmapIntegral_cayleyPVM_id`, `pmapIntegral_cayleyPVM_id_eq`) + works with the integral against it, which by construction only ever probes + measurable sets. +- **`cayleyInv`/`cayleyMap` division by zero at `u = 1`**: `cayleyInv u = + (I*(u+1)/(u-1)).re`, undefined mathematically at `u=1`. Tool-verified + (`lake env lean`, `#check`/proof of `cayleyInv 1 = 0`) that Mathlib's + convention `x/0 = 0` makes `cayleyInv 1 = 0` *exactly* — which matches the + blueprint's own explicit choice in the proof of `prpstn:hall-10.29` + (line 2976: "Extend it to all of $S^1$ by setting $D(1) \equiv 0$"). So + the junk value is not silently wrong; it coincides by construction with + the blueprint's own stated extension, and this coincidence is exploited + (not accidentally relied upon) by `spectralMeasure_singleton_one_eq_zero` + and `pmapIntegral_cayleyInv_apply_sub_one`. +- **`mapPVM`'s `hinv` guard**: see above under + `lmm:borel-bijection-transports-pvm` — genuinely required and used, no + vacuity. +- **`pmapIntegral`/`integralApply`'s `Measurable f` guard**: already checked + in the base session ("Items checked and cleared" above) and reconfirmed + here for the two new theorems that depend on it directly + (`isSelfAdjoint_pmapIntegral_of_real`, `pmapIntegral_cayleyInv_eq`), both + of which carry `Measurable f`/`Measurable (fun u => ...)` explicitly as a + hypothesis rather than relying on the junk branch. +- **`PVM` structure** (`ProjectionValuedMeasure.lean:71-88`): `#print`ed + (reading the source, not the term) — `notMeasurable'` (non-measurable + sets ↦ `0`) is a *field* of the structure, i.e. it is exactly + `def:projection-valued-measure`'s own convention (this definition is + outside today's file scope but is depended on for every vacuity check + above; not re-audited against the blueprint text this session beyond + confirming the convention is a structure field, matching how the + blueprint's own definition treats it as declared for measurable sets and + extended to `0` elsewhere). + +No new vacuity or narrowing issue was found among these six items. All are +classified **match**, one (`thrm:hall-10.20`) with a documented, +convention-sanctioned hypothesis difference (Lean omits `Nontrivial H` where +the blueprint's global convention says it may), not a scope narrowing. + +## Not verified (this follow-up) + +- `def:hall-7.14` (spectral subspace) and `IsResolvent`/`def:hall-9.16`'s own + statement text were not independently re-read against the blueprint this + session (only `#print`ed for internal consistency with how the Cayley + block cites them); a prior session is assumed to have covered them as part + of the `hall-9.*`/`hall-10.1`/`10.2` chain. +- `def:projection-valued-measure` itself (in `spectral-theorems.tex`, a + different file, outside the stated scope of both this and the prior + session) was read only far enough to confirm the `notMeasurable'` + convention, not depth-audited. +- No fresh `lake build`/`lake lint` run was performed this session either; + H1's staleness finding still stands unresolved. + +## Summary counts + +- Statement-audit items depth-checked: 24 (23 match, 1 "Lean assumes more": + `prpstn:hall-9.26-internal`'s derived lemmas / M2). The 6 items added this + follow-up (`thrm:hall-10.28`, `prpstn:hall-10.29`, `prpstn:hall-10.3`, + `thrm:hall-10.4`, `thrm:hall-10.20`, `lmm:borel-bijection-transports-pvm`) + are all matches, one with a documented, convention-sanctioned hypothesis + difference noted above (not counted as a mismatch). +- `\lean{}` links checked for existence: 188 (188 resolve; 0 missing), + unchanged from the base session; the follow-up re-confirmed the specific + 15 identifiers named in the task via `#check`/`#print` rather than grep + alone (`exists_isCayleyTransform`, `IsCayleyTransform`, + `pmapIntegral_cayleyInv_eq`, `isSelfAdjoint_pmapIntegral_of_real`, + `existsUnique_spectralMeasure_unbounded`, `spectralMeasure_concentrated`, + `existsUnique_spectralMeasure_normal`, `eq_of_integral_id_eq_ambient`, + `restrictPVM`, `mapPVM`, `assoc_mapPVM`, `mapPVM_apply`, `cayleyPVM`, + `cayleyInv`, `cayleyMap`). +- Findings: 2 High, 2 Medium, 2 Low (unchanged; no new finding this + follow-up — the six items audited were all matches). +- Hygiene grep (sorry/admit/native_decide/skipKernelTC/implemented_by/ + nolint): 0 hits (re-confirmed for `Integral.lean`, `AbstractCalculus.lean`, + `Cayley.lean` this follow-up). +- Restriction markers found: 5 (all one family, M2); none in the six items + audited this follow-up. +- Verified with a tool (grep/git/lean_guard.py/`lake env lean` `#check`, + `#print`): H1, L1, L2, all link-existence and hygiene-grep items, the + DirectSum instance-hypothesis text (M2), and — new this follow-up — the + full signatures of `exists_isCayleyTransform`, `IsCayleyTransform`, + `existsUnique_spectralMeasure_unbounded`, `spectralMeasure_concentrated`, + `isSelfAdjoint_pmapIntegral_of_real`, `pmapIntegral_cayleyInv_eq`, + `existsUnique_spectralMeasure_normal`, `eq_of_integral_id_eq_ambient`, + `mapPVM`, `restrictPVM`, `assoc_mapPVM`, `IsResolvent`, and the fact + `cayleyInv 1 = 0`. +- Judged by reading only: H2, M1 (blueprint prose vs. Lean proof structure), + the "items checked and cleared" list's mathematical reasoning, and — new + this follow-up — the line-by-line correspondence between each blueprint + proof step and the corresponding Lean proof body for `restrictPVM`, + `mapPVM`, `cayleyPVM`, and the `IsCayleyTransform`/`exists_isCayleyTransform` + pair (signatures were tool-verified; the mathematical correspondence of + full proof bodies was judged by reading). diff --git a/notes/agents/review-2026-09-sec10.4.md b/notes/agents/review-2026-09-sec10.4.md new file mode 100644 index 0000000..4bab6df --- /dev/null +++ b/notes/agents/review-2026-09-sec10.4.md @@ -0,0 +1,291 @@ +# Audit: blueprint §10.4 "Spacetime" + +Date: 2026-09-25 +Scope: `blueprint/src/sections/sec10/spacetime.tex` (all ~90 numbered nodes, +from `def:spacetime` through `def:cross-metric-isometry`), and the Lean files +its `\lean{}` tags cite, principally `Physicslib4/Spacetime/{Basic, CausalStructure, +Curves, Causality, CausalComplement, LorentzianSpacetime, Minkowski, +MinkowskiDirected, MinkowskiDilation, LorentzCauchySchwarz, LorentzCone, +LorentzOrthogonal, Diffeo, DiffeoPath, Isometry, IsometryCausality, +IsometryTopology, Pullback, CrossMetricIsometry}.lean`. + +## Method (tool-verified vs. judged by reading) + +Tool-verified: +- All 294 distinct `\lean{...}` names in `spacetime.tex` resolve against + `blueprint/lean_decls` (0 missing) and every short name has at least one + occurrence somewhere under `Physicslib4/` (0 missing). +- `grep` for `sorry`, `admit`, `native_decide`, `implemented_by`, + `skipKernelTC`, `nolint`, `axiom`, `maxHeartbeats`, `Restriction:`, + `: Prop := True` across `Physicslib4/Spacetime/`. +- `lake env lean` + `#print axioms` on six sampled theorems spanning the + causal-order core, the causally-complete-region lattice, curve + well-definedness, and the Minkowski/dilation/cross-isometry results — all + six report exactly `[propext, Classical.choice, Quot.sound]`. +- `.git/lean-kit/verify-receipt.json` (last `lake build` + `lake lint`, + 2026-09-18) and `git log` since that timestamp restricted to + `Physicslib4/Spacetime/` and the blueprint file (no hits): the receipt is + stale for the repository as a whole (many unrelated spectral-theory commits + since), but nothing in §10.4's scope changed after it, so its content is not + invalidated for this section. +- No `.git/lean-kit/approvals.json` file exists — no approvals in effect to + review. + +Judged by reading (no tool support): the statement audit table below, all +"match" classifications, and the two non-match findings (Critical-1, +Minor-1/2) were established by reading blueprint prose against the Lean +declarations side by side, tracing `\uses{}`/dependency chains by hand, and +tracing which downstream Lean declarations actually consume `IsGeodesic`. + +## Classification counts + +Of the ~90 blueprint nodes with `\lean{}` in scope: +- **match**: all of them at the *individual declaration* level (Lean signature + vs. blueprint prose line up exactly, including quantifier order, the + existential vs. universal reading of "smooth", edge cases such as the empty + region, the zero vector, and singleton parameter spaces). +- **different objects** (one, but with wide blast radius): `def:trip` / + `def:causal-trip`, and by inheritance every theorem downstream of `≪`/`≺`. + See Critical-1. +- **can't determine**: none. +- No case of "Lean assumes more" or "Lean concludes less" was found at the + level of an individual `\lean{}`-tagged statement — the mismatches found are + structural (one vacuous side-condition polluting a large dependency + subgraph) rather than per-statement hypothesis/conclusion drift. + +## Critical + +**C-1. `IsGeodesic := True` is not a per-node restriction; it is the defining +condition of `≪`/`≺`, and essentially the whole back half of the chapter is a +theorem about the resulting non-geodesic relation.** + +- `Physicslib4/Spacetime/Causality.lean:76`: + ``` + @[nolint unusedArguments] + def IsGeodesic (_μ : M.SmoothPath) : Prop := True + ``` + This is already known (flagged in `notes/agents/review-2026-09-sec10.1-10.7.md` + for the `general-covariance-in-curved-spacetime` dependency chain) and the + blueprint has an honest remark at `spacetime.tex:327-328` ("Remark (geodesic + placeholder in the formalization)") next to `def:trip`/`def:causal-trip`. + I re-verified the definition and traced its consumers directly rather than + taking the remark's scope at face value. +- Consumers, confirmed by reading `Causality.lean:95-165`: `IsTripSegment`, + `IsCausalTripSegment` both include an `M.IsGeodesic rep` conjunct that is + vacuously true, so both segment predicates reduce to "future-oriented + timelike (resp. causal) `C^∞` curve with the prescribed past/future + endpoints" — no geodesic (auto-parallel-tangent) condition at all. `IsTrip`, + `IsCausalTrip` are the transitive closures of these segment relations, and + `ChronologicallyPrecedes` (`≪`)/`CausallyPrecedes` (`≺`) are literally these. +- The blast radius is not confined to `def:trip`/`def:causal-trip`. Every one + of the following blueprint nodes states a theorem about `≪`/`≺` as defined, + hence about the non-geodesic relation, even though nothing in their own + statement or proof mentions geodesics: `thrm:precedence-transitive`, + `def:no-closed-causal-curve`, `thrm:causal-order-refinements`, + `def:chronological-future-and-chronological-past`, + `def:causal-future-and-causal-past`, `lmm:chronological-implies-causal`, + `lmm:future-past-monotone`, the entire "Causal diamonds" subsection + (`def:causal-diamond` through `thrm:causal-complement-de-morgan`), the + entire "Causal convexity" subsection, `def:alexandrov-topology` and its + subsection, `lmm:minkowski-*` directedness lemmas, + `thrm:minkowski-dilation-causal-automorphism`, the "Isometries and basis-set + preservation" subsection, and the "Pullback metrics and cross-metric + isometries" subsection — i.e. everything from `spacetime.tex:309` to the end + of the file bottoms out on `≪`/`≺`. +- This does not make any Lean theorem *false*: `IsGeodesic := True` only + widens the trip/causal-trip relations (drops a conjunct), so every proved + inclusion/closure/lattice/topology fact still holds for the wider relation. + But the blueprint's English prose for these ~40 downstream nodes reads as + "the trip-based order relation of §10.4" without repeating that the trips in + question are not (yet) geodesics; a reader who only encounters, say, + `thrm:causally-complete-lattice` or `thrm:causal-complement-de-morgan` has no + local signal that the causal order underneath is coarser than intended. +- *Suggested fix (report only, not applied)*: either (a) add the + `**Restriction:**` marker required by `CLAUDE.md` to `IsGeodesic`'s + docstring (`Causality.lean:68-75`), naming Stone's-theorem-style blocker + precisely (a Lorentzian Levi-Civita connection is unavailable in the pinned + Mathlib), and (b) add one sentence to the blueprint at the first downstream + node that is genuinely a "chapter-wide" consequence (e.g. + `def:alexandrov-topology` or the "Causal diamonds" subsection header) + pointing back to the remark at `def:trip`, so the scope of the caveat is + visible without following the whole dependency graph by hand. + +## Major + +None found. (The one structural gap is C-1; no per-statement hypothesis +mismatch, no false or junk-value-dependent statement, and no +non-`\leanok`-honest node was found in this section.) + +## Minor + +**m-1. Two stale module/field docstrings still describe the abandoned +chart-local ("`ContDiffWithinAt`") smoothness formulation, contradicting the +correct bundle-section (`ContMDiff`) field they sit next to.** + +- `Physicslib4/Spacetime/Basic.lean:48-51` (file-level docstring): "The + 'smoothness' of `g` is encoded via the standard idiom used by + `PseudoRiemannianMetric`: smoothness of the coordinate-expression in any + extended chart, applied to two arbitrary constant vectors in the model + space `ℝ⁴`." The actual `contMDiff` field (`Basic.lean:169-174`, correctly + documented at `Basic.lean:152-168`) is the bundle-section `ContMDiff` + statement mandated by the current `def:spacetime` text, not a chart-local + statement on constant vectors. +- `Physicslib4/Spacetime/CausalStructure.lean:145-158` (structure-level + docstring for `TimeOrientation`): "`smooth`: smoothness of the section in + any extended chart, expressed via the chart-local form of the field... a + genuine `Prop` field of the structure (a `ContDiffWithinAt` condition on the + chart-local representative)." The actual `smooth` field + (`CausalStructure.lean:166-177`) is the bundle-section `ContMDiff` statement, + correctly documented immediately below in the same file. +- Both are leftovers from the chart-local → bundle-section migration that the + blueprint itself calls out as "historical" at `spacetime.tex:1299` for a + different node (`lmm:pullback-metric-smooth-in-charts`'s label name); these + two docstrings are the same kind of leftover but were not caught by that + note. *Suggested fix*: reword both to describe the `ContMDiff` + bundle-section form (or delete the stale sentence and refer to the + field-level docstring immediately below, which is already correct). + +**m-2. `Curve`/`SmoothCurve`/`OrientedSmoothCurve` are quotients by relations +that are never shown to be equivalence relations.** + +- `Physicslib4/Spacetime/Curves.lean:333` (`def Curve : Type := Quot + M.PathEquiv`) docstring: "We package this as a `Quot` over the (possibly + non-equivalence) relation `PathEquiv`; the actual equivalence-class + structure is left implicit." Confirmed by grep: there is no + `PathEquiv`-is-`Equivalence` (or `.refl`/`.symm`/`.trans`) lemma anywhere in + the file, nor for `SmoothPathEquiv` or `OrientedSmoothPathEquiv`. +- This is not a soundness gap — `Quot r` always denotes the quotient by the + equivalence closure `Relation.EqvGen r` (used correctly throughout, e.g. + `Quot.eqvGen_exact` in `isTimelikeSmoothCurve_ofPath_iff`, + `Curves.lean:611-616`), so the well-definedness proofs are unaffected + regardless of whether `PathEquiv` itself happens to already be reflexive/ + symmetric/transitive. But the blueprint's `def:curves` reads "an equivalence + class of paths equivalent under homeomorphisms," which presupposes the + relation is an equivalence relation; nobody has recorded that fact for + `PathEquiv`, `SmoothPathEquiv`, or `OrientedSmoothPathEquiv` in Lean. + *Suggested fix*: either add the three straightforward `Equivalence` lemmas + (reflexivity via `id`; symmetry by swapping the witness pair `(φ, ψ)`; + transitivity by composing) or drop the hedge from the docstring once they + exist. + +**m-3. `SmoothPath.nonvanishing` docstring says "at each interior point" but +the field quantifies over the whole parameter space.** + +- `Physicslib4/Spacetime/Curves.lean:109-114`: docstring reads "non-zero at + each interior point of the parameter space," but the field is + `∀ s ∈ parameterSpace, mfderivWithin ... s (1:ℝ) ≠ 0`, i.e. quantified over + all of `Σ` including its two boundary points, matching the blueprint's + "smooth path" definition (`spacetime.tex:34-41`, no interior restriction). + The code is correct and matches the blueprint; only the English comment is + imprecise. *Suggested fix*: reword to "at every point of the parameter + space." + +## Lean quality + +- No duplication beyond the deliberate, explicitly-labelled + single-metric/cross-metric pairs (e.g. `Isometry.pushforwardPath` vs. + `CrossIsometry.pushforwardPath_isTimelike`), which the blueprint itself + documents as intentional copies with the target metric changed + (`spacetime.tex:1508-1521`) rather than duplication to be golfed. +- `IsTripSegment`'s doc-comment (`Causality.lean:79-93`) lists "is a geodesic" + as one of three bullet conditions on equal footing with "is future-oriented + and timelike" and "has past/future endpoint `p`/`q`" — read on its own, this + bullet reads as a live constraint. It is currently vacuous (C-1). This is a + narrower, file-local version of the same issue as C-1; flagging separately + because a reader of just this docstring (without cross-referencing + `IsGeodesic`'s own docstring) would not learn that the bullet is inert. +- No oversized single-tactic-block proofs; the longest proof in scope + (`Physicslib4/Spacetime/Minkowski.lean`'s pullback/contMDiff machinery, + outside the file list above but adjacent) is well-commented and structured + in `have`-steps, consistent with the blueprint's own detailed proof prose + for the corresponding nodes (`lmm:pullback-metric-smooth-in-charts`). +- No multi-conclusion conjunctions that quietly narrow scope were found; where + the blueprint states a conjunction (e.g. `thrm:causally-complete-lattice`'s + "form a complete lattice... spacelike complement is causally complete... + causal complement is an order-reversing involution"), the `\lean{}` list + cites one declaration per conjunct plus the bundling `CausallyCompleteRegion` + abbreviation, and the blueprint prose itself flags that the `CompleteLattice` + instance is anonymous (`spacetime.tex:587`) — confirmed: it is indeed an + anonymous `noncomputable instance` at `CausalComplement.lean:246`. + +## Integrity checklist + +- `sorry` / `admit` / `native_decide` / `implemented_by` / `skipKernelTC`: + none in `Physicslib4/Spacetime/` (the only two grep hits for the string + "sorry" are inside docstring prose explaining that the structures are + sorry-free, at `Basic.lean:59` and `Curves.lean:53`). +- `nolint`: exactly one use in scope, + `Causality.lean:75` (`@[nolint unusedArguments]` on `IsGeodesic`) — justified + by the placeholder's nature (the argument is unused because the predicate is + `True`), but see C-1 for the missing `**Restriction:**` marker. +- `axiom`: none declared in `Physicslib4/Spacetime/`. +- `maxHeartbeats`: one use, `Physicslib4/Spacetime/Pullback.lean:154` + (`set_option maxHeartbeats 1000000 in`), a performance escape hatch on one + proof, not a correctness concern. +- `#print axioms` (via `lake env lean` on a `/tmp` scratch file, oleans were + already cached so this used the build cache, not a fresh `lake build`) on + `chronologicallyPrecedes_trans`, `causallyPrecedes_antisymm`, + `LorentzianSpacetime.isCausallyConvex_of_isCausallyComplete`, + `LorentzianSpacetime.causalComplement_iSup`, + `isTimelikeSmoothCurve_ofPath_iff`, `parameterSpace_eq_Icc_of_endpoints`, + `isTopologicalBasis_alexandrovBasis_standardMinkowski`, + `alexandrovBasis_image_smul`, `exists_minkowskiForm_smul_ne`, and + `CrossIsometry.chronologicalFuture_image`: all ten report exactly + `[propext, Classical.choice, Quot.sound]`. No hidden `sorryAx` or custom + axiom. +- `verify-receipt.json`: `lake build` and `lake lint` both exited 0 on + 2026-09-18T14:08:28Z. No commit since then touches + `Physicslib4/Spacetime/*` or `blueprint/src/sections/sec10/spacetime.tex`, + so the receipt is current *for this section specifically*, even though the + repository as a whole has since had ~15 unrelated commits (spectral-theory + work) that would need a fresh `lake build`/`lake lint` pass to be covered by + the same receipt. +- Approvals: `.git/lean-kit/approvals.json` does not exist — no approvals in + effect to review for this section. +- `\leanok` honesty: every `\leanok`-marked node checked (all of them; see + Method) corresponds to a Lean declaration with no `sorry` and standard + axioms only, so `\leanok` is truthful throughout this section. + +## Blueprint soundness + +- No inaccurate `\uses{}` or dangling `\ref` was found; every `\label{}` + referenced by a `\ref{}` or `\uses{}` in this file resolves to a `\label{}` + defined earlier in the same file (spot-checked the longest dependency + chains: `thrm:causal-complement-de-morgan`, `thrm:causally-complete-convex`, + `lmm:pullback-alexandrov-homeomorphism`, `thrm:pullback-is-lorentzian-spacetime`). +- The blueprint is unusually candid about its own implementation quirks — the + anonymous `CompleteLattice` instance (`spacetime.tex:587`), the historical + but now-inaccurate label name `lmm:pullback-metric-smooth-in-charts` + (`spacetime.tex:1299`), the failure of the full orthocomplement law + (`spacetime.tex:587`, confirmed against the matching docstring caveat at + `CausalComplement.lean:158-163`), and the geodesic placeholder itself + (`spacetime.tex:327-328`). All of these self-reports were checked against + the Lean source and found accurate. The one gap is that the geodesic + caveat's *scope* (C-1) is not repeated at the many downstream nodes it + actually affects. +- No gaps found in the informal proofs read against their Lean counterparts; + the algebraic proof sketches (reverse Cauchy-Schwarz, the sign lemma for the + future cone, the De Morgan laws for the causal complement) match their Lean + proofs step for step, including the notable non-obvious point that the + binary/infinitary De Morgan equalities for the causal complement need the + *involution* (bijectivity), not just antitonicity — the blueprint says this + explicitly (`spacetime.tex:650`) and the Lean proof indeed routes through + `spacelikeComplement_spacelikeComplement_spacelikeComplement` + (`CausalComplement.lean:377-378` etc.) rather than any one-sided inequality. + +## Files referenced + +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/src/sections/sec10/spacetime.tex` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Basic.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalStructure.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Curves.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Causality.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/CausalComplement.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzianSpacetime.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/Minkowski.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/Physicslib4/Spacetime/LorentzCauchySchwarz.lean` +- `/Users/kdavis/Code/physicslib/physicslib4/blueprint/lean_decls` +- `/Users/kdavis/Code/physicslib/physicslib4/.git/lean-kit/verify-receipt.json` +- `/Users/kdavis/Code/physicslib/physicslib4/notes/agents/review-2026-09-sec10.1-10.7.md` + (prior partial review; this memo independently re-verifies and extends its + `IsGeodesic` finding). diff --git a/notes/agents/review-2026-09-sec10.5.md b/notes/agents/review-2026-09-sec10.5.md new file mode 100644 index 0000000..4455f49 --- /dev/null +++ b/notes/agents/review-2026-09-sec10.5.md @@ -0,0 +1,272 @@ +# Review: Blueprint §10.5 "Haag–Kastler Axioms (Minkowski)" vs Lean + +Date: 2026-09-25 +Reviewer: audit subagent (read-only) + +## Scope + +- Blueprint: `blueprint/src/sections/sec10/haag-kastler-axioms.tex` (2030 lines, + `\label{sctn:haag-kastler-axioms}`). This single file covers not only Axioms 1–5 + and `HaagKastlerNet` but everything the blueprint hangs off them in chapter 10: + the quasilocal colimit/completion chain, local von Neumann algebras, GNS + irreducibility/purity, KMS states, vacuum states. Per task instructions this + review goes deep on the five axioms, `HaagKastlerNet`, the quasilocal-algebra + construction, Einstein causality and local von Neumann algebras, and spot-checks + the remainder (GNS/KMS/vacuum) for hygiene (sorry/axiom/nolint) and `\lean{}` + link integrity rather than re-deriving every one of the ~150 blueprint nodes. +- Lean: `Physicslib4/AQFT/HaagKastler/*.lean` (all files read except the + `Curved*`/`HaagKastlerCurved` tree, which is out of scope for §10.5), + `Physicslib4/AQFT/{KMS,PositiveEnergy}.lean`, spot checks into `Physicslib4/GNS/*` + and `Physicslib4/Analysis/CStarCompletion.lean`. +- `scratch_*` files ignored (none found under this scope). +- No file was modified. + +## Method + +- Read the full blueprint tex once, then extracted every `\label`/`\lean`/`\leanok` + line to map the node graph (`grep -n` outline, ~150 nodes). +- Read the Lean source for Axioms 1–5 (`LocalAlgebras.lean`, `Isotony.lean`, + `LocalCommutativity.lean`, `ObservableBridge.lean`, `LorentzCovariance.lean`), + `Net.lean` (`HaagKastlerNet`), `QuasilocalAlgebra.lean`, `EinsteinCausality.lean`, + `LocalVonNeumann.lean`, `GeometricCovariance.lean`, `StrongDensity.lean`, + `VacuumState.lean`, `PositiveEnergy.lean`, and translated each into ordinary + mathematics for comparison against the tex. +- Grepped the whole scope for `sorry`, `admit`, `native_decide`, + `skipKernelTC`, `implemented_by`, `axiom`, `nolint`, and the `Restriction:` + marker. +- Extracted all 193 distinct `\lean{...}` identifiers cited in the file and + checked each resolves to an actual Lean declaration; the first automated pass + (regex on the bare final identifier) produced ~26 false "missing" flags because + of dotted namespace declarations (e.g. `theorem CovariantQuasilocalAlgebra. + IsVacuumState.invariant` inside `namespace HaagKastler`). Every flagged name was + then checked by hand (`grep`/`Read`); all 193 resolve to a real declaration. No + broken `\lean{}` link was found in this scope. +- Did not run `lake build`, `lean_verify`, or `lean_guard.py verify` (read-only + bash tool only per policy for an auditor role); integrity claims below about + proof completeness rest on grepping for `sorry`/`admit`/`axiom`, not on + re-checking the kernel. + +## Findings + +### High + +**H1 — Einstein causality and the entire "Local von Neumann Algebras" subsection +are proved about the wrong ambient algebra, with no bridge to the canonical +quasilocal algebra.** + +- Location: `Physicslib4/AQFT/HaagKastler/LocalCommutativity.lean:62-69`, + `EinsteinCausality.lean` (whole file), `LocalVonNeumann.lean` (whole file, + defines `localOperators`, `localVonNeumann`, `localVonNeumannAlgebra`, + `relativeCommutant`, `IsIrreducibleInclusion`), vs. + `Net.lean:121-129` (`HaagKastlerNet.quasilocal`) and `Net.lean:201-205` + (`HaagKastlerNet.commAlgebra`); blueprint `def:local-commutativity` + (lines 386-407), `def:quasilocal-algebra` (371-384), `thrm:einstein-causality` + (623-635), `def:local-von-neumann` through `thrm:self-inclusion-factor` + (637-899). +- Problem: `HaagKastlerNet.quasilocal` is the *canonical* quasilocal algebra + built by `exists_quasilocalAlgebra` (colimit-then-completion, + `thrm:quasilocal-algebra-exists`) — this is the object the blueprint calls + "the quasilocal algebra 𝔘" throughout `def:quasilocal-algebra` and everything + downstream of it. But Axiom 3 (`LocalCommutativity`) is formalized as an + *existential* over *some* `QuasilocalAlgebra U i` witness + (`∃ Q : QuasilocalAlgebra U i, ... Commute ...`), and `HaagKastlerNet.commAlgebra + := N.localCommutativity.choose` picks whatever witness the existential + produces — which need **not** be `N.quasilocal`. The blueprint itself notes + (`thrm:quasilocal-algebra-exists`, line 381) that uniqueness of the quasilocal + algebra up to isomorphism is *deliberately not claimed*, so there is no + general reason `commAlgebra ≅ quasilocal`, let alone `commAlgebra = quasilocal`. + `Net.lean:202-203` even documents the gap in a comment: "(This may differ from + the canonical `quasilocal` of Axiom 4.)" + Consequently `einstein_causality`, `exists_gns_einstein_causality` + (`EinsteinCausality.lean`), and every declaration in `LocalVonNeumann.lean` + (microcausality, isotony of the von Neumann net, statistical independence, + relative commutants, irreducible inclusions — blueprint's entire §"Local von + Neumann Algebras" and §"Relative Commutants" subsections) are theorems about + representations `π : N.commAlgebra.carrier →⋆ₐ[ℂ] (H →L[ℂ] H)`, not about + `N.quasilocal`. Nothing in the codebase connects the two: `grep -rn + "localVonNeumann\|localOperators\|relativeCommutant\|IsIrreducibleInclusion"` + across the rest of `Physicslib4/AQFT/HaagKastler/*.lean` finds no use outside + `LocalVonNeumann.lean` itself. Meanwhile `GeometricCovariance.lean` (geometric + covariance of the von Neumann net, orbit-invariance of factoriality, the vN + isomorphism theorem — blueprint's `thrm:von-neumann-geometric-covariance` + onward) independently re-defines its *own* `covLocalOperators`/ + `covLocalVonNeumann` against `C.quasilocal` (the algebra that states, GNS, + purity and KMS are all actually stated against). So the blueprint presents one + coherent "local von Neumann algebra of the net" object, but the Lean has two + non-communicating constructions of it over two possibly-different ambient + algebras, and the one that all the state/GNS/purity/KMS machinery is built on + (`quasilocal`) is *not* the one Einstein causality, microcausality, statistical + independence and relative commutants are proved about (`commAlgebra`). +- Why this matters: a reader following the blueprint would take "Einstein + causality holds for the quasilocal algebra of the net" and "the GNS + representation of a state on the quasilocal algebra has commuting local von + Neumann algebras" to be facts about the *same* 𝔘. As formalized, the theorem + that's actually available is weaker: causality/microcausality/statistical + independence are proved for *an* ambient algebra satisfying Axiom 3, and it is + an open question in the repository whether the canonical `quasilocal` algebra + used everywhere else is one such algebra. +- Classification: **Lean concludes less** (Einstein causality, microcausality, + statistical independence, relative-commutant results) / **different objects** + (two independent `covLocalVonNeumann`-style constructions). +- Blueprint acknowledgment: line 383 of the tex claims "There is no longer any + discrepancy between this blueprint's formalization markings and the Lean" — + this claim is about `\lean`/`\leanok` tags resolving to real declarations + (which is true), not about the two witnesses coinciding, so it should not be + read as covering this gap, and the gap is not stated anywhere else in the tex. +- Suggested fix (propose only): either (a) prove + `N.commAlgebra ≅⋆ₐ N.quasilocal` (or more precisely, that Local Commutativity + can always be witnessed by the canonical `quasilocal` algebra, i.e. restate + `LocalCommutativity` as commutation specifically in `N.quasilocal`, dropping the + existential over the ambient algebra — the `LocalCommutativity.lean` docstring + already gestures at this: "the existential above may be witnessed by that + canonical algebra"), or (b) add an explicit blueprint restriction/note that + Einstein causality and the local-von-Neumann-algebra results are about *an* + algebra witnessing Axiom 3 and not proven to transport to the canonical + quasilocal algebra used elsewhere. + +### Medium + +**M1 — The bounded-generator restriction on the spectrum condition does not use +the project's `Restriction:` marker, despite CLAUDE.md naming this file as the +example to convert.** + +- Location: `Physicslib4/AQFT/PositiveEnergy.lean:14-21,45-47` and + `Physicslib4/AQFT/HaagKastler/VacuumState.lean:18-28`. +- Problem: `.claude/CLAUDE.md` states: "Record a deliberate restriction in the + docstring of the declaration, on a line starting `**Restriction:**`... Example + to convert: the positive-energy docstring in + `Physicslib4/AQFT/HaagKastler/VacuumState.lean` (bounded generators until + Stone's theorem is available)." Both files clearly *describe* the restriction + in prose ("requiring `P` bounded is a genuine restriction... the faithful + unbounded form needs Stone's theorem... which Mathlib does not yet provide") + but neither uses a line beginning `**Restriction:**`. `grep -rln + 'Restriction:'` across the whole `Physicslib4/AQFT` tree finds only + `StrongDensity.lean` (which does follow the convention correctly, and is a + useful positive contrast). Automated restriction audits/greps (as this very + audit's §3 instructions describe) will silently miss the positive-energy / + vacuum-state restriction as a result, and the conversion CLAUDE.md explicitly + calls for has not happened. +- Classification: hygiene (unrecorded restriction, marker convention not + followed) — verified by grep and by reading both files. +- Suggested fix (propose only): add a line starting `**Restriction:**` to the + docstrings of `IsPositiveEnergy` (`PositiveEnergy.lean`) and + `CovariantQuasilocalAlgebra.IsVacuumState`/`IsVacuumStateConcrete` + (`VacuumState.lean`), naming the bounded-generator restriction and what it is + waiting on (Stone's theorem / unbounded self-adjoint operators), matching the + `StrongDensity.lean` example. + +### Low + +**L1 — Blueprint's own Axiom 5 text still uses strict inclusion `⊂`, which Axiom +2's own commentary says was a mistake.** + +- Location: blueprint `haag-kastler-axioms.tex:590` ("for basis elements + $\mathbf{B}_\iota \subset \mathbf{B}_\kappa$ ... $\alpha_L$ commutes with $i$"), + vs. `haag-kastler-axioms.tex:43` (Axiom 2's own remark: "Earlier versions of + this statement wrote $\subset$; that was a divergence from the Lean, and the + non-strict form is the correct one... the strict reading would leave the + diagonal of the inclusion order outside the axiom altogether"). The Lean + (`LorentzCovariance.lean:358-388`, condition (3)) quantifies over non-strict + `B₁ ⊆ B₂`, consistent with Axiom 2's stated correction and with the Lean, not + with Axiom 5's own prose. +- Problem: this is the identical `⊂`-vs-`⊆` mistake that Axiom 2's commentary + explicitly flags and corrects, reappearing uncorrected in Axiom 5's own + statement three definitions later. It does not affect soundness (the Lean + proves the stronger, correct statement over `⊆`, and a strict-inclusion + reading is implied by it), but it is an internal inconsistency in the + blueprint's own conventions, of exactly the kind Axiom 2 warns readers about. +- Classification: **notation only** (blueprint prose vs. Lean); also a + blueprint-math inconsistency (see below). +- Suggested fix (propose only): change `\subset` to `\subseteq` at line 590, + matching the correction already made to Axiom 2. + +**L2 — `nolint` usage is isolated and justified; no action needed.** + +- Location: `Physicslib4/Analysis/CStarCompletion.lean:84`, + `@[nolint unusedArguments]` on `abbrev CStarCompletion`. +- The preceding docstring (lines 70-83) explicitly explains why two of the five + listed hypotheses (`StarModule ℂ A`, `CStarRing A`) are unused by the + abbreviation's right-hand side but kept anyway (naming the blueprint's + "standing hypotheses" node faithfully), and why the lint is suppressed rather + than the hypotheses dropped. This is a justified `nolint`, not a + commit-gate workaround. Recorded for completeness, not as a finding requiring + a fix. + +## Blueprint-math issues + +- **B1 (= L1 above).** Axiom 5's statement (line 590) contradicts Axiom 2's own + correction regarding strict vs. non-strict inclusion; the blueprint should be + internally consistent about this convention it explicitly cares about. +- **B2.** The tex's claim at line 383 ("There is no longer any discrepancy + between this blueprint's formalization markings and the Lean") is true only + in the narrow sense that `\lean`/`\leanok` tags resolve; it should not be read + (and shouldn't be phrased in a way that invites being read) as covering the + `commAlgebra`/`quasilocal` gap described in **H1**, which the surrounding prose + does not address at all. +- No other proof gaps or incorrect derivations were found in the tex prose read + during this review (the colimit/completion chain, Axioms 1–5, the bridge + principle discussion, and the von Neumann algebra sections read as + mathematically sound modulo B1/B2 and the disclosed non-formalization of the + von Neumann density theorem at `thrm:quasilocal-strongly-dense`, which is + correctly *not* marked `\leanok` on its proof block even though the theorem + statement is). + +## Hygiene summary (verified by grep, not by `lake build`) + +- `sorry`/`admit`/`native_decide`/`skipKernelTC`/`implemented_by`: exactly one + hit in scope, `Physicslib4/AQFT/HaagKastler/StrongDensity.lean:74` + (`dense_range_in_bicommutant`). This is the known, already-disclosed von + Neumann density theorem gap; it carries a correct `**Restriction:**` line + (line 57) and the blueprint correctly declines to mark the *proof* block + `\leanok` (only the *statement* is `\leanok`, at line 553) — this is the one + place in the file that models the marker convention correctly and can be used + as the template for fixing M1. +- Bare `axiom` declarations in scope: none. +- `nolint`: one use (see L2), justified. +- `Restriction:` marker: one use (`StrongDensity.lean`); two more restrictions + exist in prose without the marker (M1). + +## Classification counts (items audited in depth: 12) + +- match: 7 (`def:local-algebras`/`LocalNet`, `def:isotony`/`Isotony`, + `def:quasilocal-completeness`/`ObservableCorrespondence`, + `def:haag-kastler-net`/`HaagKastlerNet`, `def:quasilocal-algebra`/ + `QuasilocalAlgebra`, `def:local-commutativity`/`LocalCommutativity` taken on + its own literal terms, `thrm:quasilocal-strongly-dense`'s statement (the + proof is honestly unclaimed)) +- notation only: 1 (`def:lorentz-covariance`, the `⊂`/`⊆` prose slip, L1/B1) +- Lean assumes more: 1 (`def:positive-energy` / `IsVacuumState`, bounded + generator vs. the intended unbounded one — a disclosed, intentional + restriction, flagged for marker hygiene in M1 rather than as a faithfulness + defect) +- Lean concludes less: 2 (`thrm:einstein-causality`; the + `def:local-von-neumann` family) — both are the single root cause in H1 +- different objects: 1 (the `commAlgebra`-based `LocalVonNeumann.lean` bicommutant + vs. the `quasilocal`-based `GeometricCovariance.lean` bicommutant — the other + face of H1) +- edge cases differ: 0 +- can't determine: 0 + +154 further `\lean{}`-cited items in the file were spot-checked only for link +integrity (all 193 total identifiers resolve to real declarations; see Method) +and for `sorry`/`axiom`/`nolint` hygiene, not translated statement-by-statement +against the tex. + +## What was verified by tool vs. by reading + +- Verified by grep/tool: existence of all 193 `\lean{}`-cited declarations + (with manual correction of ~26 automated false negatives caused by dotted + Lean namespace declarations); absence of `sorry`/`admit`/`native_decide`/ + `skipKernelTC`/`implemented_by`/bare `axiom` outside `StrongDensity.lean`; + the single `nolint` site and its justifying comment; the single correctly-used + `Restriction:` marker and the absence of the marker in `PositiveEnergy.lean`/ + `VacuumState.lean`; the absence of any use of `localVonNeumann`/ + `localOperators`/`relativeCommutant`/`IsIrreducibleInclosure` outside + `LocalVonNeumann.lean` (supporting H1). +- Judged by reading: the mathematical translation of each Lean declaration for + Axioms 1–5, `HaagKastlerNet`, `QuasilocalAlgebra`, Einstein causality and the + local-von-Neumann-algebra chain against the corresponding blueprint prose (the + statement-audit comparisons and H1/L1/B1/B2 above); no `lean_verify`, + `lake build`, or `lean_guard.py verify` was run (read-only bash only), so + kernel-level axiom/proof-completeness claims rest on the grep sweep above, not + on a fresh build. diff --git a/notes/agents/review-2026-09-sec10.6.md b/notes/agents/review-2026-09-sec10.6.md new file mode 100644 index 0000000..27149e7 --- /dev/null +++ b/notes/agents/review-2026-09-sec10.6.md @@ -0,0 +1,330 @@ +# Audit: blueprint §10.6 "Haag-Kastler Axioms in Curved Spacetime" + +Date: 2026-09-25 +Scope: `blueprint/src/sections/sec10/haag-kastler-axioms-in-curved-spacetime.tex` +(all nodes, `def:local-algebras-in-curved-spacetime` through +`def:ground-state-for-flow-in-curved-spacetime`), and the Lean it cites: +`Physicslib4/AQFT/HaagKastlerCurved/{LocalAlgebras, Isotony, LocalCommutativity, +LocalAlgebra, IsometricCovariance, Net, EinsteinCausality, LocalVonNeumann, +Concrete, GeometricCovariance, Purity, CovariantState, StabilizerAction, +StabilizerKMS, Spacetime}.lean`, plus the `Physicslib4.Spacetime.*` bridge +declarations these touch (`LorentzianSpacetime.toAbstract`, `Isometry`, +`CausalComplement`) and `Physicslib4.AQFT.PositiveEnergy`. + +Read-only review. No `.lean`/`.tex` files were modified. +`notes/agents/review-2026-09-sec10.1-10.7.md` (§10.1/§10.7) and +`notes/agents/review-2026-09-sec10.4.md` (§10.4, spacetime) were read first; +their findings (the un-marked `IsGeodesic := True` restriction, the +`gns_construction`/`gns_unique` tagging gap) are not repeated here except +where they interact with §10.6 material. + +## Method + +Tool-verified: +- All 64 distinct `\lean{...}` names in this file resolve against + `blueprint/lean_decls` (0 missing). +- `lake env lean` + `#print axioms` on five sampled theorems spanning + geometric covariance, the Killing-flow KMS thermal representation, the + purity/irreducibility equivalence, and the trivial-net satisfiability + witnesses (`lieConj_image_localVonNeumann`, + `IsKMSStateForFlow.exists_gns_unitary_strongContinuous`, + `exists_gns_pure_iff_irreducible`, `trivialHaagKastlerNet`, + `nonempty_haagKastlerNet`) — all five report exactly `[propext, + Classical.choice, Quot.sound]`. +- `grep` for `sorry`, `admit`, `native_decide`, `debug.skipKernelTC`, + `implemented_by`, `nolint`, `axiom`, `Restriction:` across + `Physicslib4/AQFT/HaagKastlerCurved/*.lean`: no hits for any of these + except the English word "axiom" in two docstrings (not a declaration). + In particular **no `Restriction:` marker exists anywhere in this + directory**, despite there being a restriction that needs one (see + Medium-1). +- `git log --since -- Physicslib4/AQFT/HaagKastlerCurved + blueprint/src/.../haag-kastler-axioms-in-curved-spacetime.tex`: empty. The + last commit touching any file in scope is `ac97898` + (2026-09-06T00:05:20Z), before the recorded `verify-receipt.json` + (`lake build` + `lake lint`, both exit 0, 2026-09-18T14:08:28Z), so the + receipt is current for this section. +- `.git/lean-kit/approvals.json` does not exist — no approvals in effect to + review. + +Judged by reading: the statement-audit table below, all "match" +classifications, and the two structural findings (High-1, Medium-2) — these +were established by reading the blueprint's own prose (including its +unusually candid paragraphs about what Axioms 2/3 "used to" do) against the +Lean definitions side by side, and by tracing which Lean declaration each +downstream theorem actually invokes (`N.commIsotony` = Axiom 2's family vs. +the `ι` bound inside `IsometricCovariance`). + +## Findings + +### High + +**H-1. Axiom 5 (`IsometricCovariance`) still has the exact defect the +blueprint says it fixed for Axiom 3: it existentially quantifies its own, +private isotony family, disconnected from Axiom 2's actual chosen family.** + +- Blueprint text for Axiom 5 (`def:isometric-covariance-in-curved-spacetime`, + `haag-kastler-axioms-in-curved-spacetime.tex:93-126`), clause (3): "for + Alexandrov topology basis elements $\mathbf{B}_\iota \subset + \mathbf{B}_\kappa$ and the unital $*$-monomorphism $i$ **of Axiom 2 + (Isotony)** $\alpha_\varphi$ commutes with $i$" — i.e. the blueprint reads + clause (3) as referring to the *same* `i` that Axiom 2 supplies. +- Lean, `Physicslib4/AQFT/HaagKastlerCurved/IsometricCovariance.lean:78-108`: + `IsometricCovariance` is + ``` + def IsometricCovariance (U : LocalNet M) : Prop := + ∃ (α : ...) (ι : ∀ ⦃B₁ B₂⦄, M.IsBasisSet B₁ → M.IsBasisSet B₂ → B₁ ⊆ B₂ → + StarAlgHom ℂ (U.algebra B₁) (U.algebra B₂)), + (... injective ι ...) ∧ (... α 1 = id ...) ∧ (... α composes ...) ∧ + (∀ φ ... , α φ B₂ (ι hB₁ hB₂ h a) = ι hφB₁ hφB₂ hφ (α φ B₁ a)) + ``` + — the `ι` that clause (3) commutes with is bound *inside* `Exists`, chosen + independently of the net's actual `Isotony` structure. The module docstring + at lines 65-70 confirms this reading explicitly: "for every inclusion + `B₁ ⊆ B₂` ..., **a choice of isotony `*`-monomorphism** + `ι B₁ B₂ : U.algebra B₁ →⋆ₐ[ℂ] U.algebra B₂`". +- `HaagKastlerNet` (`Net.lean:51-68`) bundles `isotony : Isotony U` (Axiom 2) + and `isometricCovariance : IsometricCovariance U` (Axiom 5) as two + *separate* fields; nothing forces `isometricCovariance`'s internal `ι` to + equal `isotony.map`, and `Net.lean` never even projects out that + component of the existential witness (only the `α` component is exposed, + as `covEquiv`, `Net.lean:109-111`). Axiom 5's own promise "commutes with + isotony" is therefore not usable against the net's real isotony family + `commIsotony` at all — nothing connects the two. +- This is *exactly* the anti-pattern the blueprint spends two long remarks + (`tex:45`, `tex:66`) explaining it eliminated from Axiom 3: "It previously + introduced its own family of isotony embeddings existentially ... and it + was those chosen witnesses --- not the Axiom 2 maps --- that every + downstream result actually used ... The family and its injectivity now + belong to Axiom 2." The identical bug is present, unremarked, in Axiom 5. +- The consequence is visible and *is* worked around, but silently, one theorem + downstream: `GeometricCovariance.lean:47-60` (`lieConj_image_localOperators`, + cited as `thrm:von-neumann-geometric-covariance-in-curved-spacetime`) has to + take an extra explicit hypothesis + ``` + (hcompat : ∀ a : N.algebra B₁, + N.stabAutHom B g (N.commIsotony hB₁ hB h₁ a) + = N.commIsotony hgB₁ hB h₁' (N.covEquiv (g : M.Isom) B₁ a)) + ``` + relating `stabAutHom` (built from Axiom 5's `α`) to `commIsotony` (Axiom + 2's real family) — precisely the kind of per-site "coherence" hypothesis + the blueprint's Axiom-2/3 rewrite was designed to make unnecessary + "throughout this chapter" (`tex:66`). The blueprint text for *this specific + theorem* (`tex:281`) does flag `hcompat` as an added hypothesis ("neither + basis-set preservation ... nor the coherence relating the stabilizer action + ... to the chosen isotony embeddings ... both enter as explicit + hypotheses"), so that one downstream use is honestly disclosed. What is not + disclosed anywhere is *why* the hypothesis is needed: it is needed because + Axiom 5 itself, as formalized, does not actually assert commutation with + Axiom 2's isotony family, contrary to what its own blueprint statement says. +- Classification: **Lean concludes less** for `def:isometric-covariance-in-curved-spacetime` + itself (it asserts "there exists *some* coherent isotony-commuting structure" + rather than "the covariance commutes with the net's chosen isotony `i`"), + which then forces **Lean assumes more** (`hcompat`) at + `thrm:von-neumann-geometric-covariance-in-curved-spacetime`, `def:stabilizer-action-in-curved-spacetime`, + and every later theorem built on `stabAut`/`stabAutHom` + (`lmm:stabilizer-action-laws-in-curved-spacetime` through + `thrm:kms-thermal-representation-in-curved-spacetime`) inherit an Axiom 5 + that is weaker than advertised, although none of those specific downstream + statements happen to need the isotony-commutation clause of Axiom 5, so the + practical blast radius is currently limited to the `GeometricCovariance.lean` + family (`lieConj_image_localOperators/_localVonNeumann/_localVonNeumannAlgebra`, + `localVonNeumann_isFactor_smul`, `localVonNeumannEquiv`). +- *Suggested fix (report only)*: change `IsometricCovariance` to take + `Isotony U` as a parameter (as `LocalCommutativity` now does) and state + clause (3) against `i.map` directly, dropping the internal existential + `ι`. This mirrors the fix already applied to Axiom 3 and would let + `hcompat` in `GeometricCovariance.lean` be discharged from Axiom 5 itself + rather than assumed anew. + +### Medium + +**M-1. `IsPositiveEnergy`'s bounded-generator restriction — consumed by +`def:ground-state-for-flow-in-curved-spacetime`, in scope — is explained in +prose but never carries the project's `**Restriction:**` marker, even though +`CLAUDE.md` names this exact restriction as the one to convert.** + +- `CLAUDE.md`: "Record a deliberate restriction in the docstring of the + declaration, on a line starting `**Restriction:**` ... Example to convert: + the positive-energy docstring in + `Physicslib4/AQFT/HaagKastler/VacuumState.lean` (bounded generators until + Stone's theorem is available)." +- The shared definition actually used here, + `Physicslib4/AQFT/PositiveEnergy.lean:39-46` (`IsPositiveEnergy`), explains + the same restriction in prose ("The generator of a physical translation is + unbounded, so requiring `P` bounded is a restriction; the faithful + unbounded form needs Stone's theorem ... absent from Mathlib") but has no + line starting `**Restriction:**`. Neither does + `Physicslib4/AQFT/HaagKastler/VacuumState.lean` (confirmed by grep — the + conversion CLAUDE.md asks for has not happened). +- Blueprint `def:ground-state-for-flow-in-curved-spacetime` + (`tex:688-695`) is honest about the same gap in its own prose: "The + positive-energy condition is the bounded-generator scaffold; the faithful + unbounded form is Stone-gated" — but this restriction is likewise not + flagged in a way this audit's own §3 marker-grep would find (there is no + restriction-marker convention on the *blueprint* side either). +- Grep confirms: zero occurrences of `Restriction:` anywhere in + `Physicslib4/AQFT/HaagKastlerCurved/` or `Physicslib4/AQFT/PositiveEnergy.lean`. + This restriction is otherwise well-documented in prose at every site + (`PositiveEnergy.lean`, `StabilizerKMS.lean:137-145`, blueprint `tex:694`), + so this is a marker-convention gap, not a hidden one — but it means an + automated restriction sweep (the one this audit's §3 procedure specifies) + finds nothing here. +- *Suggested fix*: add a `**Restriction:**` line to `IsPositiveEnergy`'s + docstring (`PositiveEnergy.lean:39`), e.g. "**Restriction:** the generator + `P` is required bounded until Stone's theorem and unbounded self-adjoint + operators are available in Mathlib; the intended condition is positivity + of the (possibly unbounded) self-adjoint generator of `V`." This single + fix would also close the parallel gap already flagged for + `VacuumState.lean` in `CLAUDE.md`. + +**M-2. `LocalCommutativity.lean`'s module docstring is stale: it still +describes Axiom 3 in its pre-fix, existentially-quantified form, even though +the actual declaration (correctly) takes the Axiom 2 family as an explicit +parameter.** + +- `Physicslib4/AQFT/HaagKastlerCurved/LocalCommutativity.lean:40-46` + (docstring immediately above `LocalCommutativity`): "A local net `U` ... + satisfies *local commutativity* if **there is a coherent family of isotony + `*`-monomorphisms** `ι : 𝔘(B₁) ↪ 𝔘(B₂)` ... such that ...". This describes + an existential (`∃ ι, ...`). +- The actual declaration, three lines below + (`LocalCommutativity.lean:69-75`): + ``` + def LocalCommutativity (U : LocalNet M) (i : Isotony U) : Prop := + ∀ ⦃B₁ B₂ B⦄ ..., Commute (i.map hB₁ hB h₁ a) (i.map hB₂ hB h₂ b) + ``` + `i` is a *parameter*, supplied by the caller (in practice, the net's own + `isotony` field via `HaagKastlerNet.localCommutativity : LocalCommutativity + U isotony`, `Net.lean:58-62`) — not bound inside `LocalCommutativity` + itself. `Net.lean:58-62`'s own docstring gets this right: "This *consumes* + the Axiom 2 family rather than introducing its own." + The file-level docstring (`LocalCommutativity.lean:30-46`, both the module + doc and the declaration doc) is a leftover from before the Axiom 2/3 + rewrite the blueprint prose describes, and was not updated to match. +- This is purely a documentation staleness issue (the code and the blueprint + agree; only the Lean docstring lags), but it is the kind of drift that + could mislead a reader auditing exactly this axiom for exactly the defect + found in H-1. +- *Suggested fix*: reword `LocalCommutativity.lean:40-46` to describe `i` as + a hypothesis/parameter rather than an existentially-chosen family, matching + `Net.lean:58-62`'s phrasing. + +### Low + +**L-1. `Concrete.lean`'s `toAbstract` bridge instantiates Axiom 5's `Isom` +with the *full* isometry group, not the identity-component subgroup the +blueprint's Axiom 5 quantifies over; this is flagged in the Lean docstring +but not cross-referenced from the blueprint.** + +- Blueprint Axiom 5 (`tex:93-94`): "A member $\varphi$ of the group of + isometries of $M$ **connected to the identity**." +- `Physicslib4/AQFT/HaagKastlerCurved/Concrete.lean:65-72`: + `LorentzianSpacetime.toAbstract` sets `Isom := Isometry L.toSpacetime` (the + *full* isometry group), with the identity-component restriction deferred to + a sibling bridge `toAbstractIdentityComponent` + (`IdentityComponent.lean`, cited by `sec10/spacetime.tex`, outside this + file's `\lean{}` list but reachable from it). The Lean docstring + (`Concrete.lean:40-51`) discloses this honestly ("this full-group bridge is + retained for the axioms that hold under the whole isometry group"), so this + is not a hidden gap for a reader of the Lean source. Using the full group is + a strictly *stronger* hypothesis on the net (harder to satisfy, not a + vacuous widening), so no theorem is falsified by it. +- Not a defect in itself — `Concrete.lean` is cited by this section only for + `thrm:additive-free-locality-in-curved-spacetime` + (`commute_of_spacelike_mono_geometric`, + `localVonNeumannAlgebra_le_commutant_of_subset_spacelikeComplement_geometric`), + neither of which touches `Isom`/Axiom 5 at all — but a reader following + `\uses{def:isometric-covariance-in-curved-spacetime}` through this file to + find "the" concrete instantiation of Axiom 5 would land on the wrong + bridge. *Suggested fix*: none required in Lean; if a concrete Axiom-5 net is + ever added to this blueprint section, cite `toAbstractIdentityComponent` + explicitly rather than `toAbstract`. + +## Statement audit (classification table) + +All `\lean{}`-tagged nodes in this section were checked. Only non-matches are +detailed above (H-1); everything else classifies as **match**: + +| Blueprint node | Lean | Classification | +|---|---|---| +| `def:local-algebras-in-curved-spacetime` | `LocalNet` | match | +| `def:isotony-in-curved-spacetime` | `Isotony` | match (blueprint text was itself amended to match the `⊆`/composition-law Lean; both now agree) | +| `def:local-commutativity-in-curved-spacetime` | `LocalCommutativity` | match (code correct; see M-2 for a stale docstring) | +| `def:local-observable` | `IsLocalObservable` | match | +| `def:local-completeness-in-curved-spacetime` | `LocalAlgebra` | match | +| `def:isometric-covariance-in-curved-spacetime` | `IsometricCovariance` | **Lean concludes less** — see H-1 | +| `def:haag-kastler-net-in-curved-spacetime` | `HaagKastlerNet` | match (bundling is faithful; inherits H-1) | +| `thrm:einstein-causality-in-curved-spacetime` | `einstein_causality`, `exists_gns_einstein_causality` | match | +| `def:local-von-neumann-in-curved-spacetime`, `def:local-von-neumann-algebra-in-curved-spacetime` | `localOperators`, `localVonNeumann`, `localVonNeumannAlgebra` | match | +| `thrm:von-neumann-microcausality-in-curved-spacetime`, `thrm:von-neumann-isotony-in-curved-spacetime`, `thrm:von-neumann-bundled-order-in-curved-spacetime` | `localVonNeumann_subset_centralizer`, `localVonNeumann_mono`, bundled variants | match | +| `def:von-neumann-net-in-curved-spacetime` | `vonNeumannNet` | match | +| `thrm:statistical-independence-in-curved-spacetime`, bundled variant | `localVonNeumann_separating`, `eq_zero_of_commute_of_cyclic`, `localVonNeumannAlgebra_separating` | match | +| `thrm:additive-free-locality-in-curved-spacetime` | `..._geometric` (`Concrete.lean`) | match (see L-1 for an adjacent, non-cited nuance) | +| `thrm:von-neumann-geometric-covariance-in-curved-spacetime` and family | `lieConj_image_*`, `localVonNeumannEquiv`, `localVonNeumann_isFactor_smul` | match *as stated* (blueprint honestly discloses the `hcompat`/`hgB₁`/`h₁'` hypotheses); root cause is H-1 | +| `def:relative-commutant-in-curved-spacetime` and family (irreducible inclusion, center, abelian, center-duality) | `relativeCommutant`, `IsIrreducibleInclusion`, etc. | match | +| `thrm:pure-iff-extreme-in-curved-spacetime`, `thrm:pure-iff-irreducible-in-curved-spacetime`, `thrm:pure-factor-generates-in-curved-spacetime`, `thrm:irreducible-dichotomy-in-curved-spacetime`, `thrm:gns-covariance-local-in-curved-spacetime` | `Purity.lean` declarations | match | +| `def:covariant-state-family-in-curved-spacetime`, `lmm:covariant-state-family-compose-in-curved-spacetime` | `IsCovariantFamily`, `.comp` | match | +| `def:stabilizer-action-in-curved-spacetime`, `lmm:stabilizer-action-laws-in-curved-spacetime`, `thrm:gns-unitary-stabilizer-in-curved-spacetime` (+ strongly-continuous, irreducible-covariant, purity-invariant, GNS-covariance-stabilizer variants) | `StabilizerAction.lean` declarations | match | +| `def:flow-aut-in-curved-spacetime`, `lmm:one-parameter-aut-flow-in-curved-spacetime`, `def:kms-state-for-flow-in-curved-spacetime`, `thrm:kms-thermal-representation-in-curved-spacetime`, `thrm:kms-convex-for-flow-in-curved-spacetime` | `StabilizerKMS.lean` declarations | match | +| `def:ground-state-for-flow-in-curved-spacetime` | `IsGroundStateForFlow` (+ `.invariant`, `.exists_strongContinuous_unitary`) | match *as stated*; restriction-marker gap, see M-1 | + +**Counts**: match 27 (grouped rows above), Lean-concludes-less 1 (H-1), +notation-only 0, Lean-assumes-more 0 (as a *primary* classification; H-1's +downstream `hcompat` is a consequence, not a separately-mis-stated node), +different-objects 0, edge-cases-differ 0, can't-determine 0. + +## \lean{}/\leanok audit + +- 0 of 64 cited names missing from `blueprint/lean_decls` (tool-verified). +- Every `\leanok`-marked node checked has a Lean declaration with no `sorry` + and standard axioms (tool-verified on 5 samples spanning the file; the + full-directory grep for `sorry`/`admit`/etc. found none). `\leanok` is + honest throughout in the sense of "this compiles"; H-1 is a faithfulness + gap, not a `\leanok` integrity gap. +- `\uses{}` edges spot-checked for the highest-traffic nodes + (`def:haag-kastler-net-in-curved-spacetime`, + `thrm:von-neumann-geometric-covariance-in-curved-spacetime`, + `def:kms-state-for-flow-in-curved-spacetime`) all resolve to labels defined + earlier in the same file or in already-reviewed sections (`gns-construction-details.tex`, + `spacetime.tex`); no dangling `\ref`/`\uses` found. + +## Blueprint-math issues + +None found beyond H-1 (which is a Lean/blueprint faithfulness gap, not a +blueprint-math gap: the blueprint's own mathematical prose for Axiom 5 is +internally consistent and matches the *stated intent*; it is the Lean +formalization that falls short of it). The blueprint's self-critical +remarks about the Axiom 2/3 rewrite (`tex:43-46`, `tex:66`, `tex:226-228`) +are accurate against the current Lean and were independently re-verified by +reading `Net.lean`, `Isotony.lean`, `LocalCommutativity.lean`, and +`LocalVonNeumann.lean`. No incorrect proof sketches or convention +inconsistencies were found in the informal text. + +## Mathlib duplication + +None found. `localVonNeumann`/`localVonNeumannAlgebra` correctly reuse +`Set.centralizer`, `VonNeumannAlgebra`, and the shared +`vonNeumannOfSelfAdjoint`/`Set.centralizer_centralizer_centralizer` machinery +rather than reimplementing bicommutant theory; `relativeCommutant` is built +by hand only because (as the blueprint itself notes, `tex:326`) Mathlib's +`VonNeumannAlgebra` carries no lattice meet, which is a genuine gap rather +than avoidable duplication. + +## Summary counts + +- Statement-audit nodes: 27 match-groups (all directly-tagged declarations + matched their blueprint prose except one), 1 Lean-concludes-less (H-1). +- Findings: 1 High (H-1), 2 Medium (M-1, M-2), 1 Low (L-1). +- `\lean{}` link integrity: 64/64 resolve; 0 dangling. +- Lean hygiene: 0 `sorry`/`admit`/`native_decide`/`debug.skipKernelTC`/ + `implemented_by`/`nolint`/`axiom` in scope; 0 `Restriction:` markers in + scope despite one restriction (M-1) that needs one. +- Tool-verified: `\lean{}` name resolution (script against + `blueprint/lean_decls`), axiom-cleanliness on 5 sampled theorems (`lake env + lean` + `#print axioms`), hygiene greps, verify-receipt currency via `git + log --since`, absence of approvals. +- Judged by reading: H-1's structural diagnosis (tracing `commIsotony` vs. + the `ι` bound inside `IsometricCovariance` through `Net.lean` and + `GeometricCovariance.lean`), M-2's docstring/code mismatch, L-1, and the + blueprint-math and Mathlib-duplication sections. diff --git a/notes/agents/scout/isgeodesic-christoffel-2026-09-29.md b/notes/agents/scout/isgeodesic-christoffel-2026-09-29.md new file mode 100644 index 0000000..c82d84b --- /dev/null +++ b/notes/agents/scout/isgeodesic-christoffel-2026-09-29.md @@ -0,0 +1,298 @@ +# Scout memo: giving `IsGeodesic` real content via chart Christoffel symbols + +Status: COMPLETE (read-only research; no `.lean`/`.tex` edited) + +## Target + +Can `Physicslib4.Spacetime.IsGeodesic` (placeholder `:= True`, +`Physicslib4/Spacetime/Causality.lean:66-82`, with a `**Restriction:**` +docstring) be given real content via chart Christoffel symbols of the +Lorentzian metric, **without new dependencies**? Context: `qinz1yang/differential-geometry` +defines geodesics only for positive-definite `SmoothRiemannianMetric` via +chart Christoffel contractions and pins Lean v4.33.1 (this repo is v4.32.0), +so it cannot be imported; it is a model only. + +**Answer, short version:** Yes, chart-local Christoffel symbols and a chart +ODE definition are buildable from primitives already in Mathlib (matrix +inverse of a nondegenerate Gram matrix, `extChartAt`, `fderivWithin`, +`derivWithin`). It is a genuine, non-trivial `def` (blocked by policy for +agents; requires user approval), and it creates real downstream proof +obligations — see §4 — most of which are currently *vacuous* consequences of +`IsGeodesic = True` and would become real theorems needing an actual +differential-geometric argument (isometries preserve Christoffel symbols / +are affine). This is not a small refactor. + +## 1. Representation of the metric (`Physicslib4/Spacetime/Basic.lean`) + +`Spacetime` (`Physicslib4/Spacetime/Basic.lean:117-176`) bundles: +- `Carrier : Type*` with `TopologicalSpace`, `T2Space`, `ConnectedSpace`, + `ChartedSpace SpacetimeModel Carrier` where + `SpacetimeModel := EuclideanSpace ℝ (Fin 4)` (`Basic.lean:69`); +- `model : ModelWithCorners ℝ SpacetimeModel SpacetimeModel` (typically + `modelWithCornersSelf ℝ (EuclideanSpace ℝ (Fin 4))`, i.e. **boundaryless**, + so `extChartAt` targets all of `EuclideanSpace ℝ (Fin 4)` with no corner + cutting — good news for the ODE definition below); +- `isManifold : IsManifold model ∞ Carrier`; +- `val : ∀ x, TangentSpace model x →L[ℝ] TangentSpace model x →L[ℝ] ℝ`, the + metric as a family of continuous bilinear forms on tangent spaces (not + chart components — see below); +- `symm`, `nondegenerate` (`∀ w, val x v w = 0 → v = 0`, i.e. the + linear-algebra notion, not `Matrix.Nondegenerate` directly), `lorentzian` + (`LorentzianAt`, existence of a basis with Gram matrix `diag(-1,1,1,1)`, + `Basic.lean:76-88`); +- `contMDiff`: smoothness of `g` as a **bundle section** of continuous + bilinear forms on the tangent bundle (the same shape as + `Bundle.ContMDiffRiemannianMetric.contMDiff`), *not* stated chart-by-chart. + +**Chart-local components `g_ij(x)`.** Not directly a field; must be built: +`TangentSpace model x` for a boundaryless model with `E = H` is (definitionally, +via `Mathlib.Geometry.Manifold.VectorBundle.Tangent`) the fibre of the tangent +bundle, trivialized over `(chartAt H x).source` by +`trivializationAt E (TangentSpace I) x` (`.lake/packages/mathlib/Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean:206-234`), +with the standard-basis coordinate vectors of `EuclideanSpace ℝ (Fin 4)` +pulled back through this trivialization giving the chart frame `∂_i|_x`. Then +`g_ij(x) := val x (frame i) (frame j)`, a `Fin 4 → Fin 4 → ℝ`-valued function +of `x` in the chart. `ContMDiff.clm_bundle_apply₂` +(`.lake/packages/mathlib/Mathlib/Geometry/Manifold/VectorBundle/Hom.lean:445`) +is exactly the lemma the `Basic.lean` docstring cites to get smoothness of +`x ↦ g x (V x) (W x)` for smooth vector fields `V, W`; instantiating `V, W` +with the (smooth, since chart-constant-coefficient) frame fields gives +`ContMDiff` of each `g_ij` in the chart — this is the route to differentiate +the `g_ij` (needed for `∂_i g_jl` in Christoffel symbols). + +**Inverse metric `g^{ij}`.** Not a field, but easy to define pointwise: +`nondegenerate` + `symm` give a symmetric bilinear form on a 4-dimensional +space whose Gram matrix `M i j := val x (frame i) (frame j)` is +`Matrix.Nondegenerate` (via `Matrix.Nondegenerate.toMatrix'`, +`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/BilinearForm.lean:490`, +after transporting `val x` along `frame` to a form on `Fin 4 → ℝ`), hence +`Matrix.nondegenerate_iff_det_ne_zero` +(`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/Nondegenerate.lean:159`, +proved later in the same hierarchy) gives `M.det ≠ 0`, hence `M⁻¹` via +`Matrix.nonsing_inv` (`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean`) +is an honest two-sided inverse. So `g^{kl}(x) := M⁻¹ k l` is definable, no +new axioms, no new imports beyond what `Basic.lean`/`LorentzianAt` already +pull in (`Mathlib.LinearAlgebra.Matrix.BilinearForm` is already imported). + +## 2. Proposed definition + +``` +Γ (M : Spacetime) (x : M.Carrier) (hx : x ∈ (chartAt _ x).source) : + Fin 4 → Fin 4 → Fin 4 → ℝ := + fun k i j => (1/2) * ∑ l, + ginv M x k l * (∂_i (g M · j l) x + ∂_j (g M · i l) x - ∂_l (g M · i j) x) +``` +where `g M · j l : SpacetimeModel → ℝ` is the chart-component function of +§1 read in `extChartAt M.model x`-coordinates, and `∂_i F x` is the partial +derivative in direction `i`, i.e. `fderiv ℝ F (extChartAt M.model x x') (EuclideanSpace.single i 1)` +composed appropriately, or (cleaner) `derivWithin (fun t => F (update y i t)) univ (y i)`— +in practice this is best phrased via `fderivWithin ℝ (g-component) (extChartAt...).target` +and evaluated on the standard basis vectors, since `extChartAt` targets are +open subsets of `EuclideanSpace ℝ (Fin 4)` (`.lake/packages/mathlib/Mathlib/Geometry/Manifold/IsManifold/ExtChartAt.lean:454-477` +gives `extChartAt_source`, `extChartAt_target`). + +Then, for `μ : M.SmoothPath` with chart curve +`c := (extChartAt M.model (μ.toFun s₀)) ∘ μ.toFun` (well-defined near `s₀` +while `μ.toFun s ∈ (chartAt _ (μ.toFun s₀)).source`): + +``` +IsGeodesic (μ : M.SmoothPath) : Prop := + ∀ s ∈ μ.parameterSpace, ∀ k : Fin 4, + derivWithin (fun t => derivWithin (fun u => (c u) k) μ.parameterSpace t) + μ.parameterSpace s + + ∑ i, ∑ j, Γ M (μ.toFun s) k i j + * derivWithin (fun t => (c t) i) μ.parameterSpace s + * derivWithin (fun t => (c t) j) μ.parameterSpace s + = 0 +``` +i.e. `c'' + Γ(c)(c',c') = 0` component-wise, `derivWithin`/`derivWithin` +composed for the second derivative (`Mathlib.Analysis.Calculus.Deriv.Basic`, +already imported in `Curves.lean`; `UniqueDiffOn` needed for well-behaved +`derivWithin` is exactly `Path.uniqueDiffOn_parameterSpace`, already proved +in `Curves.lean:118-133`, so the analytic prerequisite is in hand). + +**"Every chart" vs "the preferred chart".** The natural definition quantifies +`∀` chart containing `μ.toFun s` (or equivalently, fixes `chartAt _ (μ.toFun s)`, +Mathlib's canonical choice, since `Spacetime` does not distinguish an atlas). +Because `Fin 4 → Fin 4 → Fin 4 → ℝ` Christoffel symbols are **not** tensorial +— they transform inhomogeneously under a chart change (the standard +"Γ' = J⁻¹ Γ (J,J) + J⁻¹ J''" transformation law) — the geodesic *equation* +`c'' + Γ(c',c') = 0` is chart-independent (a standard fact) but this needs +a **chart-change lemma** to prove: if `c₁ = φ₁ ∘ μ` and `c₂ = φ₂ ∘ μ` are the +representations in two overlapping charts, and `c₁` satisfies the ODE with +`Γ₁` computed from `g` in chart 1, then `c₂` satisfies the ODE with `Γ₂` +computed from `g` in chart 2. Without this lemma, "is a geodesic" is only +provably well-defined if stated with a fixed canonical chart +(`chartAt _ (μ.toFun s)`, Mathlib's choice) and the chart-independence is +then a **theorem to prove**, not built into the definition. Recommend: +define via `chartAt`/`extChartAt` at each point (so the definition typechecks +immediately, no existential over charts), and state chart-independence as a +separate lemma, `IsGeodesic_chart_change` or similar, proved once via the +Jacobian transformation law for `Γ` — this is itself a moderately-sized +differential-geometry lemma (the standard "Christoffel symbols transform as +a connection, not a tensor" computation) that Mathlib does not provide +(§3: no hits for `Christoffel`/`Connection`/`LeviCivita` under +`Mathlib/Geometry`). + +## 3. Relevant Mathlib API (verified by grep on `.lake/packages/mathlib/`, pinned to the repo's Mathlib for Lean v4.32.0) + +- `extChartAt` (def) and `extChartAt_coe`, `extChartAt_coe_symm`, + `extChartAt_source`, `extChartAt_target`: + `.lake/packages/mathlib/Mathlib/Geometry/Manifold/IsManifold/ExtChartAt.lean:454-480`. +- Tangent-bundle trivialization: `trivializationAt`, `trivializationAt_source/target/baseSet/apply/fst`, + `continuousLinearMapAt_trivializationAt_eq_core`, `symmL_trivializationAt_eq_core`, + `tangentBundleCore_coordChange_achart`: + `.lake/packages/mathlib/Mathlib/Geometry/Manifold/VectorBundle/Tangent.lean:86-282`. +- `ContMDiff.clm_bundle_apply`, `ContMDiff.clm_bundle_apply₂`: + `.lake/packages/mathlib/Mathlib/Geometry/Manifold/VectorBundle/Hom.lean:335,445` + (already the load-bearing lemma cited in `Basic.lean`'s own docstring for + extracting smoothness of `g(V,W)`). +- Matrix inverse of a nondegenerate Gram matrix: + `Matrix.Nondegenerate` (def), `Matrix.nondegenerate_iff_det_ne_zero` + (`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/Nondegenerate.lean:159`), + `BilinForm.Nondegenerate.toMatrix'` (`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/BilinearForm.lean:487-491`), + `Matrix.nonsing_inv` (`.lake/packages/mathlib/Mathlib/LinearAlgebra/Matrix/NonsingularInverse.lean`). +- Derivatives: `derivWithin`, `fderivWithin` (`Mathlib.Analysis.Calculus.Deriv.Basic`, + `Mathlib.Analysis.Calculus.FDeriv.Basic`), `UniqueDiffOn` — the project already + has `Path.uniqueDiffOn_parameterSpace` (`Physicslib4/Spacetime/Curves.lean:118-133`) + proving `UniqueDiffOn ℝ μ.parameterSpace`, the exact prerequisite for + well-behaved `derivWithin`/second-`derivWithin`. +- **No Christoffel/connection API in Mathlib**: `grep -rl "Christoffel\|LeviCivita\|Levi-Civita\|AffineConnection" .lake/packages/mathlib/Mathlib/` returns **no files**. The only Riemannian-adjacent material is + `.lake/packages/mathlib/Mathlib/Geometry/Manifold/Riemannian/` and + `Mathlib/Geometry/Manifold/VectorBundle/Riemannian.lean`, which define + `ContMDiffRiemannianMetric` (positive-definite, with `isVonNBounded`) and + no connection, curvature, or geodesic notion. This confirms the docstring's + claim and the premise of the question: any Christoffel/geodesic definition + here is genuinely new content, buildable only from the primitives above. + +## 4. Impact: what would need real proofs + +`grep -rn IsGeodesic` (excluding `.lake`) hits, besides the definition itself: + +- **`Causality.lean:108,153`** — `IsTrip`/`IsCausalTrip` segment predicates + include `M.IsGeodesic rep` as a conjunct. Currently vacuous; would become + a real constraint. *Difficulty: definitional, no proof burden by itself,* + but every downstream construction of a trip (e.g. straight lines in + Minkowski) must now *prove* the geodesic equation instead of getting it + for free. +- **`Minkowski.lean:670`** (`minkowskiForwardCone_subset_chronologicalFuture_standardMinkowski` + reverse-direction proof): builds the straight-line path + `s ↦ p + s•(q-p)` and currently discharges `IsGeodesic` for free + (`"IsGeodesic = True is automatic"`). With real content: need + `Γ = 0` for the flat Minkowski metric in the standard chart (since `g_ij` + is literally the constant matrix `lorentzSignature`, all `∂_i g_jl = 0`, + so `Γ ≡ 0` and `c'' = 0` for a straight line — an easy but nonzero proof, + needs the constant-metric computation). *Difficulty: low–moderate* + (mostly bookkeeping: showing `derivWithin` of an affine function is + constant hence its `derivWithin` again is `0`, and `Γ = 0` from + `contMDiff_const`/`fderiv_const`). +- **`IsometryCausality.lean`** (`pushforwardPath_isTimelike/isCausal/...`, + `segmentPrecedes_pushforward`, `chronologicallyPrecedes_pushforward`, + `chronologicalFuture_image[_subset]`, `chronologicalPast_image[_subset]`, + `alexandrovBasis_image*`) and **`CrossMetricIsometry.lean`** + (`CrossIsometry.chronologicallyPrecedes`, `chronologicalFuture_image`, + `chronologicalPast_image`, `pullback_alexandrovBasis_*`) — these prove that + isometries (resp. cross-metric isometries between two spacetimes) carry + trips to trips, hence `≪`/`≺` forward, hence chronological/causal + futures/pasts and Alexandrov-topology basis sets forward. Every one of + these currently gets the geodesic conjunct for free. With real content, + each needs: **isometries send geodesics to geodesics.** This is the + standard fact that an isometry (metric-preserving diffeomorphism, exactly + `Isometry.preserves : ∀ x v w, val (φ x) (dφ v) (dφ w) = val x v w`, + `Physicslib4/Spacetime/Isometry.lean:62-67`) pulls back the Christoffel + symbols computed from `g` to the Christoffel symbols of the pulled-back + chart — i.e. isometries are *affine* maps of the (unique, torsion-free, + metric-compatible) connection determined by `g`. **This is a real, + moderately hard differential-geometry lemma with no Mathlib support** + (no connections, no naturality-of-Levi-Civita-under-isometry lemma + exists anywhere in Mathlib) — it must be proved from scratch by chasing + the definition of `Γ` through the chain rule for `g` in the pushed-forward + chart, using exactly the `mfderivWithin_comp_diffeo`/chain-rule machinery + already built in `IsometryCausality.lean:48-58`, generalized to second + derivatives. *Difficulty: high* — this is the crux of the whole + refactor's added proof burden, and it must be done once (as a general + "isometries preserve `Γ`" or "isometries preserve `IsGeodesic`" lemma) and + then threaded through every one of the ~10 downstream theorems listed + above. +- **`LorentzCausality.lean`** (`lorentzPath_isCausal/isFutureOriented/...`, + `causallyPrecedes_smul[_iff]`, `chronologicallyPrecedes_smul[_iff]`, + `isCompletelySpacelike_smul[_iff]`) — same shape as `IsometryCausality.lean` + but specialized to the (linear, hence trivially affine) action of the + inhomogeneous Lorentz group on `StandardMinkowskiSpacetime`. Since Lorentz + transformations are affine and `Γ ≡ 0` on flat Minkowski in the standard + chart, these reduce to the same "linear map ⇒ preserves `c'' = 0`" style + argument as the `Minkowski.lean` case. *Difficulty: low–moderate*, can + likely reuse the general isometry lemma once proved, or be done directly + and more easily since `Γ ≡ 0`. +- **Blueprint**: `grep -c "Formalization note" blueprint/src/sections/sec10/spacetime.tex` → **57** occurrences of the boilerplate + "this statement rests on ... IsGeodesic is True ..." formalization note + (lines 341, 358, 370, 387, ... through 982), one narrative remark + (line 341) plus 56 repeated per-theorem notes. All 57 could be retired + (deleted, since the geodesic clause would then be faithful) once + `IsGeodesic` carries real content and the downstream theorems above are + reproved with it. + +## 5. Recommendation and staged plan + +**Recommendation: yes, worth doing, but budget for the isometry-invariance +lemma as the dominant cost, not the definition itself.** The definition is +mechanically buildable today from Mathlib primitives with zero new imports +(§1–2), which answers the literal question affirmatively. The real work, +and the reason to stage this, is §4: every existing "isometries/Lorentz +transformations preserve trips" theorem currently gets its geodesic conjunct +for free and will need a genuine differential-geometric argument once +`IsGeodesic` is real. + +Staged plan: +1. **Definition-only PR** (needs user approval — `def` is a blocked new + declaration for agents per `.claude/lean-policy.json`): add + `christoffelSymbols`/`Γ` and the real `IsGeodesic`, chart-fixed at + `chartAt _ (μ.toFun s)` (§2), *without* touching any of the downstream + files in §4 yet. This alone breaks nothing structurally since `IsTrip` + would now require the new hypothesis, but no theorem currently proves + `IsTrip`/`IsCausalTrip` except via the `IsGeodesic = True` shortcut — so + every existing trip-producing proof (Minkowski straight lines, + pushforwards) breaks and must be patched in the same PR or immediately + after. +2. **Discharge the flat-Minkowski case** (`Minkowski.lean`, + `LorentzCausality.lean`): show `Γ ≡ 0` for the constant Lorentzian metric + in the standard chart, then straight lines and their Lorentz-linear + images are geodesics for free (`c'' = 0` for affine `c`). Low-to-moderate + difficulty; unblocks the largest fraction of the 57 blueprint notes. +3. **Prove the general isometry/diffeomorphism-invariance lemma** + (`IsometryCausality.lean`, `CrossMetricIsometry.lean`): "if `φ` is an + isometry (or `CrossIsometry`) and `μ` is a geodesic, `φ ∘ μ` is a + geodesic," by chasing `Γ` through the pushforward chart using the + existing chain-rule lemmas (`mfderivWithin_comp_diffeo`) generalized to + second derivatives. This is the expensive, novel step — no Mathlib + support exists. +4. **Chart-independence lemma** (§2): needed only if trips are ever + compared across different charts explicitly (not needed for step 2–3 if + `chartAt`/`extChartAt` is used consistently), but worth doing once for + robustness and to justify the "the preferred chart" design choice in the + docstring. +5. **Retire the 57 blueprint formalization notes** once steps 1–3 land. + +**Risks:** +- The nondegeneracy field in `Spacetime` is the linear-algebra form + (`∀ w, val x v w = 0 → v = 0`), not `Matrix.Nondegenerate` directly; + bridging to `Matrix.nondegenerate_iff_det_ne_zero` needs an explicit + transport lemma via the chosen frame/basis (`Module.Basis.toMatrix` / + `BilinForm.toMatrix'`) — mechanical but must be done once, carefully, + to avoid basis-dependence bugs (the *value* `g^{kl}` in a fixed chart + frame is basis-independent once the frame is fixed, but the intermediate + lemma statements are easy to get subtly wrong). +- `chartAt`/`extChartAt` are **classical, non-canonical choices** + (`Classical.choice`-backed in general `ChartedSpace`); the resulting `Γ` + and hence `IsGeodesic` are well-defined `Prop`s but any two agents' + proofs must be careful to use the *same* `chartAt` instance consistently, + or the chart-independence lemma of §2 becomes load-bearing sooner than + planned. +- The isometry-invariance lemma (step 3) is the one place this plan could + stall: it is a real theorem (isometries are affine for the Levi-Civita + connection), with no partial credit from Mathlib, and no local precedent + in this codebase to imitate (the `qinz1yang` library does not prove an + analogous lemma either, since it has no notion of isometry). +- This is a **definition change** to `IsGeodesic` (and a new `def` for `Γ`, + both blocked to agents by `new_declarations` in `.claude/lean-policy.json`) + and must be approved by the user before any agent implements it. diff --git a/notes/agents/scout/von-neumann-density-2026-09-30.md b/notes/agents/scout/von-neumann-density-2026-09-30.md new file mode 100644 index 0000000..b9e3043 --- /dev/null +++ b/notes/agents/scout/von-neumann-density-2026-09-30.md @@ -0,0 +1,176 @@ +# Scout memo: von Neumann bicommutant density theorem + +## Target + +`Physicslib4.AQFT.HaagKastler.dense_range_in_bicommutant` +(`Physicslib4/AQFT/HaagKastler/StrongDensity.lean:68`), blueprint +`thrm:quasilocal-strongly-dense` +(`blueprint/src/sections/sec10/haag-kastler-axioms.tex` ~line 569): + +``` +variable {H : Type*} [NormedAddCommGroup H] [InnerProductSpace ℂ H] [CompleteSpace H] +variable {𝔄 : Type*} [Ring 𝔄] [StarRing 𝔄] [Algebra ℂ 𝔄] [StarModule ℂ 𝔄] + +theorem dense_range_in_bicommutant (π : 𝔄 →⋆ₐ[ℂ] (H →L[ℂ] H)) : + ⇑(UniformConvergenceCLM.ofFun (σ := RingHom.id ℂ) (E := H) (F := H) + {s : Set H | s.Finite}) '' Set.centralizer (Set.centralizer (Set.range π)) ⊆ + closure (⇑(UniformConvergenceCLM.ofFun (σ := RingHom.id ℂ) (E := H) (F := H) + {s : Set H | s.Finite}) '' Set.range π) := by sorry +``` + +Murphy Lemma 4.1.4 / Kadison–Ringrose 5.3.1: for a **unital** `*`-hom `π` +(unitality carried by `StarAlgHom.map_one`), `π(𝔄)` is dense in `π(𝔄)''` in the +strong operator topology `H →Lₚₜ[ℂ] H` (`PointwiseConvergenceCLM`, `𝔖 = +{finite sets}`). `𝔄` is *only* a unital `*`-algebra over `ℂ`, not normed — only +the already-bounded operators `π a : H →L[ℂ] H` carry norms. `ofFun` is a +bijection (`⟨id, id, _, _⟩`), so the goal reduces to the unadorned +operator-topology statement. No route below weakens the target. + +## 1. Standard proof route + +`M = π(𝔄)`, unital `*`-subalgebra of `𝓑(H)`. + +- **(a) One vector.** `K := closure (M · ξ) ⊆ H`. `K` is `M`-invariant + (`π(a)` continuous) and `M`-coinvariant (`π(a)* = π(a*) ∈ M`), so `K` + *reduces* every `π(a)` ⇒ the orthogonal projection `P` onto `K` commutes + with every `π(a)`, i.e. `P ∈ π(𝔄)'`. Unitality gives `ξ = π(1)ξ ∈ K`. For + `T ∈ π(𝔄)'' = centralizer(centralizer(range π))`, `T` commutes with `P`, so + `Tξ = TPξ = PTξ ∈ K = closure(Mξ)`: `Tξ` is a norm limit of `π(a)ξ`. +- **(b) Finitely many vectors `ξ₁,…,ξₙ`.** Amplify to `Hⁿ`, + `πⁿ(a) = diag(π(a),…,π(a))`. Key fact: `T ∈ π(𝔄)'' ⇒ diag(T,…,T) ∈ + (πⁿ(𝔄))''`. Apply (a) to `(ξ₁,…,ξₙ) ∈ Hⁿ` and `πⁿ`: `π(a)` simultaneously + approximates `Tξ₁,…,Tξₙ`. +- **(c) Conclude.** Strong topology's `0`-nbhd basis is indexed by (finite + `S ⊆ H`, nbhd `V` of `0` in `H`): `{f | ∀x∈S, f x∈V}` + (`PointwiseConvergenceCLM.hasBasis_nhds_zero`). Given `T ∈ π(𝔄)''` and a + basic neighbourhood determined by finite `S`, (b) produces `a` with `π(a)` + in it. So `T ∈ closure(range π)`. + +## 2. What the repo already has + +- `Physicslib4/Operators/LpDiagonal.lean` — **fully general**, no C*-algebra + hypothesis: `lpDiag (T : ∀ i, E i →L[𝕜] E i) (hK : 0≤K) (hTK : ∀i,‖T i‖≤K) : + lp E 2 →L[𝕜] lp E 2`, plus `lpDiag_apply_coe/_congr/_ext/_one/_mul/_add/ + _smul/_star`. Exactly the amplification machinery for step (b), and it + needs no norm on the source algebra — `hTK` is discharged from the already + existing CLM norms. +- `Physicslib4/GNS/DirectSum.lean` — wraps `lpDiag` into a `StarAlgHom` + `directSum π : A →⋆ₐ[ℂ] (lp H 2 →L[ℂ] lp H 2)` for a *family* + `π i : A →⋆ₐ[ℂ] (H i →L[ℂ] H i)`, requiring `[CStarAlgebra A]` only to get + `‖π i a‖ ≤ ‖a‖` across *different* `π i` (`NonUnitalStarAlgHom.norm_apply_le`). + Also has `intertwines_single` and `summandProj_mem_commutant` (projection + onto summand `j` lies in the commutant) — reusable verbatim. +- `Physicslib4/GNS/Amplification.lean` — `ι`-fold amplification of a single + `π`, still under `[CStarAlgebra A]`; docstring flags that the full + amplification commutant theorem `(π⊗1)'' = π''⊗ℂ1` is **not proved** and is + "a genuine von Neumann algebra result Mathlib does not currently provide." + +### The key adaptation + +The target's `𝔄` has no norm, so `Amplification.amplification` can't be +instantiated. But a *finite* amplification of a single already-bounded `π` +needs no norm on `𝔄` at all: `lpDiag (fun _:Fin n => π a) (norm_nonneg (π a)) +(fun _ => le_refl _)` — the bound is `‖π a‖` itself, uniform "for free" across +the `n` identical copies. So a `Fin n`-indexed sibling of +`DirectSum.directSumFun/directSum` can be built for the bare +`[Ring 𝔄] [StarRing 𝔄] [Algebra ℂ 𝔄] [StarModule ℂ 𝔄]` hypotheses already in +`StrongDensity.lean`, reusing `lpDiag`'s laws exactly as `directSum` does. +`intertwines_single`/`summandProj_mem_commutant` transfer verbatim (they use +no C*-structure of `A`). Whether to generalize the existing `def` or add a +sibling is for the orchestrator/prover (defs blocked for this agent). + +**Still missing, the hard part of (b):** `T ∈ π(𝔄)'' ⇒ diag(T,…,T) ∈ +(πⁿ(𝔄))''`. Strictly weaker than the full amplification-commutant theorem +flagged missing in `Amplification.lean`; only one containment, one direction, +for the diagonal element. Route, using `lp.hasSum_single` + linearity, no +matrix-isomorphism needed: + +1. `S ∈ (πⁿ(𝔄))'`. Define `S_{jk} := lpEvalCLM j ∘L S ∘L + (lp.singleContinuousLinearMap ℂ _ 2 k) : H →L[ℂ] H`. Commutation of `S` + with `πⁿ(a)` gives `S_{jk} ∈ Set.centralizer (Set.range π)` for every + `j,k` (unfold + `lpDiag_apply_coe`/`lp.single_apply`, as in + `summandProj_mem_commutant`'s proof). +2. `x = ∑ k, lp.single 2 k (x k)` as a genuine `Fin n`-indexed finite sum — + from `lp.hasSum_single : HasSum (fun i => lp.single 2 i (f i)) f` + (`Mathlib/Analysis/InnerProductSpace/l2Space.lean:435`) bridged to + `Finset.sum` via `hasSum_fintype`/`HasSum.unique` (confirm exact lemma + when implementing). +3. `(diag(T) S x) j = T((Sx) j) = T(∑ₖ S_{jk}(x k)) = ∑ₖ T(S_{jk}(x k)) = + ∑ₖ S_{jk}(T(x k))` (since `S_{jk} ∈ π(𝔄)'`, `T ∈ π(𝔄)''` commute) + `= (S(diag(T) x)) j`. So `diag(T) S = S diag(T)` for arbitrary `S`, hence + `diag(T) ∈ (πⁿ(𝔄))''`. Elementary (no spectral theory, no C*-norm + estimates) but index-heavy: ~40–80 Lean lines across several small lemmas. + +## 3. Mathlib API inventory + +| Need | Status | Name / path | +|---|---|---| +| Strong operator topology | have | `PointwiseConvergenceCLM`, `Mathlib/Topology/Algebra/Module/Spaces/PointwiseConvergenceCLM.lean` | +| Nbhd basis at 0 | have | `PointwiseConvergenceCLM.hasBasis_nhds_zero`; general `UniformConvergenceCLM.hasBasis_nhds_zero(_of_basis)`, `.../UniformConvergenceCLM.lean:275-291` | +| Closure via nbhd basis | have | `mem_closure_iff_nhds_basis'`, `mem_closure_iff_nhds`, `Mathlib/Topology/ClusterPt.lean:298,309` | +| `Set.centralizer` basics | have | `Set.centralizer`, `Set.mem_centralizer_iff`, `Mathlib/Algebra/Group/Center.lean:125,159` (root-level, distinct from `Subsemigroup.centralizer`) | +| Diagonal operator on finite ℓ² sum | have, general | `Physicslib4.lpDiag` + laws, `Physicslib4/Operators/LpDiagonal.lean` | +| Finite ℓ² decomposition `x=∑single k (x k)` | have, as `HasSum` | `lp.hasSum_single`, `.../l2Space.lean:435`; needs bridge to `Finset.sum` for `Fintype` | +| Coordinate projection/inclusion on `lp` | have | `lpEvalCLM`, `lp.singleContinuousLinearMap`, `Physicslib4/GNS/DirectSum.lean` | +| **Reducing subspace ⇒ projection commutes with operator** | **MISSING** | grepped `Mathlib/Analysis/InnerProductSpace/{Projection/*,Adjoint,Spectrum,Symmetric,Positive,Reproducing}.lean`; only `IsSymmetric.restrict_invariant` found (gives a restriction *given* invariance, symmetric operators only) — nothing of the needed shape. | +| Full amplification commutant theorem | MISSING (already flagged in-repo) | `Physicslib4/GNS/Amplification.lean` docstring; not needed here, only the weaker diagonal fact above is | +| `VonNeumannAlgebra.commutant_commutant` | have, wrong shape | double-commutant *property* of an already-bundled vN algebra, not density; matches blueprint's own assessment | + +## 4. Proof decomposition + +New `def`s (item 4) must be added by the orchestrator/prover, not this agent. + +1. **`reducing_subspace_commutes_projection`** (new, general, e.g. + `Physicslib4/Operators/`): `K : Submodule ℂ H` closed, `T : H →L[ℂ] H`, + `MapsTo T K K`, `MapsTo (adjoint T) K K` ⇒ `Commute T (K.starProjection : + H →L[ℂ] H)`. ~10–15 lines (orthogonal decomposition `x=y+z`, `y∈K,z∈Kᗮ`, + show `Tz∈Kᗮ` via `hK'` and inner-product characterization of `Kᗮ`). **The + one truly novel operator-theory fact**; double-check with `lean_loogle`/ + `lean_leansearch` before writing from scratch (this pass was grep-only). +2. **`cyclic_subspace_reduces`**: `K := closure(range(π · ξ))` is invariant + under every `π a` and `π a⋆`. ~5–10 lines (`map_star`, continuity, + `closure_mono`). +3. **`mem_bicommutant_single_vector`** (step a): `T∈π(𝔄)'', ξ` ⇒ + `Tξ ∈ closure(range(π · ξ))`. Combine 1, 2, `π 1 = 1`. ~10 lines. +4. **Finite amplification** (`def`, orchestrator): `Fin n`-specialized + sibling of `DirectSum.directSumFun/directSum` for bare `𝔄` (§2), bound via + `norm_nonneg (π a)`/`le_refl _`. +5. **`diag_mem_bicommutant_amp`** (hard core of step b, §2 route): `T∈π(𝔄)'' + → lpDiag (fun _:Fin n => T) … ∈ centralizer(centralizer(range(finiteAmp π + n)))`. ~30–50 lines: `S_{jk}` extraction, `lp.hasSum_single`→`Finset.sum` + bridge, commuting-sum computation. +6. **`mem_bicommutant_finite_vectors`** (step b conclusion): apply 3 to + `finiteAmp π n` and the tuple `(ξ 0,…,ξ(n-1)) : lp(Fin n→H) 2` (check the + cleanest tuple-construction API for `lp` over `Fin n`). ~15–20 lines. +7. **`dense_range_in_bicommutant`** (target, step c): unfold `ofFun` (identity + up to coercion), `mem_closure_iff_nhds_basis' PointwiseConvergenceCLM.hasBasis_nhds_zero` + — note that basis is centred at `0`, not at `T`; a translation argument or + a nbhd-at-a-point version may be needed, recheck when implementing — then + apply 6 with the finite set from the neighbourhood. ~10–15 lines. + +**Total estimate:** ~130–200 lines across ~7 lemmas; lemma 1 and lemma 5 +carry the real mathematical content; 4 is a new `def`; the rest is glue. + +## 5. Recommendation and risks + +Proceed via §4's order: 1–2 are independent, generally useful +operator-theory lemmas, attempt first; request the `def` (item 4) from the +orchestrator early since 5–7 depend on it. If time runs out, land 1–3 (single +vector case) as reusable building blocks with the target left `sorry` — +**do not narrow the target statement** to the single-vector case. + +Risks: +- Lemma 1 not found in Mathlib under any name this grep pass tried, though + `CompleteSpace H` (already in context) makes `adjoint`/`starProjection` + available; a differently-phrased version (via `IsIdempotentElem`/ + `IsSelfAdjoint`/`ker`/`range`) might exist — worth a live `lean_loogle`/ + `leansearch` check before implementing from scratch (not run this pass). +- The `Fin n`/`lp` route needs a new `def` (blocked for this agent); an + alternative is generalizing `DirectSum.directSumFun`'s hypothesis from + `[CStarAlgebra A]` to an explicit bound `(hb : ∀ i, ‖π i a‖ ≤ K a)` — a + strictly more general replacement, not a narrowing, but it touches an + existing declaration's signature, so it's the orchestrator's call. +- Confirm the exact `lp.hasSum_single` → `Finset.sum` bridging lemma name for + `Fin n` when implementing (only located `lp.hasSum_single` itself here). +- No evidence the target is mis-specified: it matches Murphy 4.1.4 exactly, + and the blueprint's own proof sketch confirms this is the intended route.