Convex hull #
This file defines the convex hull of a set s in a module. convexHull ๐ s is the smallest convex
set containing s. In order theory speak, this is a closure operator.
Implementation notes #
convexHull is defined as a closure operator. This gives access to the ClosureOperator API
while the impact on writing code is minimal as convexHull ๐ s is automatically elaborated as
(convexHull ๐) s.
def convexHull (๐ : Type u_1) {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] :
ClosureOperator (Set E)
The convex hull of a set s is the minimal convex set that includes s.
Equations
- convexHull ๐ = ClosureOperator.ofCompletePred (Convex ๐) โฏ
Instances For
@[simp]
theorem convexHull_isClosed (๐ : Type u_1) {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s : Set E) :
theorem subset_convexHull (๐ : Type u_1) {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s : Set E) :
s โ (convexHull ๐) s
theorem convex_convexHull (๐ : Type u_1) {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s : Set E) :
Convex ๐ ((convexHull ๐) s)
theorem convexHull_eq_iInter (๐ : Type u_1) {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s : Set E) :
theorem mem_convexHull_iff {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} {x : E} :
theorem convexHull_min {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s t : Set E} :
s โ t โ Convex ๐ t โ (convexHull ๐) s โ t
theorem Convex.convexHull_subset_iff {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s t : Set E} (ht : Convex ๐ t) :
theorem convexHull_mono {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s t : Set E} (hst : s โ t) :
(convexHull ๐) s โ (convexHull ๐) t
theorem convexHull_eq_self {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
theorem Convex.convexHull_eq {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
Convex ๐ s โ (convexHull ๐) s = s
Alias of the reverse direction of convexHull_eq_self.
@[simp]
theorem convexHull_univ {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] :
@[simp]
theorem convexHull_empty {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] :
@[simp]
theorem convexHull_eq_empty {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
@[simp]
theorem convexHull_nonempty_iff {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
theorem Set.Nonempty.convexHull {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
s.Nonempty โ ((convexHull ๐) s).Nonempty
Alias of the reverse direction of convexHull_nonempty_iff.
theorem segment_subset_convexHull {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} {x y : E} (hx : x โ s) (hy : y โ s) :
segment ๐ x y โ (convexHull ๐) s
@[simp]
theorem convexHull_singleton {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (x : E) :
@[simp]
theorem convexHull_eq_singleton {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} {x : E} :
@[simp]
theorem convexHull_zero {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] :
@[simp]
theorem convexHull_eq_zero {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} :
@[simp]
theorem convexHull_pair {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] [IsOrderedRing ๐] (x y : E) :
theorem convexHull_convexHull_union_left {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s t : Set E) :
theorem convexHull_convexHull_union_right {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (s t : Set E) :
theorem Convex.convex_remove_iff_notMem_convexHull_remove {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s : Set E} (hs : Convex ๐ s) (x : E) :
theorem IsLinearMap.image_convexHull {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [AddCommMonoid F] [Module ๐ E] [Module ๐ F] {f : E โ F} (hf : IsLinearMap ๐ f) (s : Set E) :
theorem LinearMap.image_convexHull {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [AddCommMonoid F] [Module ๐ E] [Module ๐ F] (f : E โโ[๐] F) (s : Set E) :
theorem convexHull_add_subset {๐ : Type u_1} {E : Type u_2} [Semiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] {s t : Set E} :
(convexHull ๐) (s + t) โ (convexHull ๐) s + (convexHull ๐) t
theorem convexHull_smul {๐ : Type u_1} {E : Type u_2} [CommSemiring ๐] [PartialOrder ๐] [AddCommMonoid E] [Module ๐ E] (a : ๐) (s : Set E) :
theorem AffineMap.image_convexHull {๐ : Type u_1} {E : Type u_2} {F : Type u_3} [Ring ๐] [PartialOrder ๐] [AddCommGroup E] [AddCommGroup F] [Module ๐ E] [Module ๐ F] (f : E โแต[๐] F) (s : Set E) :
theorem convexHull_subset_affineSpan {๐ : Type u_1} {E : Type u_2} [Ring ๐] [PartialOrder ๐] [AddCommGroup E] [Module ๐ E] (s : Set E) :
(convexHull ๐) s โ โ(affineSpan ๐ s)
@[simp]
theorem affineSpan_convexHull {๐ : Type u_1} {E : Type u_2} [Ring ๐] [PartialOrder ๐] [AddCommGroup E] [Module ๐ E] (s : Set E) :
theorem convexHull_neg {๐ : Type u_1} {E : Type u_2} [Ring ๐] [PartialOrder ๐] [AddCommGroup E] [Module ๐ E] (s : Set E) :
theorem convexHull_vadd {๐ : Type u_1} {E : Type u_2} [Ring ๐] [PartialOrder ๐] [AddCommGroup E] [Module ๐ E] (x : E) (s : Set E) :