File: Mathlib/Analysis/Convex/Extreme.lean

full_name: IsExtreme
code: /-- A set `B` is an extreme subset of `A` if `B ⊆ A` and all points of `B` only belong to open
segments whose ends are in `B`. -/
def IsExtreme (A B : Set E) : Prop 
goal: Prop

full_name: Set.extremePoints
code: /-- A point `x` is an extreme point of a set `A` if `x` belongs to no open segment with ends in
`A`, except for the obvious `openSegment x x`. -/
def Set.extremePoints (A : Set E) : Set E 
goal: Set E

full_name: IsExtreme.refl
code: @[refl]
protected theorem IsExtreme.refl (A : Set E) : IsExtreme 𝕜 A A 
goal: IsExtreme 𝕜 A A

full_name: IsExtreme.rfl
code: protected theorem IsExtreme.rfl : IsExtreme 𝕜 A A 
goal: IsExtreme 𝕜 A A

full_name: IsExtreme.trans
code: @[trans]
protected theorem IsExtreme.trans (hAB : IsExtreme 𝕜 A B) (hBC : IsExtreme 𝕜 B C) :
    IsExtreme 𝕜 A C 
goal: IsExtreme 𝕜 A C

full_name: IsExtreme.antisymm
code: protected theorem IsExtreme.antisymm : AntiSymmetric (IsExtreme 𝕜 : Set E → Set E → Prop) 
goal: AntiSymmetric (IsExtreme 𝕜)

full_name: instIsPartialOrderSetIsExtreme
code: instance : IsPartialOrder (Set E) (IsExtreme 𝕜) 
goal: IsPartialOrder (Set E) (IsExtreme 𝕜)

full_name: IsExtreme.inter
code: theorem IsExtreme.inter (hAB : IsExtreme 𝕜 A B) (hAC : IsExtreme 𝕜 A C) :
    IsExtreme 𝕜 A (B ∩ C) 
goal: IsExtreme 𝕜 A (B ∩ C)

full_name: IsExtreme.mono
code: protected theorem IsExtreme.mono (hAC : IsExtreme 𝕜 A C) (hBA : B ⊆ A) (hCB : C ⊆ B) :
    IsExtreme 𝕜 B C 
goal: IsExtreme 𝕜 B C

full_name: isExtreme_iInter
code: theorem isExtreme_iInter {ι : Sort*} [Nonempty ι] {F : ι → Set E}
    (hAF : ∀ i : ι, IsExtreme 𝕜 A (F i)) : IsExtreme 𝕜 A (⋂ i : ι, F i) 
goal: IsExtreme 𝕜 A (⋂ i, F i)

full_name: isExtreme_biInter
code: theorem isExtreme_biInter {F : Set (Set E)} (hF : F.Nonempty) (hA : ∀ B ∈ F, IsExtreme 𝕜 A B) :
    IsExtreme 𝕜 A (⋂ B ∈ F, B) 
goal: IsExtreme 𝕜 A (⋂ B ∈ F, B)

full_name: isExtreme_sInter
code: theorem isExtreme_sInter {F : Set (Set E)} (hF : F.Nonempty) (hAF : ∀ B ∈ F, IsExtreme 𝕜 A B) :
    IsExtreme 𝕜 A (⋂₀ F) 
goal: IsExtreme 𝕜 A (⋂₀ F)

full_name: mem_extremePoints
code: theorem mem_extremePoints : x ∈ A.extremePoints 𝕜 ↔
    x ∈ A ∧ ∀ᵉ (x₁ ∈ A) (x₂ ∈ A), x ∈ openSegment 𝕜 x₁ x₂ → x₁ = x ∧ x₂ = x 
goal: x ∈ Set.extremePoints 𝕜 A ↔ x ∈ A ∧ ∀ x₁ ∈ A, ∀ x₂ ∈ A, x ∈ openSegment 𝕜 x₁ x₂ → x₁ = x ∧ x₂ = x

full_name: isExtreme_singleton
code: /-- x is an extreme point to A iff {x} is an extreme set of A. -/
@[simp] lemma isExtreme_singleton : IsExtreme 𝕜 A {x} ↔ x ∈ A.extremePoints 𝕜 
goal: IsExtreme 𝕜 A {x} ↔ x ∈ Set.extremePoints 𝕜 A

full_name: extremePoints_subset
code: theorem extremePoints_subset : A.extremePoints 𝕜 ⊆ A 
goal: Set.extremePoints 𝕜 A ⊆ A

full_name: extremePoints_empty
code: @[simp]
theorem extremePoints_empty : (∅ : Set E).extremePoints 𝕜 = ∅ 
goal: Set.extremePoints 𝕜 ∅ = ∅

