File: Mathlib/Analysis/Calculus/TangentCone.lean

full_name: tangentConeAt
code: /-- The set of all tangent directions to the set `s` at the point `x`. -/
def tangentConeAt (s : Set E) (x : E) : Set E 
goal: Set E

full_name: uniqueDiffWithinAt_iff
code: /-- A property ensuring that the tangent cone to `s` at `x` spans a dense subset of the whole space.
The main role of this property is to ensure that the differential within `s` at `x` is unique,
hence this name. The uniqueness it asserts is proved in `UniqueDiffWithinAt.eq` in `Fderiv.Basic`.
To avoid pathologies in dimension 0, we also require that `x` belongs to the closure of `s` (which
is automatic when `E` is not `0`-dimensional). -/
@[mk_iff]
structure UniqueDiffWithinAt (s : Set E) (x : E) : Prop where
  dense_tangentCone : Dense (Submodule.span 𝕜 (tangentConeAt 𝕜 s x) : Set E)
  mem_closure : x ∈ closure s
goal: UniqueDiffWithinAt 𝕜 s x ↔ Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 s x)) ∧ x ∈ closure s

full_name: UniqueDiffWithinAt.mem_closure
code: /-- A property ensuring that the tangent cone to `s` at `x` spans a dense subset of the whole space.
The main role of this property is to ensure that the differential within `s` at `x` is unique,
hence this name. The uniqueness it asserts is proved in `UniqueDiffWithinAt.eq` in `Fderiv.Basic`.
To avoid pathologies in dimension 0, we also require that `x` belongs to the closure of `s` (which
is automatic when `E` is not `0`-dimensional). -/
@[mk_iff]
structure UniqueDiffWithinAt (s : Set E) (x : E) : Prop where
  dense_tangentCone : Dense (Submodule.span 𝕜 (tangentConeAt 𝕜 s x) : Set E)
  mem_closure : x ∈ closure s
goal: x ∈ closure s

full_name: UniqueDiffWithinAt
code: /-- A property ensuring that the tangent cone to `s` at `x` spans a dense subset of the whole space.
The main role of this property is to ensure that the differential within `s` at `x` is unique,
hence this name. The uniqueness it asserts is proved in `UniqueDiffWithinAt.eq` in `Fderiv.Basic`.
To avoid pathologies in dimension 0, we also require that `x` belongs to the closure of `s` (which
is automatic when `E` is not `0`-dimensional). -/
@[mk_iff]
structure UniqueDiffWithinAt (s : Set E) (x : E) : Prop where
  dense_tangentCone : Dense (Submodule.span 𝕜 (tangentConeAt 𝕜 s x) : Set E)
  mem_closure : x ∈ closure s
goal: Prop

full_name: UniqueDiffWithinAt.dense_tangentCone
code: /-- A property ensuring that the tangent cone to `s` at `x` spans a dense subset of the whole space.
The main role of this property is to ensure that the differential within `s` at `x` is unique,
hence this name. The uniqueness it asserts is proved in `UniqueDiffWithinAt.eq` in `Fderiv.Basic`.
To avoid pathologies in dimension 0, we also require that `x` belongs to the closure of `s` (which
is automatic when `E` is not `0`-dimensional). -/
@[mk_iff]
structure UniqueDiffWithinAt (s : Set E) (x : E) : Prop where
  dense_tangentCone : Dense (Submodule.span 𝕜 (tangentConeAt 𝕜 s x) : Set E)
  mem_closure : x ∈ closure s
goal: Dense ↑(Submodule.span 𝕜 (tangentConeAt 𝕜 s x))

full_name: UniqueDiffOn
code: /-- A property ensuring that the tangent cone to `s` at any of its points spans a dense subset of
the whole space. The main role of this property is to ensure that the differential along `s` is
unique, hence this name. The uniqueness it asserts is proved in `UniqueDiffOn.eq` in
`Fderiv.Basic`. -/
def UniqueDiffOn (s : Set E) : Prop 
goal: Prop

full_name: mem_tangentConeAt_of_pow_smul
code: theorem mem_tangentConeAt_of_pow_smul {r : 𝕜} (hr₀ : r ≠ 0) (hr : ‖r‖ < 1)
    (hs : ∀ᶠ n : ℕ in atTop, x + r ^ n • y ∈ s) : y ∈ tangentConeAt 𝕜 s x 
