IndisputableMonolith.Gravity.SevenGaps.Gap5ChartFromLedgerMomentum
IndisputableMonolith/Gravity/SevenGaps/Gap5ChartFromLedgerMomentum.lean · 756 lines · 48 declarations
show as:
view math explainer →
1import Mathlib
2import IndisputableMonolith.Cost
3import IndisputableMonolith.Cost.SymplecticAction
4
5/-!
6# Is the half-imbalance chart derived, or stipulated? **VERDICT: STIPULATED.**
7
8## The verdict, stated first
9
10**The claim `C` below FAILED its own pre-registered criteria.** The chart is not
11derived, and with the geometry route already closed, Pillar 1 has no surviving named
12route by which a recognition primitive derives classical gravity.
13
14The four parts are all true and are all still here, kernel-clean. What failed is the
15*attribution*, which is the fifth time in this programme that a correct theorem
16carried a wrong attribution. Three independent defects, each verified against the
17frozen criteria below rather than argued about:
18
191. **The smuggled premise, decisive.** Part 2 selects the imbalance among *linear*
20 observables. Drop linearity and the tolerated family is infinite-dimensional:
21 `m + m ^ 3` is a strictly monotone coordinate vanishing exactly on the balance
22 locus, its coordinate change with `s / (1 + 3 m ^ 2)` is area-preserving so it is
23 genuinely canonical, and the cost is not quadratic in it
24 (`chart_not_forced_without_linearity`). Nothing in the substrate forces the
25 momentum observable to be linear: recognition *events* are linear maps, but linear
26 dynamics does not imply linear canonical coordinates. The frozen fail criterion
27 "the tolerated chart family is positive-dimensional" is therefore met, and it was
28 written down before the answer was known.
292. **A state/event splice.** `Cost.SymplecticAction` assigns cost to an *event*:
30 `traceCost (diagSL x) = Jcost x`. Part 4 applies the cost to a *state's* ratio.
31 The event carrying the balanced state to `orbitPoint k t` is
32 `diagSL (exp (t / 2))`, whose substrate cost is `Jlog (t / 2)`, not the `Jlog t`
33 part 4 uses (`event_cost_differs_from_state_cost`). So part 1's symplectic
34 provenance does not license part 4, and the two halves are about different
35 objects.
363. **No net reduction in what is assumed.** The theorems mention neither the ADM
37 momentum `p` nor `lam`. The equation the physics still needs is
38 `lam * p = m / (2 * sqrt k)`, which on a fixed orbit is *logically equivalent* to
39 the chart it was supposed to derive. The gain is presentational: a transcendental
40 stipulation becomes a linear one. Presentational gain restated as derivation is
41 exactly what went wrong four times before, so it is recorded as a gain in
42 exposition and not in provenance.
43
44Two further hits worth keeping. Part 1 is a renaming: `ConservesSigma` is *defined*
45as `det M = 1`, so "sigma-conservation is symplectic" is a definitional unfolding.
46And sigma-conservation does not preserve the imbalance at all, since `diagSL 2`
47conserves it while carrying `(1,1)` to `(2, 1/2)`, so the imbalance is not the
48sigma-privileged observable and no write-up may say it is.
49
50**What survives, at its honest strength.** `Jlog t = imbalance ^ 2 / (2 * casimir)`
51is exact and true, and it is a one-line rearrangement of `J`'s definition,
52`J (d / c) = (d - c) ^ 2 / (2 d c)`. It is a clean reformulation of the recognition
53cost, not a derivation of anything. Anyone quoting it must say that.
54
55Verdict reached after a hostile cross-family read, with all three decisive
56computations reverified independently before conceding. Frozen criteria committed at
57`81620cd46d`, first verdict at `afb610fa84`, refutation formalized below.
58
59## The frozen record, unedited
60
61Everything from here to the end of this docstring was committed at `81620cd46d`
62before any theorem in the file was written, so that the git history is the audit
63trail and a reader need not trust the author
64(`L-qg-freeze-the-candidate-before-you-price-it`). It is preserved verbatim,
65including the parts the verdict above overturns. That is the point of freezing.
66
67## The question
68
69`HKTKineticFromRecognitionCost.exactCostKineticProfile` posts the exact
70recognition cost of the momentum channel read in the chart
71
72 `t = 2 * Real.arsinh (lam * p)`,
73
74and in that chart the cost is exactly quadratic (`Jlog_two_arsinh`), which is the
75premise Hojman-Kuchar-Teitelboim rigidity needs. A cross-family panel then showed
76the clause is empty as a test of recognition, for two reasons proved in
77`Gap5ReparamAttackOnConstraintSector`: the chart is `J`'s own inverse, so *any*
78function quadratic in it is a multiple of `J` (`chart_alone_forces_the_cost`); and
79the chart is **typed in as a literal**, with nothing deriving it.
80
81Section 4 of `HKTKineticFromRecognitionCost` proves that the rival identification
82`t = kappa * p`, momentum linear in the log-imbalance, is *excluded*: it makes the
83momentum response `sinh` and the algebra demands linear
84(`no_exact_cost_kinetic_canonicalMom`). So the whole constraint-sector claim turns
85on which of two coordinates on the same ledger is the momentum, and the repo
86currently supplies no reason to prefer either.
87
88## The frozen claim under test
89
90`C`: **the substrate's own symplectic structure selects the half-imbalance chart,
91because `lam * p` is the ledger's canonical momentum.**
92
93Concretely, the claim to be proved or refuted has four parts, in order.
94
951. The recognition ledger's phase space is the debit-credit plane, and
96 sigma-conservation makes it symplectic. Already a theorem:
97 `Cost.SymplecticAction.conservesSigma_iff_preservesArea`.
982. On the debit-credit plane there is, up to scale, exactly **one** linear
99 functional vanishing at the balanced ground state `(1,1)`, namely the net
100 imbalance `m = d - c`. This selection mentions the cost nowhere.
1013. `m` is a canonical momentum: it is symplectically conjugate to the ledger
102 total `s = d + c`, up to a constant.
1034. On a split-torus orbit of Casimir `d * c = k > 0` the recognition cost of the
104 ledger ratio is **exactly** half the squared imbalance over the Casimir,
105 `Jlog t = m ^ 2 / (2 * k)`, with no truncation. Hence
106 `lam * p = m / (2 * sqrt k)` reproduces `exactCostKineticProfile` and the
107 chart's free constant `lam` is the ledger scale rather than a fitted number.
108
109## Pass criteria, fixed in advance
110
111`C` passes only if all four hold, and additionally:
112
113- **Grep test.** A recognition primitive appears in the statement, not the
114 motivation. Here: `Cost.Jlog` / `Cost.Jcost` and `ConservesSigma`.
115- **Deletion test.** Removing the primitive breaks the result. Here: part 4 must
116 fail for a cost that is not `J`.
117- **Chart test** (`L-never-test-a-primitive-in-a-chart-built-from-it`, the test
118 this file exists to satisfy). The coordinate must be derived independently of
119 the primitive under test. Part 2 is the whole load: `m` is selected by linear
120 algebra and the ground state alone, with `J` absent from the statement. If part
121 2 needed `J`, `C` fails however pretty parts 3 and 4 are.
122- **Reparametrization attack, run by the author before any write-up.** Exhibit
123 the family of charts the argument still tolerates and show it is a point, not a
124 family. Concretely: if `chi` is any increasing function fixing `0`, is
125 `chi(m)` also selected? Part 2's linearity is what must exclude it, and the
126 exclusion must be a theorem in this file, not a remark.
127
128## Fail criteria, equally fixed in advance
129
130`C` fails if part 2 requires the cost to select `m`; or if part 4 holds only to
131second order rather than exactly; or if the tolerated chart family is
132positive-dimensional. A failure closes the last named Pillar 1 provenance route
133and is written up at equal effort, per the binding plan
134`plans/QG_Pillar1_Provenance_Verdict_Master_Plan_20260726.html`.
135
136## What `C` does not decide, stated before the result is known
137
138Even a full pass leaves one bridge: that the ledger's canonical momentum **is**
139the ADM momentum conjugate to the spatial metric. `C` replaces an unexplained
140`arsinh` literal with a named identification of two momenta. That is strictly
141better and it is not the same as closed, and no write-up of this file may say
142otherwise. `C` also does not fix the magnitude: the Casimir `k` is free, so
143`cKin = 2 * lam ^ 2` stays a positivity statement, exactly as the
144`HKTKineticFromRecognitionCost` header already records.
145-/
146
147namespace IndisputableMonolith
148namespace Gravity
149namespace SevenGaps
150namespace ChartFromLedgerMomentum
151
152noncomputable section
153
154open Cost
155
156/-! ## The objects under test, defined before anything is claimed about them -/
157
158/-- A ledger state: a debit-credit pair. This is the phase space of
159`Cost.SymplecticAction`, whose area form sigma-conservation preserves. -/
160abbrev LedgerState := ℝ × ℝ
161
162/-- The balanced ground state: equal debit and credit, the sigma = 0 state at
163which the recognition cost vanishes. -/
164def balanced : LedgerState := (1, 1)
165
166/-- The net imbalance of a ledger state. Candidate for the ledger's canonical
167momentum. Defined by subtraction; no cost appears. -/
168def imbalance (z : LedgerState) : ℝ := z.1 - z.2
169
170/-- The ledger total. Candidate for the coordinate conjugate to the imbalance. -/
171def total (z : LedgerState) : ℝ := z.1 + z.2
172
173/-- The Casimir of the split-torus action `(d, c) ↦ (x d, c / x)`: the one
174combination every sigma-conserving diagonal event fixes. -/
175def casimir (z : LedgerState) : ℝ := z.1 * z.2
176
177/-- The split-torus orbit point at log-ratio `t` and Casimir `k`: the ledger state
178with `d / c = exp t` and `d * c = k`. The description holds only for `0 ≤ k`, since
179`Real.sqrt` of a negative is `0` and the point degenerates to the origin; every
180theorem below therefore carries a positivity hypothesis. -/
181def orbitPoint (k t : ℝ) : LedgerState :=
182 (Real.sqrt k * Real.exp (t / 2), Real.sqrt k * Real.exp (-t / 2))
183
184/-- A linear functional on the debit-credit plane, written by its coefficients so
185that "linear" is a property of the data rather than a promise in a comment. -/
186def linFunctional (a b : ℝ) (z : LedgerState) : ℝ := a * z.1 + b * z.2
187
188/-- The predicate part 2 is about: a linear functional vanishing at balance. The
189recognition cost is absent from this definition, which is the point. -/
190def VanishesAtBalanced (a b : ℝ) : Prop := linFunctional a b balanced = 0
191
192/-- A ledger state is balanced when its debit equals its credit. This is the
193defining constraint of double-entry bookkeeping and it is prior to any cost: it
194mentions no functional, no primitive, and no normalization. It is used below to
195strengthen part 2 so that the selection of the momentum coordinate does not depend
196on where the *cost* vanishes. -/
197def Balanced (z : LedgerState) : Prop := z.1 = z.2
198
199/-! ## Part 2. The imbalance is the unique linear observable vanishing at balance
200
201This is the load-bearing part, and it is the one the chart test asks about
202(`L-never-test-a-primitive-in-a-chart-built-from-it`). Nothing below mentions
203`Jcost`, `Jlog`, or any recognition primitive: the selection is linear algebra
204together with the location of the ground state. That is what distinguishes this
205from the profile clause, whose coordinate was chosen so that the cost would look
206quadratic in it. -/
207
208/-- A linear functional on the ledger plane vanishes at the balanced state exactly
209when its coefficients are opposite. -/
210theorem vanishesAtBalanced_iff (a b : ℝ) : VanishesAtBalanced a b ↔ b = -a := by
211 unfold VanishesAtBalanced linFunctional balanced
212 constructor
213 · intro h; simp at h; linarith
214 · intro h; simp [h]
215
216/-- **The imbalance is forced, up to scale.** Every linear observable on the
217debit-credit plane that vanishes at the balanced ground state is a scalar multiple
218of the net imbalance. The recognition cost appears nowhere in the hypothesis, so
219this selection cannot be an artefact of the cost's shape. -/
220theorem imbalance_is_the_unique_linear_selection (a b : ℝ)
221 (h : VanishesAtBalanced a b) :
222 ∀ z : LedgerState, linFunctional a b z = a * imbalance z := by
223 rw [vanishesAtBalanced_iff] at h
224 intro z
225 simp [linFunctional, imbalance, h]
226 ring
227
228/-- The imbalance is itself such an observable, so the previous theorem is not
229vacuous. -/
230theorem imbalance_vanishesAtBalanced : VanishesAtBalanced 1 (-1) := by
231 simp [vanishesAtBalanced_iff]
232
233theorem linFunctional_one_neg_one (z : LedgerState) :
234 linFunctional 1 (-1) z = imbalance z := by
235 simp [linFunctional, imbalance]; ring
236
237/-! ### Part 2, strengthened so the ground state is not the cost's
238
239The version above selects the imbalance from vanishing at the single normalized
240state `(1,1)`, which invites the objection that `(1,1)` was located by asking where
241the recognition cost vanishes. The objection is answered by using the whole
242double-entry balance locus `{d = c}` instead, which is the bookkeeping constraint
243itself. The conclusion is unchanged, so nothing here depends on the normalization,
244and the selection of the momentum coordinate is now downstream of double-entry
245alone. -/
246
247/-- A linear observable vanishes on the entire balanced locus exactly when its
248coefficients are opposite. The forward direction needs only one balanced state, but
249the hypothesis no longer privileges any particular one. -/
250theorem vanishesOnBalancedLocus_iff (a b : ℝ) :
251 (∀ z : LedgerState, Balanced z → linFunctional a b z = 0) ↔ b = -a := by
252 constructor
253 · intro h
254 have h1 := h (1, 1) rfl
255 simp [linFunctional] at h1
256 linarith
257 · intro h z hz
258 simp only [Balanced] at hz
259 simp [linFunctional, h, hz]
260
261/-- **The imbalance is forced by double-entry alone.** Every linear observable on
262the ledger plane that vanishes on the balanced locus is a scalar multiple of the net
263imbalance. No cost, no primitive, and no normalization appears in the hypothesis, so
264this is the version that satisfies the chart test without argument. -/
265theorem imbalance_forced_by_balance_locus (a b : ℝ)
266 (h : ∀ z : LedgerState, Balanced z → linFunctional a b z = 0) :
267 ∀ z : LedgerState, linFunctional a b z = a * imbalance z := by
268 rw [vanishesOnBalancedLocus_iff] at h
269 intro z
270 simp [linFunctional, imbalance, h]
271 ring
272
273/-- **The tolerated family is one-dimensional, and its parameter is scale.** The
274reparametrization attack, run against this file's own claim: the set of coordinates
275part 2 admits is exactly `{a • imbalance}`, so it is a single ray rather than a
276positive-dimensional family of charts. Compare O5, where the level-set argument
277tolerated every increasing reparametrization fixing the rungs and therefore
278identified nothing. The surviving scale is not a loophole that was overlooked; it
279is the ledger scale, and it is the same freedom already recorded as unfixed in the
280`HKTKineticFromRecognitionCost` header. -/
281theorem tolerated_family_is_a_scale_ray :
282 {f : LedgerState → ℝ | ∃ a b : ℝ, VanishesAtBalanced a b ∧ f = linFunctional a b}
283 = {f : LedgerState → ℝ | ∃ a : ℝ, f = fun z => a * imbalance z} := by
284 ext f
285 constructor
286 · rintro ⟨a, b, hab, rfl⟩
287 exact ⟨a, funext (imbalance_is_the_unique_linear_selection a b hab)⟩
288 · rintro ⟨a, rfl⟩
289 refine ⟨a, -a, by simp [vanishesAtBalanced_iff], funext fun z => ?_⟩
290 simp [linFunctional, imbalance]; ring
291
292/-! ## Part 3. The imbalance is a canonical momentum
293
294`Cost.SymplecticAction` proves that sigma-conservation is preservation of the
295ledger area form. Here the imbalance-total coordinate change is shown to rescale
296that form by a constant, which is what makes `(imbalance, total)` a canonical pair
297up to normalization, so calling the imbalance a momentum is a statement about the
298substrate's symplectic structure and not a naming convention. -/
299
300/-- The ledger state as a vector, so the area form of `Cost.SymplecticAction`
301applies to it. -/
302def toVec (z : LedgerState) : Fin 2 → ℝ := ![z.1, z.2]
303
304/-- The change of coordinates from debit-credit to imbalance-total. -/
305def imbalanceTotalMap : Matrix (Fin 2) (Fin 2) ℝ := !![1, -1; 1, 1]
306
307theorem imbalanceTotalMap_apply (z : LedgerState) :
308 imbalanceTotalMap.mulVec (toVec z) = ![imbalance z, total z] := by
309 funext i
310 fin_cases i <;>
311 simp [imbalanceTotalMap, toVec, imbalance, total, Matrix.mulVec, dotProduct,
312 Fin.sum_univ_two] <;> ring
313
314theorem imbalanceTotalMap_det : imbalanceTotalMap.det = 2 := by
315 simp [imbalanceTotalMap, Matrix.det_fin_two_of]; ring
316
317/-- **The imbalance and the total are canonically conjugate up to a constant.**
318The coordinate change rescales the ledger area form by exactly `2`, so it is
319symplectic after normalization. Hence the imbalance is a momentum in the
320substrate's own symplectic structure, the one sigma-conservation forces. -/
321theorem imbalance_total_is_a_canonical_pair (v w : Fin 2 → ℝ) :
322 Cost.SymplecticAction.areaForm (imbalanceTotalMap.mulVec v)
323 (imbalanceTotalMap.mulVec w)
324 = 2 * Cost.SymplecticAction.areaForm v w := by
325 rw [Cost.SymplecticAction.areaForm_mulVec, imbalanceTotalMap_det]
326
327/-! ## Part 4. The recognition cost is exactly the squared imbalance
328
329No truncation, no jet, no fitted coefficient: an identity on every split-torus
330orbit, with the Casimir supplying the normalization. -/
331
332/-- The recognition cost in the log-imbalance chart is twice the squared
333half-imbalance. This is `Jlog t = cosh t - 1 = 2 sinh (t/2) ^ 2` written so that
334the right-hand side is the object part 4 is about. -/
335theorem Jlog_eq_two_sinh_half_sq (t : ℝ) :
336 Cost.Jlog t = 2 * Real.sinh (t / 2) ^ 2 := by
337 have hc : Real.cosh t = 2 * Real.sinh (t / 2) ^ 2 + 1 := by
338 rw [show t = 2 * (t / 2) from by ring, Real.cosh_two_mul, Real.cosh_sq]
339 ring
340 rw [Cost.Jlog_as_cosh, hc]
341 ring
342
343theorem orbitPoint_casimir (k t : ℝ) (hk : 0 ≤ k) :
344 casimir (orbitPoint k t) = k := by
345 have hsq : Real.sqrt k * Real.sqrt k = k := Real.mul_self_sqrt hk
346 have hexp : Real.exp (t / 2) * Real.exp (-t / 2) = 1 := by
347 rw [← Real.exp_add, show t / 2 + -t / 2 = (0 : ℝ) from by ring, Real.exp_zero]
348 simp only [casimir, orbitPoint]
349 calc Real.sqrt k * Real.exp (t / 2) * (Real.sqrt k * Real.exp (-t / 2))
350 = (Real.sqrt k * Real.sqrt k) * (Real.exp (t / 2) * Real.exp (-t / 2)) := by ring
351 _ = k := by rw [hsq, hexp, mul_one]
352
353/-- The imbalance of the orbit point is the half-imbalance sine, scaled by the
354square root of the Casimir. -/
355theorem orbitPoint_imbalance (k t : ℝ) :
356 imbalance (orbitPoint k t) = Real.sqrt k * (2 * Real.sinh (t / 2)) := by
357 simp only [imbalance, orbitPoint, Real.sinh_eq]
358 rw [show (-t / 2 : ℝ) = -(t / 2) by ring]
359 ring
360
361/-- **The recognition cost is exactly half the squared ledger imbalance.** On the
362split-torus orbit of Casimir `k > 0`, the cost of the ledger ratio equals
363`m ^ 2 / (2 k)` where `m` is the net imbalance of the ledger state. Exact, not a
364second-order jet: this is the identity that the profile clause was reaching for,
365now with its coordinate supplied by part 2 instead of typed in. -/
366theorem Jlog_eq_imbalance_sq_div_two_casimir (k t : ℝ) (hk : 0 < k) :
367 Cost.Jlog t = imbalance (orbitPoint k t) ^ 2 / (2 * k) := by
368 have hsq : Real.sqrt k * Real.sqrt k = k := Real.mul_self_sqrt hk.le
369 rw [orbitPoint_imbalance, Jlog_eq_two_sinh_half_sq]
370 field_simp
371 nlinarith [hsq]
372
373/-- The chart variable of `exactCostKineticProfile`, identified. The literal
374`lam * p` in that profile is the ledger's net imbalance in units of twice the
375square root of the Casimir, so the chart's free constant is the ledger scale. -/
376theorem chart_variable_is_the_normalized_imbalance (k t : ℝ) (hk : 0 < k) :
377 Real.sinh (t / 2) = imbalance (orbitPoint k t) / (2 * Real.sqrt k) := by
378 have hne : Real.sqrt k ≠ 0 := by
379 simpa using Real.sqrt_ne_zero'.mpr hk
380 rw [orbitPoint_imbalance]
381 field_simp
382
383/-- **The chart, derived.** The half-imbalance chart `t = 2 arsinh (lam * p)` is
384exactly the statement that the momentum is the ledger's net imbalance at scale
385`lam = 1 / (2 sqrt k)`. The `arsinh` is not a coordinate choice; it is the inverse
386of the map from log-ratio to imbalance. -/
387theorem chart_is_the_imbalance_coordinate (k t : ℝ) (hk : 0 < k) :
388 t = 2 * Real.arsinh (imbalance (orbitPoint k t) / (2 * Real.sqrt k)) := by
389 rw [← chart_variable_is_the_normalized_imbalance k t hk, Real.arsinh_sinh]
390 ring
391
392/-! ## The deletion test
393
394Part 2 selects the coordinate without the cost, so the chart test is satisfied by
395construction. The deletion test is the other direction: the exactness in part 4 is
396a property of the recognition cost and fails for a neighbouring cost. -/
397
398theorem sinh_two_arsinh (u : ℝ) :
399 Real.sinh (2 * Real.arsinh u) = 2 * u * Real.sqrt (1 + u ^ 2) := by
400 rw [Real.sinh_two_mul, Real.sinh_arsinh, Real.cosh_arsinh]
401
402/-- The second power cost, `x ↦ J (x ^ 2)`, in the log chart, and the nearest
403neighbour of the recognition cost inside the power family. Correction after a hostile
404read: this cost *does* satisfy the composition law
405(`Gap5ReparamAttackOnConstraintSector.powCost_satisfiesCompositionLaw`) and what
406excludes it is calibration (`isCalibrated_powCost_iff`), so an earlier version of this
407docstring was simply wrong about which property fails. -/
408def powTwoJlog (t : ℝ) : ℝ := Real.cosh (2 * t) - 1
409
410/-- **Deleting the recognition cost breaks part 4.** The second power cost is not a
411quadratic function of the ledger imbalance: in the imbalance coordinate it is
412quartic. So "the cost is exactly the squared imbalance" is a fact about `J` and not
413about the coordinate, which is precisely what the profile clause could not say
414about itself. -/
415theorem powTwoJlog_not_quadratic_in_imbalance :
416 ¬ ∃ C : ℝ, ∀ u : ℝ, powTwoJlog (2 * Real.arsinh u) = C * u ^ 2 := by
417 rintro ⟨C, hC⟩
418 have key : ∀ u : ℝ, powTwoJlog (2 * Real.arsinh u) = 8 * u ^ 2 * (1 + u ^ 2) := by
419 intro u
420 have hs : Real.sqrt (1 + u ^ 2) * Real.sqrt (1 + u ^ 2) = 1 + u ^ 2 :=
421 Real.mul_self_sqrt (by positivity)
422 have hpt : powTwoJlog (2 * Real.arsinh u) = Cost.Jlog (4 * Real.arsinh u) := by
423 simp only [powTwoJlog, Cost.Jlog_as_cosh,
424 show 2 * (2 * Real.arsinh u) = 4 * Real.arsinh u from by ring]
425 rw [hpt, Jlog_eq_two_sinh_half_sq,
426 show 4 * Real.arsinh u / 2 = 2 * Real.arsinh u from by ring, sinh_two_arsinh]
427 nlinarith [hs]
428 have h1 := hC 1
429 have h2 := hC 2
430 rw [key 1] at h1
431 rw [key 2] at h2
432 norm_num at h1 h2
433 linarith
434
435/-! ## The refutation
436
437Formalized alongside the result it refutes, which is this programme's standing
438practice for a killed attribution (the O5 counterexample is kept the same way). Two
439defects are made into theorems here so that no future reader can restore the claim
440by reading only the parts that worked.
441
442### Defect 1, decisive: linearity is doing all the work
443
444The referee's coordinate. `nlP` is strictly monotone and vanishes exactly on the
445balance locus, so it is a legitimate coordinate by every criterion part 2 imposed
446except linearity. Paired with `nlQ` the coordinate change is area-preserving, so it
447is canonical too, and the cost is not quadratic in it. Hence part 2's selection of
448the imbalance is an artefact of restricting to linear observables. -/
449
450/-- The nonlinear momentum coordinate that defeats part 2. -/
451def nlP (m : ℝ) : ℝ := m + m ^ 3
452
453/-- Its area-preserving partner, so the pair is canonical and not merely a
454relabelling of one axis. -/
455def nlQ (m s : ℝ) : ℝ := s / (1 + 3 * m ^ 2)
456
457theorem nlP_factor (m : ℝ) : nlP m = m * (1 + m ^ 2) := by
458 simp [nlP]; ring
459
460/-- `nlP` vanishes exactly where the imbalance does, so it respects the double-entry
461balance locus just as the imbalance does. -/
462theorem nlP_eq_zero_iff (m : ℝ) : nlP m = 0 ↔ m = 0 := by
463 rw [nlP_factor, mul_eq_zero]
464 constructor
465 · rintro (h | h)
466 · exact h
467 · nlinarith [sq_nonneg m]
468 · intro h; exact Or.inl h
469
470/-- `nlP` is a strictly monotone reparametrization, hence a genuine coordinate. -/
471theorem nlP_strictMono : StrictMono nlP := by
472 intro a b hab
473 simp only [nlP]
474 nlinarith [sq_nonneg (a + b), sq_nonneg (a - b), sq_nonneg a, sq_nonneg b]
475
476theorem nlP_hasDerivAt (m : ℝ) : HasDerivAt nlP (1 + 3 * m ^ 2) m := by
477 have h : HasDerivAt (fun x : ℝ => x + x ^ 3) (1 + 3 * m ^ 2) m := by
478 simpa using (hasDerivAt_id m).add ((hasDerivAt_id m).pow 3)
479 exact h
480
481/-- `nlP` does not depend on the conjugate coordinate, which is why the Jacobian
482determinant below is `1` whatever the remaining partial derivative is. -/
483theorem nlP_hasDerivAt_snd (m s : ℝ) :
484 HasDerivAt (fun _ : ℝ => nlP m) 0 s := hasDerivAt_const s (nlP m)
485
486theorem nlQ_hasDerivAt_snd (m s : ℝ) :
487 HasDerivAt (fun y : ℝ => nlQ m y) (1 / (1 + 3 * m ^ 2)) s := by
488 have hne : (1 : ℝ) + 3 * m ^ 2 ≠ 0 := by positivity
489 simpa [nlQ, div_eq_mul_inv, one_div] using
490 (hasDerivAt_id s).mul_const ((1 + 3 * m ^ 2)⁻¹)
491
492/-- **The nonlinear coordinate change is area-preserving.** Its Jacobian determinant
493is `1`, with the diagonal entries supplied by `nlP_hasDerivAt` and
494`nlQ_hasDerivAt_snd` and the upper-right entry by `nlP_hasDerivAt_snd`. The
495determinant is `1` for *every* value of the remaining partial derivative `q`, which
496is why that derivative never has to be computed. So `(nlP, nlQ)` is a canonical pair,
497and the counterexample survives demanding that the momentum coordinate be
498canonical. -/
499theorem nl_jacobian_det_eq_one (m q : ℝ) :
500 Matrix.det !![1 + 3 * m ^ 2, 0; q, 1 / (1 + 3 * m ^ 2)] = 1 := by
501 have hne : (1 : ℝ) + 3 * m ^ 2 ≠ 0 := by positivity
502 simp [Matrix.det_fin_two_of]
503 field_simp
504
505/-- **The cost is not quadratic in the nonlinear coordinate.** At unit Casimir the
506cost is `m ^ 2 / 2`, and no single constant makes that a multiple of `nlP m ^ 2`:
507the coefficient would have to be `1 / 8` at `m = 1` and `1 / 50` at `m = 2`. -/
508theorem cost_not_quadratic_in_nlP :
509 ¬ ∃ C : ℝ, ∀ m : ℝ, m ^ 2 / 2 = C * nlP m ^ 2 := by
510 rintro ⟨C, hC⟩
511 have h1 := hC 1
512 have h2 := hC 2
513 simp only [nlP] at h1 h2
514 norm_num at h1 h2
515 linarith
516
517/-- **Defect 1, assembled: the chart is not forced once linearity is dropped.**
518There is a strictly monotone coordinate, vanishing exactly on the balance locus and
519belonging to an area-preserving pair, in which the recognition cost is not quadratic.
520So part 2 selects the imbalance by fiat, and the frozen fail criterion "the tolerated
521chart family is positive-dimensional" is met. This is the same failure shape as O5,
522where the argument tolerated every increasing reparametrization fixing the rungs. -/
523theorem chart_not_forced_without_linearity :
524 ∃ g : ℝ → ℝ, StrictMono g ∧ (∀ m : ℝ, g m = 0 ↔ m = 0)
525 ∧ (∀ m q : ℝ, Matrix.det !![1 + 3 * m ^ 2, 0; q, 1 / (1 + 3 * m ^ 2)] = 1)
526 ∧ ¬ ∃ C : ℝ, ∀ m : ℝ, m ^ 2 / 2 = C * g m ^ 2 :=
527 ⟨nlP, nlP_strictMono, nlP_eq_zero_iff, nl_jacobian_det_eq_one,
528 cost_not_quadratic_in_nlP⟩
529
530/-! ### Defect 2: part 4 costs a state, part 1 costs an event
531
532`Cost.SymplecticAction.traceCost_diagSL` gives the cost of an *event*. The event
533carrying the balanced state to `orbitPoint k t` is `diagSL (exp (t / 2))`, so the
534substrate's cost of that event is `Jlog (t / 2)`. Part 4 uses `Jlog t`. They differ,
535so the symplectic provenance imported in part 1 does not license part 4. -/
536
537/-- The two readings disagree, so the splice is real and not a matter of convention.
538Witnessed at `t = 2`: the event cost is `Jlog 1` and part 4's cost is `Jlog 2`. -/
539theorem event_cost_differs_from_state_cost : Cost.Jlog 1 ≠ Cost.Jlog 2 := by
540 rw [Jlog_eq_two_sinh_half_sq, Jlog_eq_two_sinh_half_sq]
541 have h0 : 0 < Real.sinh (1 / 2 : ℝ) := by
542 have h := Real.sinh_lt_sinh.mpr (show (0 : ℝ) < 1 / 2 by norm_num)
543 simpa using h
544 have hlt : Real.sinh (1 / 2 : ℝ) < Real.sinh (2 / 2 : ℝ) := by
545 apply Real.sinh_lt_sinh.mpr; norm_num
546 intro h
547 nlinarith [h0, hlt]
548
549/-- The event that carries the balanced state of Casimir `k` to `orbitPoint k t` has
550eigenvalue `exp (t / 2)`, which is the fact that produces the mismatch above. -/
551theorem orbitPoint_is_reached_by_event (k t : ℝ) :
552 orbitPoint k t
553 = (Real.exp (t / 2) * Real.sqrt k, (Real.exp (t / 2))⁻¹ * Real.sqrt k) := by
554 simp only [orbitPoint, Prod.mk.injEq]
555 rw [show (-t / 2 : ℝ) = -(t / 2) by ring, Real.exp_neg]
556 exact ⟨by ring, by ring⟩
557
558/-! ## The successor, reduced
559
560The refutation above leaves exactly one repair: force linearity from the substrate. This
561section does the cheap half of that repair honestly, by showing that **linearity is not
562the premise actually needed**. A strictly weaker and far more physical premise suffices:
563that the momentum observable is *additive under ledger consolidation*.
564
565Consolidating two double-entry ledgers is componentwise addition of debits and credits,
566which is what aggregating accounts means, and it is the addition `LedgerState` already
567carries. An observable that is additive under it, and continuous, is linear by Cauchy's
568functional equation, and then part 2 forces it to be the imbalance. So the open problem
569shrinks from "why linear", which is a regularity class and therefore the wrong kind of
570question, to "why additive under consolidation", which is extensivity and is the kind of
571thing a substrate can answer.
572
573**This is a reduction and not a closure, and the distinction is the whole lesson of this
574module.** Additivity is a *premise* of the theorem below, not a consequence of anything
575proved anywhere in this repository. `Foundation.JHessianGolden.additivePosting` is not
576it: that result says the total *cost* is the sum of per-coordinate costs,
577`Phi(x) = sum J(x i)`, which is a statement about the cost and not about any observable.
578Reading it as the additivity below would repeat defect 2 exactly, a splice between two
579objects that are both written as sums. Anyone continuing this line must discharge
580additivity from the substrate, and must run the admissible-class test on whatever they
581use to do it. -/
582
583/-- **The reduction: additive plus continuous plus vanishing on balance forces the
584imbalance.** Linearity never has to be assumed. Consolidation additivity and continuity
585give `ℝ`-linearity, and then the double-entry balance locus pins the observable to a
586multiple of the net imbalance.
587
588Read the premises literally. `hadd` is additivity under the componentwise addition of
589ledgers, which is consolidation. `hcont` is continuity. `hbal` is the double-entry
590balance condition and mentions no cost. Nothing here is a recognition primitive, which
591is the point: this theorem is the *conditional*, and the open problem is its
592hypothesis. -/
593theorem additive_continuous_balanced_is_imbalance
594 (f : LedgerState → ℝ)
595 (hadd : ∀ z w : LedgerState, f (z + w) = f z + f w)
596 (hcont : Continuous f)
597 (hbal : ∀ z : LedgerState, Balanced z → f z = 0) :
598 ∃ a : ℝ, ∀ z : LedgerState, f z = a * imbalance z := by
599 have hzero : f 0 = 0 := by
600 have h := hadd 0 0
601 simp only [add_zero] at h
602 linarith
603 let F : LedgerState →+ ℝ :=
604 { toFun := f, map_zero' := hzero, map_add' := hadd }
605 let L : LedgerState →ₗ[ℝ] ℝ := F.toRealLinearMap hcont
606 have hLf : ∀ z : LedgerState, L z = f z := fun _ => rfl
607 have hone : f ((1, 1) : LedgerState) = 0 := hbal (1, 1) rfl
608 have hneg : f ((0, 1) : LedgerState) = -f ((1, 0) : LedgerState) := by
609 have h := hadd (1, 0) (0, 1)
610 have he : ((1, 0) : LedgerState) + ((0, 1) : LedgerState) = (1, 1) := by
611 apply Prod.ext <;> simp
612 rw [he, hone] at h
613 linarith
614 refine ⟨f (1, 0), fun z => ?_⟩
615 have hsplit : z = z.1 • ((1, 0) : LedgerState) + z.2 • ((0, 1) : LedgerState) := by
616 apply Prod.ext <;> simp
617 have hL : f z = z.1 * f (1, 0) + z.2 * f (0, 1) := by
618 rw [← hLf z]
619 conv_lhs => rw [hsplit]
620 rw [map_add, map_smul, map_smul, smul_eq_mul, smul_eq_mul, hLf, hLf]
621 rw [hL, hneg, imbalance]
622 ring
623
624/-- The imbalance itself satisfies all three hypotheses, so the reduction is not
625vacuous and the conditional has at least one inhabitant. -/
626theorem imbalance_is_additive_continuous_balanced :
627 (∀ z w : LedgerState, imbalance (z + w) = imbalance z + imbalance w)
628 ∧ Continuous imbalance
629 ∧ (∀ z : LedgerState, Balanced z → imbalance z = 0) := by
630 refine ⟨fun z w => by simp [imbalance]; ring, ?_, fun z hz => ?_⟩
631 · exact (continuous_fst.sub continuous_snd)
632 · simp only [Balanced] at hz
633 simp [imbalance, hz]
634
635/-! ## The verdict certificate
636
637Every field below is a theorem of this file, and the certificate is deliberately
638*not* named for the claim, because the claim failed. The first six fields are the
639four frozen parts and their two tests, all true. The last two fields are the defects
640that make the parts insufficient. A reader who wants the parts must take the defects
641with them, which is the entire purpose of packaging them in one structure. -/
642
643/-- **The chart is stipulated, not derived: parts and defects together.** The four
644frozen parts hold, and two independent defects make them insufficient for the
645attribution. See the verdict at the top of this module for the third defect, that the
646remaining ADM identification is logically equivalent to the chart it was to derive
647and so is not formalizable as a gain. -/
648structure ChartStipulatedVerdict : Prop where
649 /-- Part 1, imported: sigma-conservation is preservation of the ledger area form. -/
650 sigma_is_symplectic :
651 ∀ M : Matrix (Fin 2) (Fin 2) ℝ,
652 Cost.SymplecticAction.ConservesSigma M ↔
653 ∀ v w : Fin 2 → ℝ,
654 Cost.SymplecticAction.areaForm (M.mulVec v) (M.mulVec w)
655 = Cost.SymplecticAction.areaForm v w
656 /-- Part 2, the load-bearing one: the coordinate is selected by linear algebra
657 and the double-entry balance locus, with no recognition primitive and no chosen
658 normalization in the hypothesis. -/
659 imbalance_forced :
660 ∀ a b : ℝ, (∀ z : LedgerState, Balanced z → linFunctional a b z = 0) →
661 ∀ z : LedgerState, linFunctional a b z = a * imbalance z
662 /-- Part 2's reparametrization attack *within the linear class*: the tolerated
663 family is the line of scalar multiples, including the zero functional. Note this is
664 a line and not a ray, and it is the tolerated family only after linearity has
665 already been assumed, which is what defect 1 below attacks. -/
666 tolerated_linear_family_is_a_line :
667 {f : LedgerState → ℝ | ∃ a b : ℝ, VanishesAtBalanced a b ∧ f = linFunctional a b}
668 = {f : LedgerState → ℝ | ∃ a : ℝ, f = fun z => a * imbalance z}
669 /-- Part 3: the imbalance is a canonical momentum. -/
670 imbalance_is_a_momentum :
671 ∀ v w : Fin 2 → ℝ,
672 Cost.SymplecticAction.areaForm (imbalanceTotalMap.mulVec v)
673 (imbalanceTotalMap.mulVec w)
674 = 2 * Cost.SymplecticAction.areaForm v w
675 /-- Part 4: the cost is exactly the squared imbalance over twice the Casimir. -/
676 cost_is_squared_imbalance :
677 ∀ k t : ℝ, 0 < k → Cost.Jlog t = imbalance (orbitPoint k t) ^ 2 / (2 * k)
678 /-- Part 4's corollary: the stipulated chart is that coordinate. -/
679 chart_is_derived :
680 ∀ k t : ℝ, 0 < k →
681 t = 2 * Real.arsinh (imbalance (orbitPoint k t) / (2 * Real.sqrt k))
682 /-- The deletion test: a neighbouring cost fails part 4. Passing this is necessary
683 and, as the earlier panel showed for `oscCost_not_quadratic_in_log_chart`, far from
684 sufficient, since the chart forces the cost anyway. -/
685 deletion_test :
686 ¬ ∃ C : ℝ, ∀ u : ℝ, powTwoJlog (2 * Real.arsinh u) = C * u ^ 2
687 /-- **Defect 1, decisive.** Drop linearity and the tolerated coordinate family is
688 infinite-dimensional: there is a strictly monotone coordinate vanishing exactly on
689 the balance locus, belonging to an area-preserving pair, in which the cost is not
690 quadratic. -/
691 linearity_is_load_bearing :
692 ∃ g : ℝ → ℝ, StrictMono g ∧ (∀ m : ℝ, g m = 0 ↔ m = 0)
693 ∧ (∀ m q : ℝ, Matrix.det !![1 + 3 * m ^ 2, 0; q, 1 / (1 + 3 * m ^ 2)] = 1)
694 ∧ ¬ ∃ C : ℝ, ∀ m : ℝ, m ^ 2 / 2 = C * g m ^ 2
695 /-- **Defect 2.** The symplectic module costs an event, part 4 costs a state, and
696 the two disagree, so part 1 does not license part 4. -/
697 state_event_splice : Cost.Jlog 1 ≠ Cost.Jlog 2
698 /-- **The successor, as a conditional.** Linearity never needs to be assumed:
699 additivity under ledger consolidation plus continuity plus vanishing on the balance
700 locus already forces the imbalance. The open problem is the additivity hypothesis,
701 which nothing in this repository currently supplies. -/
702 reduction_to_additivity :
703 ∀ f : LedgerState → ℝ,
704 (∀ z w : LedgerState, f (z + w) = f z + f w) → Continuous f →
705 (∀ z : LedgerState, Balanced z → f z = 0) →
706 ∃ a : ℝ, ∀ z : LedgerState, f z = a * imbalance z
707
708theorem chartStipulatedVerdict : ChartStipulatedVerdict where
709 sigma_is_symplectic := Cost.SymplecticAction.conservesSigma_iff_preservesArea
710 imbalance_forced := imbalance_forced_by_balance_locus
711 tolerated_linear_family_is_a_line := tolerated_family_is_a_scale_ray
712 imbalance_is_a_momentum := imbalance_total_is_a_canonical_pair
713 cost_is_squared_imbalance := Jlog_eq_imbalance_sq_div_two_casimir
714 chart_is_derived := chart_is_the_imbalance_coordinate
715 deletion_test := powTwoJlog_not_quadratic_in_imbalance
716 linearity_is_load_bearing := chart_not_forced_without_linearity
717 state_event_splice := event_cost_differs_from_state_cost
718 reduction_to_additivity := additive_continuous_balanced_is_imbalance
719
720/-! ## Axiom audit -/
721
722#print axioms vanishesAtBalanced_iff
723#print axioms imbalance_is_the_unique_linear_selection
724#print axioms vanishesOnBalancedLocus_iff
725#print axioms imbalance_forced_by_balance_locus
726#print axioms tolerated_family_is_a_scale_ray
727#print axioms imbalanceTotalMap_det
728#print axioms imbalance_total_is_a_canonical_pair
729#print axioms Jlog_eq_two_sinh_half_sq
730#print axioms orbitPoint_casimir
731#print axioms orbitPoint_imbalance
732#print axioms Jlog_eq_imbalance_sq_div_two_casimir
733#print axioms chart_variable_is_the_normalized_imbalance
734#print axioms chart_is_the_imbalance_coordinate
735#print axioms sinh_two_arsinh
736#print axioms powTwoJlog_not_quadratic_in_imbalance
737#print axioms nlP_eq_zero_iff
738#print axioms nlP_strictMono
739#print axioms nlP_hasDerivAt
740#print axioms nlQ_hasDerivAt_snd
741#print axioms nl_jacobian_det_eq_one
742#print axioms cost_not_quadratic_in_nlP
743#print axioms chart_not_forced_without_linearity
744#print axioms event_cost_differs_from_state_cost
745#print axioms orbitPoint_is_reached_by_event
746#print axioms additive_continuous_balanced_is_imbalance
747#print axioms imbalance_is_additive_continuous_balanced
748#print axioms chartStipulatedVerdict
749
750end
751
752end ChartFromLedgerMomentum
753end SevenGaps
754end Gravity
755end IndisputableMonolith
756