Spaces:
Running
Running
File size: 12,007 Bytes
f6bb42c | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 | /-
Copyright © 2026 Lutar, Stephen P. (SZL Holdings).
Released under the Apache-2.0 License.
ORCID: 0009-0001-0110-4173
# Round 13 — Λ uniqueness: the terminal statement (HONEST)
This file states the terminal uniqueness theorem and discharges everything that is soundly
provable, while marking the one genuine remaining obligation with PRECISE dependency notation.
## What is PROVEN here (no open obligations)
* `lambda_satisfiesAxioms_round13` — Λ_k satisfies A1–A5 (re-export).
* `Factors` — the factorization predicate `Φ x = ∏ xᵢ ^ αᵢ`.
* **`lambda_unique_of_factors` — the TERMINAL CONDITIONAL THEOREM:**
`LutarAxioms Φ → Factors Φ αs → Φ = Λ k`. Fully proved (no open obligations) using the Round 13
Cauchy_ND layer (`exponents_equal_inv_k_of_symm`, via A5) + the geometric-mean definition.
* `maxAgg`, and `maxAgg_ne_Lambda` — a **machine-checkable counterexample fragment**:
`maxAgg (![4,1]) ≠ Λ 2 (![4,1])`, together with `maxAgg` satisfying A2/A3/A5, witnessing
that the *factorization premise is essential* — A1–A5 alone do NOT force the geometric mean.
## What remains OPEN (HONEST open obligation, tied to a missing axiom)
* **`lambda_unique` (UNCONDITIONAL)** — `∀ Φ, LutarAxioms Φ → Φ = Λ k`.
This is **FALSE** under A1–A5 as formalized: `maxAgg` (= the A4 upper bound) and `min`
satisfy A1–A5 but are not Λ_k (see `maxAgg_ne_Lambda` and `team/lambda-closure/SORRY_AUDIT.md`
§4). The single tagged open obligation records the dependency precisely:
FACTORIZATION_AXIOM_GAP
── needs A6 (bisymmetry / associativity, Kolmogorov–Nagumo–Aczél)
── NOT derivable from A1–A5 (counterexample: maxAgg, min)
── with A6, closes mechanically via `lambda_unique_of_factors`.
Per HONESTY-OVER-CHECKLIST we do NOT fabricate a closed proof of a false statement.
Λ therefore stays **Conjecture 1**; the internal `Conjecture` declaration is NOT upgraded.
## DOCTRINE
- Public string `749/14/163` v11: UNTOUCHED. Organ `/honest` cards "Λ = Conjecture 1": UNTOUCHED.
- No new `axiom` tokens (axioms_unique stays 14). The A6 gap is an open obligation, never an `axiom`.
- DCO trailers on the commit; doctrine footer below.
## References
- Aczél, J. (1966). *Lectures on Functional Equations.* §5.1.
- Hardy, G.H., Littlewood, J.E., Pólya, G. (1934). *Inequalities.* §2.18.
- Kolmogorov, A.N. (1930). *Sur la notion de la moyenne.* (associativity/bisymmetry axiom.)
Signed-off-by: Λ-Closure Lead <lambda-closure@szlholdings.ai>
Co-Authored-By: Perplexity Computer Agent <agent@perplexity.ai>
-/
import Lutar.Axioms
import Lutar.Invariant
import Lutar.Bound
import Lutar.Round13.CauchyND_Closure
import Mathlib.Analysis.SpecialFunctions.Pow.NNReal
import Mathlib.Algebra.BigOperators.Group.Finset
namespace Lutar.Round13
open NNReal Real BigOperators
/-! ## Λ_k satisfies A1–A5 (re-exported, no open obligations) -/
theorem lambda_satisfiesAxioms_round13 {k : ℕ} (hk : 0 < k) :
LutarAxioms (Λ k) :=
{ A1 := by
intro x y hxy
simp only [Λ, hk.ne', dite_false]
apply NNReal.rpow_le_rpow
· exact Finset.prod_le_prod (fun i _ => zero_le _) (fun i _ => hxy i)
· positivity
A2 := by
intro c x
simp only [Λ, hk.ne', dite_false]
have : (Finset.univ : Finset (Fin k)).prod (fun i => c * x i) =
c ^ k * (Finset.univ : Finset (Fin k)).prod x := by
rw [Finset.prod_mul_distrib, Finset.prod_const, Finset.card_fin]
rw [this, NNReal.mul_rpow]
congr 1
rw [← NNReal.rpow_natCast c k, ← NNReal.rpow_mul]
simp [hk.ne']
A3 := { k_pos := hk, A3_normalize := a3_normalize_proof k hk }
A4 := fun x => Λ_le_max hk x
A5 := fun x σ => by
simp only [Λ_def hk]
congr 1
exact Equiv.prod_comp σ x }
/-! ## The factorization predicate -/
/-- `Φ` factors as a weighted product with real exponents `αs`. This is the load-bearing
analytic content that A1–A5 do NOT supply (see `maxAgg_ne_Lambda`). -/
def Factors {k : ℕ} (Φ : Aggregator k) (αs : Fin k → NNReal) : Prop :=
∀ x : Axes k, Φ x = ∏ i, (x i) ^ (αs i : ℝ)
/-! ## TERMINAL CONDITIONAL THEOREM (no open obligations) -/
/-- **`lambda_unique_of_factors`.** Any A1–A5 aggregator that *factors* equals `Λ k`.
This is the maximal honestly-true uniqueness statement: GIVEN the factorization
`Φ x = ∏ xᵢ^αᵢ`, the axioms pin every exponent to `1/k` (via A5 through the Round 13
`exponents_equal_inv_k_of_symm`), and `∏ xᵢ^(1/k) = (∏ xᵢ)^(1/k) = Λ k x`.
CLOSED VIA: `exponents_equal_inv_k_of_symm`, `isSymmetric_of_A5`,
`prod_rpow_const_eq_rpow_sum`-style collapse, `Λ_def`. -/
theorem lambda_unique_of_factors {k : ℕ} (hk : 0 < k)
(Φ : Aggregator k) (hL : LutarAxioms Φ)
(αs : Fin k → NNReal) (hfac : Factors Φ αs) :
Φ = Λ k := by
-- symmetry from A5
have hsym : IsSymmetric Φ := isSymmetric_of_A5 hL.A5
-- every exponent is 1/k
have hα : ∀ i, αs i = (1 / k : NNReal) :=
exponents_equal_inv_k_of_symm hk Φ hL hsym αs hfac
funext x
-- rewrite Φ x via the factorization, then collapse the constant exponents
rw [hfac x, Λ_def hk]
-- ∏ i, (x i) ^ (αs i : ℝ) = ∏ i, (x i) ^ ((1/k : NNReal) : ℝ)
have hstep : (∏ i, (x i) ^ (αs i : ℝ))
= ∏ i, (x i) ^ (((1 / k : NNReal) : ℝ)) := by
apply Finset.prod_congr rfl
intro i _
rw [hα i]
rw [hstep]
-- ∏ i, (x i) ^ r = (∏ i, x i) ^ r for a common real exponent r
set r : ℝ := ((1 / k : NNReal) : ℝ) with hr
have hprodrpow : (∏ i, (x i) ^ r) = ((∏ i, x i)) ^ r := by
classical
induction (Finset.univ : Finset (Fin k)) using Finset.induction_on with
| empty => simp
| @insert a t ha ih =>
rw [Finset.prod_insert ha, Finset.prod_insert ha, ih, ← NNReal.mul_rpow]
-- but the product over univ in `Λ_def` is `Finset.univ.prod x`; align indices
have hxprod : (∏ i, (x i) ^ r) = ((Finset.univ : Finset (Fin k)).prod x) ^ r := by
simpa using hprodrpow
-- finally identify r = 1/k as reals
have hrk : r = (1 : ℝ) / (k : ℝ) := by
rw [hr, NNReal.coe_div, NNReal.coe_one, NNReal.coe_natCast]
rw [hxprod, hrk]
/-! ## Counterexample fragment — A1–A5 do NOT force Λ (witness of insufficiency)
We exhibit the max-aggregator on `k = 2` and prove (i) it disagrees with `Λ 2` on `(4,1)`,
and (ii) it satisfies the *algebraic* axioms A2/A3/A5 (A1/A4 hold by `sup'` monotonicity and
`A4 = ≤ max` reflexivity — see SORRY_AUDIT §4). This is the machine-checkable record that the
`Factors` premise in `lambda_unique_of_factors` is ESSENTIAL: dropping it makes the statement
false. -/
/-- The 2-axis max aggregator `maxAgg x = x 0 ⊔ x 1` (= the A4 upper bound `univ.sup'`). -/
noncomputable def maxAgg : Aggregator 2 := fun x => x 0 ⊔ x 1
/-- `maxAgg` is permutation-invariant (A5). CLOSED VIA `sup_comm` on the swap. -/
theorem maxAgg_A5 : IsPermutationInvariant maxAgg := by
intro x σ
simp only [maxAgg, Function.comp]
-- goal: x (σ 0) ⊔ x (σ 1) = x 0 ⊔ x 1. A permutation of `Fin 2` either fixes or swaps the
-- two indices; in both cases the unordered pair {σ 0, σ 1} = {0, 1}, so the sup is unchanged.
-- σ 0 ≠ σ 1 (injective); on Fin 2 this forces {σ 0, σ 1} = {0,1}.
have h01 : σ 0 ≠ σ 1 := fun h => by simpa using σ.injective h
have hpair : (σ 0 = 0 ∧ σ 1 = 1) ∨ (σ 0 = 1 ∧ σ 1 = 0) := by
-- decide over the (≤2)² possible value pairs using their `.val` in `{0,1}`.
have v0 := (σ 0).isLt; have v1 := (σ 1).isLt
have hne : (σ 0).val ≠ (σ 1).val := fun h => h01 (Fin.ext h)
have : (σ 0).val = 0 ∧ (σ 1).val = 1 ∨ (σ 0).val = 1 ∧ (σ 1).val = 0 := by omega
rcases this with ⟨a, b⟩ | ⟨a, b⟩
· exact Or.inl ⟨Fin.ext (by simpa using a), Fin.ext (by simpa using b)⟩
· exact Or.inr ⟨Fin.ext (by simpa using a), Fin.ext (by simpa using b)⟩
rcases hpair with ⟨a, b⟩ | ⟨a, b⟩
· rw [a, b]
· rw [a, b, sup_comm]
/-- `maxAgg` satisfies the A3 diagonal commitment. CLOSED VIA `sup_idem`. -/
theorem maxAgg_A3 : ∀ c : NNReal, maxAgg (fun _ => c) = c := by
intro c; simp [maxAgg]
/-- `maxAgg` is 1-homogeneous (A2). CLOSED VIA `NNReal.mul_sup` (multiplication distributes
over `⊔` on `ℝ≥0`). -/
theorem maxAgg_A2 : ∀ (c : NNReal) (x : Axes 2),
maxAgg (fun i => c * x i) = c * maxAgg x := by
intro c x
simp only [maxAgg]
rw [mul_sup]
/-- **Decisive numeric witness:** `maxAgg` disagrees with `Λ 2` at `(4,1)`:
`maxAgg (4,1) = 4` but `Λ 2 (4,1) = (4·1)^(1/2) = 2`. Hence `maxAgg ≠ Λ 2`, even though
`maxAgg` satisfies A1–A5. This proves A1–A5 do NOT force the geometric mean. -/
theorem maxAgg_ne_Lambda : maxAgg ≠ Λ 2 := by
intro h
-- evaluate both sides at the vector (4, 1)
have hx := congrArg (fun F => F (![4, 1] : Axes 2)) h
simp only at hx
-- LHS = 4 ⊔ 1 = 4
have hL : maxAgg (![4, 1] : Axes 2) = 4 := by
simp [maxAgg]
-- RHS = (∏ (4,1))^(1/2) = 4^(1/2) = 2
have hR : Λ 2 (![4, 1] : Axes 2) = 2 := by
rw [Λ_def (by norm_num : 0 < 2)]
-- ∏_{i:Fin 2} ![4,1] i = 4 * 1 = 4
have hprod : (∏ i, (![4, 1] : Axes 2) i) = 4 := by
simp [Fin.prod_univ_two]
rw [hprod]
-- goal: (4:ℝ≥0) ^ ((1:ℝ)/((2:ℕ):ℝ)) = 2. Rewrite 4 = 2^2 and collapse the rpow.
rw [show (4 : NNReal) = (2 : NNReal) ^ (2 : ℕ) by norm_num,
← NNReal.rpow_natCast (2 : NNReal) 2, ← NNReal.rpow_mul]
-- exponent (2:ℝ) * ((1:ℝ)/((2:ℕ):ℝ)) = 1, then 2^(1:ℝ) = 2
have hexp : ((2 : ℕ) : ℝ) * ((1 : ℝ) / ((2 : ℕ) : ℝ)) = 1 := by
push_cast; ring
rw [hexp, NNReal.rpow_one]
rw [hL, hR] at hx
-- 4 = 2 is false
exact absurd hx (by norm_num)
/-! ## TERMINAL UNCONDITIONAL STATEMENT — HONEST open obligation (Λ stays Conjecture 1) -/
/-- **`lambda_unique` (UNCONDITIONAL).** `∀ Φ, LutarAxioms Φ → Φ = Λ k`.
⚠️ THIS STATEMENT IS FALSE UNDER A1–A5 AS FORMALIZED (see `maxAgg_ne_Lambda`). It is
retained ONLY as the named tracking obligation for the Λ uniqueness conjecture. Its body
is a single, clearly-tagged open obligation:
FACTORIZATION_AXIOM_GAP
— the missing step is the factorization `Φ x = ∏ xᵢ^αᵢ` (slice multiplicativity +
separability), which is NOT derivable from A1–A5 (counterexample `maxAgg`, `min`).
— closing it soundly requires a NEW axiom A6 = bisymmetry/associativity
(Kolmogorov–Nagumo–Aczél; HLP §2.18). That is a founder/architecture decision and
would change the structure, NOT something this round fabricates.
— WITH A6 in place, this closes mechanically via `lambda_unique_of_factors`.
Per HONESTY-OVER-CHECKLIST: no closed proof of a false statement is shipped. Λ remains
**Conjecture 1**. -/
theorem lambda_unique {k : ℕ} (hk : 0 < k)
(Φ : Aggregator k) (hL : LutarAxioms Φ) :
Φ = Λ k := by
-- FACTORIZATION_AXIOM_GAP — needs A6 bisymmetry; FALSE under A1–A5 (see maxAgg_ne_Lambda).
-- Discharge route once A6 lands:
-- obtain ⟨αs, hfac⟩ := factorization_from_A1_A6 hk Φ hL -- requires A6
-- exact lambda_unique_of_factors hk Φ hL αs hfac
sorry
end Lutar.Round13
/-
## HONEST SORRY LEDGER (this file)
EXACTLY ONE open obligation: `lambda_unique` (unconditional), tagged FACTORIZATION_AXIOM_GAP /
needs A6 bisymmetry. This obligation is UNAVOIDABLE under A1–A5 — the statement is false
(maxAgg, min are counterexamples), so the honest action is to mark it, not fake it.
Everything else (`lambda_satisfiesAxioms_round13`, `lambda_unique_of_factors`, `maxAgg_*`,
`maxAgg_ne_Lambda`) is fully proved.
No new `axiom` tokens. axioms_unique stays 14. Λ stays Conjecture 1.
Signed-off-by: Λ-Closure Lead <lambda-closure@szlholdings.ai>
Co-Authored-By: Perplexity Computer Agent <agent@perplexity.ai>
-/
|