goal: y ∈ tangentConeAt 𝕜 s x

full_name: tangentCone_univ
code: theorem tangentCone_univ : tangentConeAt 𝕜 univ x = univ 
goal: tangentConeAt 𝕜 Set.univ x = Set.univ

full_name: tangentCone_mono
code: theorem tangentCone_mono (h : s ⊆ t) : tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 t x 
goal: tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 t x

full_name: tangentConeAt.lim_zero
code: /-- Auxiliary lemma ensuring that, under the assumptions defining the tangent cone,
the sequence `d` tends to 0 at infinity. -/
theorem tangentConeAt.lim_zero {α : Type*} (l : Filter α) {c : α → 𝕜} {d : α → E}
    (hc : Tendsto (fun n => ‖c n‖) l atTop) (hd : Tendsto (fun n => c n • d n) l (𝓝 y)) :
    Tendsto d l (𝓝 0) 
goal: Filter.Tendsto d l (𝓝 0)

full_name: tangentCone_mono_nhds
code: theorem tangentCone_mono_nhds (h : 𝓝[s] x ≤ 𝓝[t] x) :
    tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 t x 
goal: tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 t x

full_name: tangentCone_congr
code: /-- Tangent cone of `s` at `x` depends only on `𝓝[s] x`. -/
theorem tangentCone_congr (h : 𝓝[s] x = 𝓝[t] x) : tangentConeAt 𝕜 s x = tangentConeAt 𝕜 t x 
goal: tangentConeAt 𝕜 s x = tangentConeAt 𝕜 t x

full_name: tangentCone_inter_nhds
code: /-- Intersecting with a neighborhood of the point does not change the tangent cone. -/
theorem tangentCone_inter_nhds (ht : t ∈ 𝓝 x) : tangentConeAt 𝕜 (s ∩ t) x = tangentConeAt 𝕜 s x 
goal: tangentConeAt 𝕜 (s ∩ t) x = tangentConeAt 𝕜 s x

full_name: subset_tangentCone_prod_left
code: /-- The tangent cone of a product contains the tangent cone of its left factor. -/
theorem subset_tangentCone_prod_left {t : Set F} {y : F} (ht : y ∈ closure t) :
    LinearMap.inl 𝕜 E F '' tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 (s ×ˢ t) (x, y) 
goal: ⇑(LinearMap.inl 𝕜 E F) '' tangentConeAt 𝕜 s x ⊆ tangentConeAt 𝕜 (s ×ˢ t) (x, y)

full_name: subset_tangentCone_prod_right
code: /-- The tangent cone of a product contains the tangent cone of its right factor. -/
theorem subset_tangentCone_prod_right {t : Set F} {y : F} (hs : x ∈ closure s) :
    LinearMap.inr 𝕜 E F '' tangentConeAt 𝕜 t y ⊆ tangentConeAt 𝕜 (s ×ˢ t) (x, y) 
goal: ⇑(LinearMap.inr 𝕜 E F) '' tangentConeAt 𝕜 t y ⊆ tangentConeAt 𝕜 (s ×ˢ t) (x, y)

full_name: mapsTo_tangentCone_pi
code: /-- The tangent cone of a product contains the tangent cone of each factor. -/
theorem mapsTo_tangentCone_pi {ι : Type*} [DecidableEq ι] {E : ι → Type*}
    [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace 𝕜 (E i)] {s : ∀ i, Set (E i)} {x : ∀ i, E i}
    {i : ι} (hi : ∀ j ≠ i, x j ∈ closure (s j)) :
    MapsTo (LinearMap.single i : E i →ₗ[𝕜] ∀ j, E j) (tangentConeAt 𝕜 (s i) (x i))
      (tangentConeAt 𝕜 (Set.pi univ s) x) 
goal: Set.MapsTo (⇑(LinearMap.single i)) (tangentConeAt 𝕜 (s i) (x i)) (tangentConeAt 𝕜 (Set.univ.pi s) x)

full_name: mem_tangentCone_of_openSegment_subset
code: /-- If a subset of a real vector space contains an open segment, then the direction of this
segment belongs to the tangent cone at its endpoints. -/
theorem mem_tangentCone_of_openSegment_subset {s : Set G} {x y : G} (h : openSegment ℝ x y ⊆ s) :
    y - x ∈ tangentConeAt ℝ s x 
