@@ -591,22 +591,25 @@ end Normed
591591section RealNormed
592592variable [NormedAddCommGroup G] [NormedSpace ℝ G]
593593
594- /-- In a real vector space, a convex set with nonempty interior is a set of unique
595- differentiability at every point of its closure. -/
596- theorem uniqueDiffWithinAt_convex {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty)
597- {x : G} (hx : x ∈ closure s) : UniqueDiffWithinAt ℝ s x := by
594+ theorem Convex.span_tangentConeAt {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty)
595+ {x : G} (hx : x ∈ closure s) : Submodule.span ℝ (tangentConeAt ℝ s x) = ⊤ := by
598596 rcases hs with ⟨y, hy⟩
599597 suffices y - x ∈ interior (tangentConeAt ℝ s x) by
600- refine ⟨Dense.of_closure ?_, hx⟩
601- simp [(Submodule.span ℝ (tangentConeAt ℝ s x)).eq_top_of_nonempty_interior'
602- ⟨y - x, interior_mono Submodule.subset_span this⟩]
598+ apply (Submodule.span ℝ (tangentConeAt ℝ s x)).eq_top_of_nonempty_interior'
599+ exact ⟨y - x, interior_mono Submodule.subset_span this⟩
603600 rw [mem_interior_iff_mem_nhds]
604601 replace hy : interior s ∈ 𝓝 y := IsOpen.mem_nhds isOpen_interior hy
605602 apply mem_of_superset ((isOpenMap_sub_right x).image_mem_nhds hy)
606603 rintro _ ⟨z, zs, rfl⟩
607604 refine mem_tangentConeAt_of_openSegment_subset (Subset.trans ?_ interior_subset)
608605 exact conv.openSegment_closure_interior_subset_interior hx zs
609606
607+ /-- In a real vector space, a convex set with nonempty interior is a set of unique
608+ differentiability at every point of its closure. -/
609+ theorem uniqueDiffWithinAt_convex {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty)
610+ {x : G} (hx : x ∈ closure s) : UniqueDiffWithinAt ℝ s x := by
611+ simp [uniqueDiffWithinAt_iff, conv.span_tangentConeAt hs hx, hx]
612+
610613/-- In a real vector space, a convex set with nonempty interior is a set of unique
611614differentiability. -/
612615theorem uniqueDiffOn_convex {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty) :
0 commit comments