File: Mathlib/Analysis/Convex/Star.lean

full_name: StarConvex
code: /-- Star-convexity of sets. `s` is star-convex at `x` if every segment from `x` to a point in `s` is
contained in `s`. -/
def StarConvex : Prop 
goal: Prop

full_name: starConvex_iff_segment_subset
code: theorem starConvex_iff_segment_subset : StarConvex 𝕜 x s ↔ ∀ ⦃y⦄, y ∈ s → [x -[𝕜] y] ⊆ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃y : E⦄, y ∈ s → [x-[𝕜]y] ⊆ s

full_name: StarConvex.segment_subset
code: theorem StarConvex.segment_subset (h : StarConvex 𝕜 x s) {y : E} (hy : y ∈ s) : [x -[𝕜] y] ⊆ s 
goal: [x-[𝕜]y] ⊆ s

full_name: StarConvex.openSegment_subset
code: theorem StarConvex.openSegment_subset (h : StarConvex 𝕜 x s) {y : E} (hy : y ∈ s) :
    openSegment 𝕜 x y ⊆ s 
goal: openSegment 𝕜 x y ⊆ s

full_name: starConvex_iff_pointwise_add_subset
code: /-- Alternative definition of star-convexity, in terms of pointwise set operations. -/
theorem starConvex_iff_pointwise_add_subset :
    StarConvex 𝕜 x s ↔ ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • {x} + b • s ⊆ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → a + b = 1 → a • {x} + b • s ⊆ s

full_name: starConvex_empty
code: theorem starConvex_empty (x : E) : StarConvex 𝕜 x ∅ 
goal: StarConvex 𝕜 x ∅

full_name: starConvex_univ
code: theorem starConvex_univ (x : E) : StarConvex 𝕜 x univ 
goal: StarConvex 𝕜 x Set.univ

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

full_name: starConvex_sInter
code: theorem starConvex_sInter {S : Set (Set E)} (h : ∀ s ∈ S, StarConvex 𝕜 x s) :
    StarConvex 𝕜 x (⋂₀ S) 
goal: StarConvex 𝕜 x (⋂₀ S)

full_name: starConvex_iInter
code: theorem starConvex_iInter {ι : Sort*} {s : ι → Set E} (h : ∀ i, StarConvex 𝕜 x (s i)) :
    StarConvex 𝕜 x (⋂ i, s i) 
goal: StarConvex 𝕜 x (⋂ i, s i)

full_name: StarConvex.union
code: theorem StarConvex.union (hs : StarConvex 𝕜 x s) (ht : StarConvex 𝕜 x t) :
    StarConvex 𝕜 x (s ∪ t) 
goal: StarConvex 𝕜 x (s ∪ t)

full_name: starConvex_iUnion
code: theorem starConvex_iUnion {ι : Sort*} {s : ι → Set E} (hs : ∀ i, StarConvex 𝕜 x (s i)) :
    StarConvex 𝕜 x (⋃ i, s i) 
goal: StarConvex 𝕜 x (⋃ i, s i)

full_name: starConvex_sUnion
code: theorem starConvex_sUnion {S : Set (Set E)} (hS : ∀ s ∈ S, StarConvex 𝕜 x s) :
    StarConvex 𝕜 x (⋃₀ S) 
goal: StarConvex 𝕜 x (⋃₀ S)

full_name: StarConvex.prod
code: theorem StarConvex.prod {y : F} {s : Set E} {t : Set F} (hs : StarConvex 𝕜 x s)
    (ht : StarConvex 𝕜 y t) : StarConvex 𝕜 (x, y) (s ×ˢ t) 
goal: StarConvex 𝕜 (x, y) (s ×ˢ t)