full_name: extremePoints_singleton
code: @[simp]
theorem extremePoints_singleton : ({x} : Set E).extremePoints 𝕜 = {x} 
goal: Set.extremePoints 𝕜 {x} = {x}

full_name: inter_extremePoints_subset_extremePoints_of_subset
code: theorem inter_extremePoints_subset_extremePoints_of_subset (hBA : B ⊆ A) :
    B ∩ A.extremePoints 𝕜 ⊆ B.extremePoints 𝕜 
goal: B ∩ Set.extremePoints 𝕜 A ⊆ Set.extremePoints 𝕜 B

full_name: IsExtreme.extremePoints_subset_extremePoints
code: theorem IsExtreme.extremePoints_subset_extremePoints (hAB : IsExtreme 𝕜 A B) :
    B.extremePoints 𝕜 ⊆ A.extremePoints 𝕜 
goal: Set.extremePoints 𝕜 B ⊆ Set.extremePoints 𝕜 A

full_name: IsExtreme.extremePoints_eq
code: theorem IsExtreme.extremePoints_eq (hAB : IsExtreme 𝕜 A B) :
    B.extremePoints 𝕜 = B ∩ A.extremePoints 𝕜 
goal: Set.extremePoints 𝕜 B = B ∩ Set.extremePoints 𝕜 A

full_name: IsExtreme.convex_diff
code: theorem IsExtreme.convex_diff (hA : Convex 𝕜 A) (hAB : IsExtreme 𝕜 A B) : Convex 𝕜 (A \ B) 
goal: Convex 𝕜 (A \ B)

full_name: extremePoints_prod
code: @[simp]
theorem extremePoints_prod (s : Set E) (t : Set F) :
    (s ×ˢ t).extremePoints 𝕜 = s.extremePoints 𝕜 ×ˢ t.extremePoints 𝕜 
goal: Set.extremePoints 𝕜 (s ×ˢ t) = Set.extremePoints 𝕜 s ×ˢ Set.extremePoints 𝕜 t

full_name: extremePoints_pi
code: @[simp]
theorem extremePoints_pi (s : ∀ i, Set (π i)) :
    (univ.pi s).extremePoints 𝕜 = univ.pi fun i ↦ (s i).extremePoints 𝕜 
goal: Set.extremePoints 𝕜 (Set.univ.pi s) = Set.univ.pi fun i => Set.extremePoints 𝕜 (s i)

full_name: image_extremePoints
code: lemma image_extremePoints (f : L) (s : Set E) :
    f '' extremePoints 𝕜 s = extremePoints 𝕜 (f '' s) 
goal: ⇑f '' Set.extremePoints 𝕜 s = Set.extremePoints 𝕜 (⇑f '' s)

full_name: mem_extremePoints_iff_forall_segment
code: /-- A useful restatement using `segment`: `x` is an extreme point iff the only (closed) segments
that contain it are those with `x` as one of their endpoints. -/
theorem mem_extremePoints_iff_forall_segment : x ∈ A.extremePoints 𝕜 ↔
    x ∈ A ∧ ∀ᵉ (x₁ ∈ A) (x₂ ∈ A), x ∈ segment 𝕜 x₁ x₂ → x₁ = x ∨ x₂ = x 
goal: x ∈ Set.extremePoints 𝕜 A ↔ x ∈ A ∧ ∀ x₁ ∈ A, ∀ x₂ ∈ A, x ∈ segment 𝕜 x₁ x₂ → x₁ = x ∨ x₂ = x

full_name: Convex.mem_extremePoints_iff_convex_diff
code: theorem Convex.mem_extremePoints_iff_convex_diff (hA : Convex 𝕜 A) :
    x ∈ A.extremePoints 𝕜 ↔ x ∈ A ∧ Convex 𝕜 (A \ {x}) 
goal: x ∈ Set.extremePoints 𝕜 A ↔ x ∈ A ∧ Convex 𝕜 (A \ {x})

full_name: Convex.mem_extremePoints_iff_mem_diff_convexHull_diff
code: theorem Convex.mem_extremePoints_iff_mem_diff_convexHull_diff (hA : Convex 𝕜 A) :
    x ∈ A.extremePoints 𝕜 ↔ x ∈ A \ convexHull 𝕜 (A \ {x}) 
goal: x ∈ Set.extremePoints 𝕜 A ↔ x ∈ A \ (convexHull 𝕜) (A \ {x})

full_name: extremePoints_convexHull_subset
code: theorem extremePoints_convexHull_subset : (convexHull 𝕜 A).extremePoints 𝕜 ⊆ A 
goal: Set.extremePoints 𝕜 ((convexHull 𝕜) A) ⊆ A