Large Signal Model · Lean source
BaseNormTopology.lean
Declared contract recorded Coverage and evidence
The cited release explicitly reports completion of its registered formal contract, under its exact hypotheses.
This viewer reads the retained source; it does not run Lean or assign new claim mappings.
Local imports (1)
KomorebiLSM/BaseNormTopology.lean117 lines
Original source path
Lean/KomorebiLSM/BaseNormTopology.leanSkip declarations and read code
1 import KomorebiLSM.BaseNorm
2
3 /-! Finite-dimensional closed cones with strict mass have compact bases.
4 The infimum construction is consequently nondegenerate. -/
5 set_option autoImplicit false
6 namespace Komorebi.LSM.BaseNorm.ProbabilityCone
7 variable {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
8 variable [FiniteDimensional ℝ E] (C : ProbabilityCone E)
9
10 /-- A uniform cone bound is derived by minimizing mass on the unit cone slice. -/
11 theorem exists_cone_bound : ∃ R > 0, ∀ x ∈ C.carrier, ‖x‖ ≤ R*C.mass x := by
12 let S := Metric.sphere (0 : E) 1 ∩ C.carrier
13 have hcompact : IsCompact S := (isCompact_sphere (0 : E) 1).inter_right C.closed
14 have hunit : ∀ x : E, x ∈ C.carrier → x ≠ 0 → (‖x‖⁻¹ : ℝ) • x ∈ S := by
15 intro x hx hn
16 have hp : 0 < ‖x‖ := norm_pos_iff.mpr hn
17 refine ⟨?_,C.smul_mem (inv_nonneg.mpr (norm_nonneg x)) hx⟩
18 change dist ((‖x‖⁻¹ : ℝ) • x) 0 = 1
19 simp only [dist_zero_right,norm_smul,Real.norm_eq_abs,abs_inv,abs_norm,
20 inv_mul_cancel₀ (ne_of_gt hp)]
21 by_cases hs : S.Nonempty
22 · obtain ⟨y,hy,hmin⟩ := hcompact.exists_isMinOn hs C.mass.continuous_of_finiteDimensional.continuousOn
23 have hny : ‖y‖=1 := by simpa only [Metric.mem_sphere,dist_zero_right] using hy.1
24 have hyne : y ≠ 0 := by intro h; simp [h] at hny
25 have hd : 0 < C.mass y := C.mass_pos hy.2 hyne
26 refine ⟨(C.mass y)⁻¹,inv_pos.mpr hd,?_⟩
27 intro x hx
28 by_cases hn : x=0
29 · simp [hn]
30 have hp : 0<‖x‖ := norm_pos_iff.mpr hn
31 have hm := hmin (hunit x hx hn)
32 change C.mass y ≤ C.mass ((‖x‖⁻¹ : ℝ) • x) at hm
33 simp only [map_smul,smul_eq_mul] at hm
34 have hm' : C.mass y ≤ C.mass x/‖x‖ := by simpa only [div_eq_mul_inv,mul_comm] using hm
35 have he := (le_div_iff₀ hp).mp hm'
36 have ht : ‖x‖ ≤ C.mass x / C.mass y := (le_div_iff₀ hd).mpr (by nlinarith)
37 simpa only [div_eq_mul_inv,mul_comm] using ht
38 · refine ⟨1,by norm_num,?_⟩
39 intro x hx
40 have hn : x=0 := by
41 by_contra h
42 exact hs ⟨_,hunit x hx h⟩
43 simp [hn]
44
45 theorem base_closed : IsClosed C.base :=
46 C.closed.inter (isClosed_eq C.mass.continuous_of_finiteDimensional continuous_const)
47
48 /-- Compactness follows from the structural cone assumptions. -/
49 theorem base_compact : IsCompact C.base := by
50 obtain ⟨R,_,hR⟩ := C.exists_cone_bound
51 apply Metric.isCompact_of_isClosed_isBounded C.base_closed
52 apply (Metric.isBounded_iff_subset_closedBall (0 : E)).mpr
53 refine ⟨R,?_⟩
54 intro x hx
55 have h := hR x hx.1
56 rw [hx.2,mul_one] at h
57 simpa only [Metric.mem_closedBall,dist_zero_right] using h
58
59 omit [FiniteDimensional ℝ E] in
60 theorem base_convex : Convex ℝ C.base := by
61 intro x hx y hy a b ha hb hab
62 refine ⟨C.add_mem (C.smul_mem ha hx.1) (C.smul_mem hb hy.1),?_⟩
63 simp only [map_add,map_smul,smul_eq_mul,hx.2,hy.2,mul_one,hab]
64
65 /-- The original ambient norm is bounded by a fixed multiple of the base norm. -/
66 theorem exists_norm_le_value : ∃ R > 0, ∀ x : E, ‖x‖ ≤ R*C.value x := by
67 obtain ⟨R,hRp,hR⟩ := C.exists_cone_bound
68 refine ⟨R,hRp,?_⟩
69 intro x
70 have h : ‖x‖/R ≤ C.value x := by
71 apply C.le_value
72 intro u hu v hv hx
73 apply (div_le_iff₀ hRp).mpr
74 have ht := norm_sub_le u v
75 rw [hx]
76 nlinarith [hR u hu,hR v hv]
77 have hm := (div_le_iff₀ hRp).mp h
78 simpa only [mul_comm] using hm
79
80 @[simp] theorem value_eq_zero_iff (x : E) : C.value x=0 ↔ x=0 := by
81 constructor
82 · intro h
83 obtain ⟨R,_,hR⟩ := C.exists_norm_le_value
84 have hb := hR x
85 rw [h,mul_zero] at hb
86 exact norm_eq_zero.mp (le_antisymm hb (norm_nonneg x))
87 · intro h; simp [h]
88
89 /-- The actual infimum has every real norm law, including nondegeneracy. -/
90 theorem base_norm_laws :
91 (∀ x, 0 ≤ C.value x) ∧
92 (∀ x, C.value x=0 ↔ x=0) ∧
93 (∀ x y, C.value (x+y) ≤ C.value x+C.value y) ∧
94 (∀ a x, C.value (a • x)=|a| * C.value x) :=
95 ⟨C.value_nonneg,C.value_eq_zero_iff,C.value_add_le,C.value_smul⟩
96
97 /-- The infimum, packaged as an actual real seminorm. -/
98 noncomputable def seminorm : Seminorm ℝ E where
99 toFun := C.value
100 map_zero' := C.value_zero
101 add_le' := C.value_add_le
102 neg' := C.value_neg
103 smul' := fun a x => by simpa only [Real.norm_eq_abs] using C.value_smul a x
104
105 /-- Nondegeneracy makes the same infimum an additive group norm. -/
106 noncomputable def groupNorm : AddGroupNorm E where
107 toFun := C.value
108 map_zero' := C.value_zero
109 add_le' := C.value_add_le
110 neg' := C.value_neg
111 eq_zero_of_map_eq_zero' := fun x hx => (C.value_eq_zero_iff x).mp hx
112
113 omit [FiniteDimensional ℝ E] in
114 @[simp] theorem seminorm_apply (x : E) : C.seminorm x=C.value x := rfl
115 @[simp] theorem groupNorm_apply (x : E) : C.groupNorm x=C.value x := rfl
116
117 end Komorebi.LSM.BaseNorm.ProbabilityCone
Original file and source record
This copy matches the recorded source file. Its publication here does not change the work’s review status.
SHA-256: b5553b3cbc8dc89d472ee0a97dcae426e1d09b313b2a4f5b7ff3a2657bb96d37