full_name: starConvex_pi
code: theorem starConvex_pi {ι : Type*} {E : ι → Type*} [∀ i, AddCommMonoid (E i)] [∀ i, SMul 𝕜 (E i)]
    {x : ∀ i, E i} {s : Set ι} {t : ∀ i, Set (E i)} (ht : ∀ ⦃i⦄, i ∈ s → StarConvex 𝕜 (x i) (t i)) :
    StarConvex 𝕜 x (s.pi t) 
goal: StarConvex 𝕜 x (s.pi t)

full_name: StarConvex.mem
code: theorem StarConvex.mem (hs : StarConvex 𝕜 x s) (h : s.Nonempty) : x ∈ s 
goal: x ∈ s

full_name: starConvex_iff_forall_pos
code: theorem starConvex_iff_forall_pos (hx : x ∈ s) : StarConvex 𝕜 x s ↔
    ∀ ⦃y⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 < a → 0 < b → a + b = 1 → a • x + b • y ∈ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 < a → 0 < b → a + b = 1 → a • x + b • y ∈ s

full_name: starConvex_iff_forall_ne_pos
code: theorem starConvex_iff_forall_ne_pos (hx : x ∈ s) :
    StarConvex 𝕜 x s ↔
      ∀ ⦃y⦄, y ∈ s → x ≠ y → ∀ ⦃a b : 𝕜⦄, 0 < a → 0 < b → a + b = 1 → a • x + b • y ∈ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃y : E⦄, y ∈ s → x ≠ y → ∀ ⦃a b : 𝕜⦄, 0 < a → 0 < b → a + b = 1 → a • x + b • y ∈ s

full_name: starConvex_iff_openSegment_subset
code: theorem starConvex_iff_openSegment_subset (hx : x ∈ s) :
    StarConvex 𝕜 x s ↔ ∀ ⦃y⦄, y ∈ s → openSegment 𝕜 x y ⊆ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃y : E⦄, y ∈ s → openSegment 𝕜 x y ⊆ s

full_name: starConvex_singleton
code: theorem starConvex_singleton (x : E) : StarConvex 𝕜 x {x} 
goal: StarConvex 𝕜 x {x}

full_name: StarConvex.linear_image
code: theorem StarConvex.linear_image (hs : StarConvex 𝕜 x s) (f : E →ₗ[𝕜] F) :
    StarConvex 𝕜 (f x) (f '' s) 
goal: StarConvex 𝕜 (f x) (⇑f '' s)

full_name: StarConvex.is_linear_image
code: theorem StarConvex.is_linear_image (hs : StarConvex 𝕜 x s) {f : E → F} (hf : IsLinearMap 𝕜 f) :
    StarConvex 𝕜 (f x) (f '' s) 
goal: StarConvex 𝕜 (f x) (f '' s)

