@@ -6,7 +6,7 @@ Authors: Yury Kudryashov, Frédéric Dupuis
66module
77
88public import Mathlib.Algebra.Order.Archimedean.Real.Basic
9- public import Mathlib.Geometry.Convex.Cone.Basic
9+ public import Mathlib.Geometry.Convex.Cone.Pointed
1010public import Mathlib.LinearAlgebra.LinearPMap
1111
1212/-!
@@ -56,7 +56,7 @@ namespace RieszExtension
5656
5757open Submodule
5858
59- variable (s : ConvexCone ℝ E) (f : E →ₗ.[ℝ] ℝ)
59+ variable (s : PointedCone ℝ E) (f : E →ₗ.[ℝ] ℝ)
6060
6161/-- Induction step in M. Riesz extension theorem. Given a convex cone `s` in a vector space `E`,
6262a partially defined linear map `f : f.domain → ℝ`, assume that `f` is nonnegative on `f.domain ∩ p`
@@ -142,7 +142,7 @@ end RieszExtension
142142and a linear `f : p → ℝ`, assume that `f` is nonnegative on `p ∩ s` and `p + s = E`. Then
143143there exists a globally defined linear function `g : E → ℝ` that agrees with `f` on `p`,
144144and is nonnegative on `s`. -/
145- theorem riesz_extension (s : ConvexCone ℝ E) (f : E →ₗ.[ℝ] ℝ)
145+ theorem riesz_extension (s : PointedCone ℝ E) (f : E →ₗ.[ℝ] ℝ)
146146 (nonneg : ∀ x : f.domain, (x : E) ∈ s → 0 ≤ f x)
147147 (dense : ∀ y, ∃ x : f.domain, (x : E) + y ∈ s) :
148148 ∃ g : E →ₗ[ℝ] ℝ, (∀ x : f.domain, g x = f x) ∧ ∀ x ∈ s, 0 ≤ g x := by
@@ -160,21 +160,18 @@ theorem exists_extension_of_le_sublinear (f : E →ₗ.[ℝ] ℝ) (N : E → ℝ
160160 (N_hom : ∀ c : ℝ, 0 < c → ∀ x, N (c • x) = c * N x) (N_add : ∀ x y, N (x + y) ≤ N x + N y)
161161 (hf : ∀ x : f.domain, f x ≤ N x) :
162162 ∃ g : E →ₗ[ℝ] ℝ, (∀ x : f.domain, g x = f x) ∧ ∀ x, g x ≤ N x := by
163- let s : ConvexCone ℝ (E × ℝ) :=
163+ have N_0 : N 0 = 0 := by grind [N_hom 2 (by norm_num) 0 , smul_zero]
164+ let s : PointedCone ℝ (E × ℝ) :=
164165 { carrier := { p : E × ℝ | N p.1 ≤ p.2 }
165- smul_mem' := fun c hc p hp =>
166- calc
167- N (c • p.1 ) = c * N p.1 := N_hom c hc p.1
168- _ ≤ c * p.2 := by gcongr; exact hp
169- add_mem' := fun x hx y hy => (N_add _ _).trans (add_le_add hx hy) }
166+ zero_mem' := by simp [N_0]
167+ smul_mem' := fun ⟨_, hc⟩ _ _ => by rcases eq_or_lt_of_le' hc <;> simp_all
168+ add_mem' := fun hx hy => (N_add _ _).trans (add_le_add hx hy) }
170169 set f' := (-f).coprod (LinearMap.id.toPMap ⊤)
171170 have hf'_nonneg : ∀ x : f'.domain, x.1 ∈ s → 0 ≤ f' x := fun x (hx : N x.1 .1 ≤ x.1 .2 ) ↦ by
172171 simpa [f'] using le_trans (hf ⟨x.1 .1 , x.2 .1 ⟩) hx
173172 have hf'_dense : ∀ y : E × ℝ, ∃ x : f'.domain, ↑x + y ∈ s := by
174173 rintro ⟨x, y⟩
175- refine ⟨⟨(0 , N x - y), ⟨f.domain.zero_mem, trivial⟩⟩, ?_⟩
176- simp only [s, ConvexCone.mem_mk, mem_setOf_eq, Prod.fst_add, Prod.snd_add, zero_add,
177- sub_add_cancel, le_rfl]
174+ exact ⟨⟨(0 , N x - y), ⟨f.domain.zero_mem, trivial⟩⟩, by simp [s]⟩
178175 obtain ⟨g, g_eq, g_nonneg⟩ := riesz_extension s f' hf'_nonneg hf'_dense
179176 replace g_eq : ∀ (x : f.domain) (y : ℝ), g (x, y) = y - f x := fun x y ↦
180177 (g_eq ⟨(x, y), ⟨x.2 , trivial⟩⟩).trans (sub_eq_neg_add _ _).symm
0 commit comments