Documentation

Mathlib.Analysis.Convex.Independent

Convex independence #

This file defines convex independent families of points.

Convex independence is closely related to affine independence. In both cases, no point can be written as a combination of others. When the combination is affine (that is, any coefficients), this yields affine independence. When the combination is convex (that is, all coefficients are nonnegative), then this yields convex independence. In particular, affine independence implies convex independence.

Main declarations #

References #

TODO #

Prove AffineIndependent.convexIndependent. This requires some glue between affineCombination and Finset.centerMass.

Tags #

independence, convex position

def ConvexIndependent (π•œ : Type u_1) {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] (p : ΞΉ β†’ E) :

An indexed family is said to be convex independent if every point only belongs to convex hulls of sets containing it.

Equations
Instances For
    theorem Subsingleton.convexIndependent {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] [Subsingleton ΞΉ] (p : ΞΉ β†’ E) :

    A family with at most one point is convex independent.

    theorem ConvexIndependent.injective {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} (hc : ConvexIndependent π•œ p) :

    A convex independent family is injective.

    theorem ConvexIndependent.comp_embedding {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {ΞΉ' : Type u_4} (f : ΞΉ' β†ͺ ΞΉ) {p : ΞΉ β†’ E} (hc : ConvexIndependent π•œ p) :
    ConvexIndependent π•œ (p ∘ ⇑f)

    If a family is convex independent, so is any subfamily given by composition of an embedding into index type with the original family.

    theorem ConvexIndependent.subtype {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} (hc : ConvexIndependent π•œ p) (s : Set ΞΉ) :
    ConvexIndependent π•œ fun (i : ↑s) => p ↑i

    If a family is convex independent, so is any subfamily indexed by a subtype of the index type.

    theorem ConvexIndependent.range {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} (hc : ConvexIndependent π•œ p) :
    ConvexIndependent π•œ Subtype.val

    If an indexed family of points is convex independent, so is the corresponding set of points.

    theorem ConvexIndependent.mono {π•œ : Type u_1} {E : Type u_2} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {s t : Set E} (hc : ConvexIndependent π•œ Subtype.val) (hs : s βŠ† t) :
    ConvexIndependent π•œ Subtype.val

    A subset of a convex independent set of points is convex independent as well.

    theorem Function.Injective.convexIndependent_iff_set {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} (hi : Function.Injective p) :
    ConvexIndependent π•œ Subtype.val ↔ ConvexIndependent π•œ p

    The range of an injective indexed family of points is convex independent iff that family is.

    @[simp]
    theorem ConvexIndependent.mem_convexHull_iff {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} (hc : ConvexIndependent π•œ p) (s : Set ΞΉ) (i : ΞΉ) :
    p i ∈ (convexHull π•œ) (p '' s) ↔ i ∈ s

    If a family is convex independent, a point in the family is in the convex hull of some of the points given by a subset of the index type if and only if the point's index is in this subset.

    theorem convexIndependent_iff_not_mem_convexHull_diff {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} :
    ConvexIndependent π•œ p ↔ βˆ€ (i : ΞΉ) (s : Set ΞΉ), p i βˆ‰ (convexHull π•œ) (p '' (s \ {i}))

    If a family is convex independent, a point in the family is not in the convex hull of the other points. See convexIndependent_set_iff_not_mem_convexHull_diff for the Set version.

    theorem convexIndependent_set_iff_inter_convexHull_subset {π•œ : Type u_1} {E : Type u_2} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {s : Set E} :
    ConvexIndependent π•œ Subtype.val ↔ βˆ€ t βŠ† s, s ∩ (convexHull π•œ) t βŠ† t
    theorem convexIndependent_set_iff_not_mem_convexHull_diff {π•œ : Type u_1} {E : Type u_2} [OrderedSemiring π•œ] [AddCommGroup E] [Module π•œ E] {s : Set E} :
    ConvexIndependent π•œ Subtype.val ↔ βˆ€ x ∈ s, x βˆ‰ (convexHull π•œ) (s \ {x})

    If a set is convex independent, a point in the set is not in the convex hull of the other points. See convexIndependent_iff_not_mem_convexHull_diff for the indexed family version.

    theorem convexIndependent_iff_finset {π•œ : Type u_1} {E : Type u_2} {ΞΉ : Type u_3} [LinearOrderedField π•œ] [AddCommGroup E] [Module π•œ E] {p : ΞΉ β†’ E} :
    ConvexIndependent π•œ p ↔ βˆ€ (s : Finset ΞΉ) (x : ΞΉ), p x ∈ (convexHull π•œ) ↑(Finset.image p s) β†’ x ∈ s

    To check convex independence, one only has to check finsets thanks to CarathΓ©odory's theorem.

    Extreme points #

    theorem Convex.convexIndependent_extremePoints {π•œ : Type u_1} {E : Type u_2} [LinearOrderedField π•œ] [AddCommGroup E] [Module π•œ E] {s : Set E} (hs : Convex π•œ s) :
    ConvexIndependent π•œ Subtype.val