full_name: StarConvex.linear_preimage
code: theorem StarConvex.linear_preimage {s : Set F} (f : E →ₗ[𝕜] F) (hs : StarConvex 𝕜 (f x) s) :
    StarConvex 𝕜 x (f ⁻¹' s) 
goal: StarConvex 𝕜 x (⇑f ⁻¹' s)

full_name: StarConvex.is_linear_preimage
code: theorem StarConvex.is_linear_preimage {s : Set F} {f : E → F} (hs : StarConvex 𝕜 (f x) s)
    (hf : IsLinearMap 𝕜 f) : StarConvex 𝕜 x (preimage f s) 
goal: StarConvex 𝕜 x (f ⁻¹' s)

full_name: StarConvex.add
code: theorem StarConvex.add {t : Set E} (hs : StarConvex 𝕜 x s) (ht : StarConvex 𝕜 y t) :
    StarConvex 𝕜 (x + y) (s + t) 
goal: StarConvex 𝕜 (x + y) (s + t)

full_name: StarConvex.add_left
code: theorem StarConvex.add_left (hs : StarConvex 𝕜 x s) (z : E) :
    StarConvex 𝕜 (z + x) ((fun x => z + x) '' s) 
goal: StarConvex 𝕜 (z + x) ((fun x => z + x) '' s)

full_name: StarConvex.add_right
code: theorem StarConvex.add_right (hs : StarConvex 𝕜 x s) (z : E) :
    StarConvex 𝕜 (x + z) ((fun x => x + z) '' s) 
goal: StarConvex 𝕜 (x + z) ((fun x => x + z) '' s)

full_name: StarConvex.preimage_add_right
code: /-- The translation of a star-convex set is also star-convex. -/
theorem StarConvex.preimage_add_right (hs : StarConvex 𝕜 (z + x) s) :
    StarConvex 𝕜 x ((fun x => z + x) ⁻¹' s) 
goal: StarConvex 𝕜 x ((fun x => z + x) ⁻¹' s)

full_name: StarConvex.preimage_add_left
code: /-- The translation of a star-convex set is also star-convex. -/
theorem StarConvex.preimage_add_left (hs : StarConvex 𝕜 (x + z) s) :
    StarConvex 𝕜 x ((fun x => x + z) ⁻¹' s) 
goal: StarConvex 𝕜 x ((fun x => x + z) ⁻¹' s)

full_name: StarConvex.sub'
code: theorem StarConvex.sub' {s : Set (E × E)} (hs : StarConvex 𝕜 (x, y) s) :
    StarConvex 𝕜 (x - y) ((fun x : E × E => x.1 - x.2) '' s) 
goal: StarConvex 𝕜 (x - y) ((fun x => x.1 - x.2) '' s)

full_name: StarConvex.smul
code: theorem StarConvex.smul (hs : StarConvex 𝕜 x s) (c : 𝕜) : StarConvex 𝕜 (c • x) (c • s) 
goal: StarConvex 𝕜 (c • x) (c • s)

full_name: StarConvex.preimage_smul
code: theorem StarConvex.preimage_smul {c : 𝕜} (hs : StarConvex 𝕜 (c • x) s) :
    StarConvex 𝕜 x ((fun z => c • z) ⁻¹' s) 
goal: StarConvex 𝕜 x ((fun z => c • z) ⁻¹' s)

full_name: StarConvex.affinity
code: theorem StarConvex.affinity (hs : StarConvex 𝕜 x s) (z : E) (c : 𝕜) :
    StarConvex 𝕜 (z + c • x) ((fun x => z + c • x) '' s) 
goal: StarConvex 𝕜 (z + c • x) ((fun x => z + c • x) '' s)

full_name: starConvex_zero_iff
code: theorem starConvex_zero_iff :
    StarConvex 𝕜 0 s ↔ ∀ ⦃x : E⦄, x ∈ s → ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s 
goal: StarConvex 𝕜 0 s ↔ ∀ ⦃x : E⦄, x ∈ s → ∀ ⦃a : 𝕜⦄, 0 ≤ a → a ≤ 1 → a • x ∈ s

full_name: StarConvex.add_smul_mem
code: theorem StarConvex.add_smul_mem (hs : StarConvex 𝕜 x s) (hy : x + y ∈ s) {t : 𝕜} (ht₀ : 0 ≤ t)
    (ht₁ : t ≤ 1) : x + t • y ∈ s 
goal: x + t • y ∈ s

full_name: StarConvex.smul_mem
code: theorem StarConvex.smul_mem (hs : StarConvex 𝕜 0 s) (hx : x ∈ s) {t : 𝕜} (ht₀ : 0 ≤ t)
    (ht₁ : t ≤ 1) : t • x ∈ s 
goal: t • x ∈ s

full_name: StarConvex.add_smul_sub_mem
code: theorem StarConvex.add_smul_sub_mem (hs : StarConvex 𝕜 x s) (hy : y ∈ s) {t : 𝕜} (ht₀ : 0 ≤ t)
    (ht₁ : t ≤ 1) : x + t • (y - x) ∈ s 
goal: x + t • (y - x) ∈ s

full_name: StarConvex.affine_preimage
code: /-- The preimage of a star-convex set under an affine map is star-convex. -/
theorem StarConvex.affine_preimage (f : E →ᵃ[𝕜] F) {s : Set F} (hs : StarConvex 𝕜 (f x) s) :
    StarConvex 𝕜 x (f ⁻¹' s) 
goal: StarConvex 𝕜 x (⇑f ⁻¹' s)

full_name: StarConvex.affine_image
code: /-- The image of a star-convex set under an affine map is star-convex. -/
theorem StarConvex.affine_image (f : E →ᵃ[𝕜] F) {s : Set E} (hs : StarConvex 𝕜 x s) :
    StarConvex 𝕜 (f x) (f '' s) 
goal: StarConvex 𝕜 (f x) (⇑f '' s)

full_name: StarConvex.neg
code: theorem StarConvex.neg (hs : StarConvex 𝕜 x s) : StarConvex 𝕜 (-x) (-s) 
goal: StarConvex 𝕜 (-x) (-s)

full_name: StarConvex.sub
code: theorem StarConvex.sub (hs : StarConvex 𝕜 x s) (ht : StarConvex 𝕜 y t) :
    StarConvex 𝕜 (x - y) (s - t) 
goal: StarConvex 𝕜 (x - y) (s - t)

full_name: starConvex_compl_Iic
code: /-- If `x < y`, then `(Set.Iic x)ᶜ` is star convex at `y`. -/
lemma starConvex_compl_Iic (h : x < y) : StarConvex 𝕜 y (Iic x)ᶜ 
goal: StarConvex 𝕜 y (Set.Iic x)ᶜ

full_name: starConvex_compl_Ici
code: /-- If `x < y`, then `(Set.Ici y)ᶜ` is star convex at `x`. -/
lemma starConvex_compl_Ici (h : x < y) : StarConvex 𝕜 x (Ici y)ᶜ 
goal: StarConvex 𝕜 x (Set.Ici y)ᶜ

full_name: starConvex_iff_div
code: /-- Alternative definition of star-convexity, using division. -/
theorem starConvex_iff_div : StarConvex 𝕜 x s ↔ ∀ ⦃y⦄, y ∈ s →
    ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → 0 < a + b → (a / (a + b)) • x + (b / (a + b)) • y ∈ s 
goal: StarConvex 𝕜 x s ↔ ∀ ⦃y : E⦄, y ∈ s → ∀ ⦃a b : 𝕜⦄, 0 ≤ a → 0 ≤ b → 0 < a + b → (a / (a + b)) • x + (b / (a + b)) • y ∈ s

full_name: StarConvex.mem_smul
code: theorem StarConvex.mem_smul (hs : StarConvex 𝕜 0 s) (hx : x ∈ s) {t : 𝕜} (ht : 1 ≤ t) :
    x ∈ t • s 
goal: x ∈ t • s

full_name: Set.OrdConnected.starConvex
code: /-- If `s` is an order-connected set in an ordered module over an ordered semiring
and all elements of `s` are comparable with `x ∈ s`, then `s` is `StarConvex` at `x`. -/
theorem Set.OrdConnected.starConvex [OrderedSemiring 𝕜] [OrderedAddCommMonoid E] [Module 𝕜 E]
    [OrderedSMul 𝕜 E] {x : E} {s : Set E} (hs : s.OrdConnected) (hx : x ∈ s)
    (h : ∀ y ∈ s, x ≤ y ∨ y ≤ x) : StarConvex 𝕜 x s 
goal: StarConvex 𝕜 x s

full_name: starConvex_iff_ordConnected
code: theorem starConvex_iff_ordConnected [LinearOrderedField 𝕜] {x : 𝕜} {s : Set 𝕜} (hx : x ∈ s) :
    StarConvex 𝕜 x s ↔ s.OrdConnected 
goal: StarConvex 𝕜 x s ↔ s.OrdConnected