goal: y - x ∈ tangentConeAt ℝ s x

full_name: mem_tangentCone_of_segment_subset
code: /-- If a subset of a real vector space contains a segment, then the direction of this
segment belongs to the tangent cone at its endpoints. -/
theorem mem_tangentCone_of_segment_subset {s : Set G} {x y : G} (h : segment ℝ x y ⊆ s) :
    y - x ∈ tangentConeAt ℝ s x 
goal: y - x ∈ tangentConeAt ℝ s x

full_name: UniqueDiffOn.uniqueDiffWithinAt
code: theorem UniqueDiffOn.uniqueDiffWithinAt {s : Set E} {x} (hs : UniqueDiffOn 𝕜 s) (h : x ∈ s) :
    UniqueDiffWithinAt 𝕜 s x 
goal: UniqueDiffWithinAt 𝕜 s x

full_name: uniqueDiffWithinAt_univ
code: theorem uniqueDiffWithinAt_univ : UniqueDiffWithinAt 𝕜 univ x 
goal: UniqueDiffWithinAt 𝕜 Set.univ x

full_name: uniqueDiffOn_univ
code: theorem uniqueDiffOn_univ : UniqueDiffOn 𝕜 (univ : Set E) 
goal: UniqueDiffOn 𝕜 Set.univ

full_name: uniqueDiffOn_empty
code: theorem uniqueDiffOn_empty : UniqueDiffOn 𝕜 (∅ : Set E) 
goal: UniqueDiffOn 𝕜 ∅

full_name: UniqueDiffWithinAt.congr_pt
code: theorem UniqueDiffWithinAt.congr_pt (h : UniqueDiffWithinAt 𝕜 s x) (hy : x = y) :
    UniqueDiffWithinAt 𝕜 s y 
goal: UniqueDiffWithinAt 𝕜 s y

full_name: UniqueDiffWithinAt.mono_nhds
code: theorem UniqueDiffWithinAt.mono_nhds (h : UniqueDiffWithinAt 𝕜 s x) (st : 𝓝[s] x ≤ 𝓝[t] x) :
    UniqueDiffWithinAt 𝕜 t x 
goal: UniqueDiffWithinAt 𝕜 t x

full_name: UniqueDiffWithinAt.mono
code: theorem UniqueDiffWithinAt.mono (h : UniqueDiffWithinAt 𝕜 s x) (st : s ⊆ t) :
    UniqueDiffWithinAt 𝕜 t x 
goal: UniqueDiffWithinAt 𝕜 t x

full_name: uniqueDiffWithinAt_congr
code: theorem uniqueDiffWithinAt_congr (st : 𝓝[s] x = 𝓝[t] x) :
    UniqueDiffWithinAt 𝕜 s x ↔ UniqueDiffWithinAt 𝕜 t x 
goal: UniqueDiffWithinAt 𝕜 s x ↔ UniqueDiffWithinAt 𝕜 t x

full_name: uniqueDiffWithinAt_inter
code: theorem uniqueDiffWithinAt_inter (ht : t ∈ 𝓝 x) :
    UniqueDiffWithinAt 𝕜 (s ∩ t) x ↔ UniqueDiffWithinAt 𝕜 s x 
goal: UniqueDiffWithinAt 𝕜 (s ∩ t) x ↔ UniqueDiffWithinAt 𝕜 s x

full_name: UniqueDiffWithinAt.inter
code: theorem UniqueDiffWithinAt.inter (hs : UniqueDiffWithinAt 𝕜 s x) (ht : t ∈ 𝓝 x) :
    UniqueDiffWithinAt 𝕜 (s ∩ t) x 
goal: UniqueDiffWithinAt 𝕜 (s ∩ t) x

full_name: uniqueDiffWithinAt_inter'
code: theorem uniqueDiffWithinAt_inter' (ht : t ∈ 𝓝[s] x) :
    UniqueDiffWithinAt 𝕜 (s ∩ t) x ↔ UniqueDiffWithinAt 𝕜 s x 
goal: UniqueDiffWithinAt 𝕜 (s ∩ t) x ↔ UniqueDiffWithinAt 𝕜 s x

full_name: UniqueDiffWithinAt.inter'
code: theorem UniqueDiffWithinAt.inter' (hs : UniqueDiffWithinAt 𝕜 s x) (ht : t ∈ 𝓝[s] x) :
    UniqueDiffWithinAt 𝕜 (s ∩ t) x 
goal: UniqueDiffWithinAt 𝕜 (s ∩ t) x

full_name: uniqueDiffWithinAt_of_mem_nhds
code: theorem uniqueDiffWithinAt_of_mem_nhds (h : s ∈ 𝓝 x) : UniqueDiffWithinAt 𝕜 s x 
goal: UniqueDiffWithinAt 𝕜 s x

full_name: IsOpen.uniqueDiffWithinAt
code: theorem IsOpen.uniqueDiffWithinAt (hs : IsOpen s) (xs : x ∈ s) : UniqueDiffWithinAt 𝕜 s x 
goal: UniqueDiffWithinAt 𝕜 s x

full_name: UniqueDiffOn.inter
code: theorem UniqueDiffOn.inter (hs : UniqueDiffOn 𝕜 s) (ht : IsOpen t) : UniqueDiffOn 𝕜 (s ∩ t) 
goal: UniqueDiffOn 𝕜 (s ∩ t)

full_name: IsOpen.uniqueDiffOn
code: theorem IsOpen.uniqueDiffOn (hs : IsOpen s) : UniqueDiffOn 𝕜 s 
goal: UniqueDiffOn 𝕜 s

full_name: UniqueDiffWithinAt.prod
code: /-- The product of two sets of unique differentiability at points `x` and `y` has unique
differentiability at `(x, y)`. -/
theorem UniqueDiffWithinAt.prod {t : Set F} {y : F} (hs : UniqueDiffWithinAt 𝕜 s x)
    (ht : UniqueDiffWithinAt 𝕜 t y) : UniqueDiffWithinAt 𝕜 (s ×ˢ t) (x, y) 
goal: UniqueDiffWithinAt 𝕜 (s ×ˢ t) (x, y)

full_name: UniqueDiffWithinAt.univ_pi
code: theorem UniqueDiffWithinAt.univ_pi (ι : Type*) [Finite ι] (E : ι → Type*)
    [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace 𝕜 (E i)] (s : ∀ i, Set (E i)) (x : ∀ i, E i)
    (h : ∀ i, UniqueDiffWithinAt 𝕜 (s i) (x i)) : UniqueDiffWithinAt 𝕜 (Set.pi univ s) x 
goal: UniqueDiffWithinAt 𝕜 (Set.univ.pi s) x

full_name: UniqueDiffWithinAt.pi
code: theorem UniqueDiffWithinAt.pi (ι : Type*) [Finite ι] (E : ι → Type*)
    [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace 𝕜 (E i)] (s : ∀ i, Set (E i)) (x : ∀ i, E i)
    (I : Set ι) (h : ∀ i ∈ I, UniqueDiffWithinAt 𝕜 (s i) (x i)) :
    UniqueDiffWithinAt 𝕜 (Set.pi I s) x 
goal: UniqueDiffWithinAt 𝕜 (I.pi s) x

full_name: UniqueDiffOn.prod
code: /-- The product of two sets of unique differentiability is a set of unique differentiability. -/
theorem UniqueDiffOn.prod {t : Set F} (hs : UniqueDiffOn 𝕜 s) (ht : UniqueDiffOn 𝕜 t) :
    UniqueDiffOn 𝕜 (s ×ˢ t) 
goal: UniqueDiffOn 𝕜 (s ×ˢ t)

full_name: UniqueDiffOn.pi
code: /-- The finite product of a family of sets of unique differentiability is a set of unique
differentiability. -/
theorem UniqueDiffOn.pi (ι : Type*) [Finite ι] (E : ι → Type*) [∀ i, NormedAddCommGroup (E i)]
    [∀ i, NormedSpace 𝕜 (E i)] (s : ∀ i, Set (E i)) (I : Set ι)
    (h : ∀ i ∈ I, UniqueDiffOn 𝕜 (s i)) : UniqueDiffOn 𝕜 (Set.pi I s) 
goal: UniqueDiffOn 𝕜 (I.pi s)

full_name: UniqueDiffOn.univ_pi
code: /-- The finite product of a family of sets of unique differentiability is a set of unique
differentiability. -/
theorem UniqueDiffOn.univ_pi (ι : Type*) [Finite ι] (E : ι → Type*)
    [∀ i, NormedAddCommGroup (E i)] [∀ i, NormedSpace 𝕜 (E i)] (s : ∀ i, Set (E i))
    (h : ∀ i, UniqueDiffOn 𝕜 (s i)) : UniqueDiffOn 𝕜 (Set.pi univ s) 
goal: UniqueDiffOn 𝕜 (Set.univ.pi s)

full_name: uniqueDiffWithinAt_convex
code: /-- In a real vector space, a convex set with nonempty interior is a set of unique
differentiability at every point of its closure. -/
theorem uniqueDiffWithinAt_convex {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty)
    {x : G} (hx : x ∈ closure s) : UniqueDiffWithinAt ℝ s x 
goal: UniqueDiffWithinAt ℝ s x

full_name: uniqueDiffOn_convex
code: /-- In a real vector space, a convex set with nonempty interior is a set of unique
differentiability. -/
theorem uniqueDiffOn_convex {s : Set G} (conv : Convex ℝ s) (hs : (interior s).Nonempty) :
    UniqueDiffOn ℝ s 
goal: UniqueDiffOn ℝ s

full_name: uniqueDiffOn_Ici
code: theorem uniqueDiffOn_Ici (a : ℝ) : UniqueDiffOn ℝ (Ici a) 
goal: UniqueDiffOn ℝ (Set.Ici a)

full_name: uniqueDiffOn_Iic
code: theorem uniqueDiffOn_Iic (a : ℝ) : UniqueDiffOn ℝ (Iic a) 
goal: UniqueDiffOn ℝ (Set.Iic a)

full_name: uniqueDiffOn_Ioi
code: theorem uniqueDiffOn_Ioi (a : ℝ) : UniqueDiffOn ℝ (Ioi a) 
goal: UniqueDiffOn ℝ (Set.Ioi a)

full_name: uniqueDiffOn_Iio
code: theorem uniqueDiffOn_Iio (a : ℝ) : UniqueDiffOn ℝ (Iio a) 
goal: UniqueDiffOn ℝ (Set.Iio a)

full_name: uniqueDiffOn_Icc
code: theorem uniqueDiffOn_Icc {a b : ℝ} (hab : a < b) : UniqueDiffOn ℝ (Icc a b) 
goal: UniqueDiffOn ℝ (Set.Icc a b)

full_name: uniqueDiffOn_Ico
code: theorem uniqueDiffOn_Ico (a b : ℝ) : UniqueDiffOn ℝ (Ico a b) 
goal: UniqueDiffOn ℝ (Set.Ico a b)

full_name: uniqueDiffOn_Ioc
code: theorem uniqueDiffOn_Ioc (a b : ℝ) : UniqueDiffOn ℝ (Ioc a b) 
goal: UniqueDiffOn ℝ (Set.Ioc a b)

full_name: uniqueDiffOn_Ioo
code: theorem uniqueDiffOn_Ioo (a b : ℝ) : UniqueDiffOn ℝ (Ioo a b) 
goal: UniqueDiffOn ℝ (Set.Ioo a b)

full_name: uniqueDiffOn_Icc_zero_one
code: /-- The real interval `[0, 1]` is a set of unique differentiability. -/
theorem uniqueDiffOn_Icc_zero_one : UniqueDiffOn ℝ (Icc (0 : ℝ) 1) 
goal: UniqueDiffOn ℝ (Set.Icc 0 1)

full_name: uniqueDiffWithinAt_Ioo
code: theorem uniqueDiffWithinAt_Ioo {a b t : ℝ} (ht : t ∈ Set.Ioo a b) :
    UniqueDiffWithinAt ℝ (Set.Ioo a b) t 
goal: UniqueDiffWithinAt ℝ (Set.Ioo a b) t

full_name: uniqueDiffWithinAt_Ioi
code: theorem uniqueDiffWithinAt_Ioi (a : ℝ) : UniqueDiffWithinAt ℝ (Ioi a) a 
goal: UniqueDiffWithinAt ℝ (Set.Ioi a) a

full_name: uniqueDiffWithinAt_Iio
code: theorem uniqueDiffWithinAt_Iio (a : ℝ) : UniqueDiffWithinAt ℝ (Iio a) a 
goal: UniqueDiffWithinAt ℝ (Set.Iio a) a