Documentation

Tdaf.Analysis.Convex.Face

Faces of a convex set #

A face of a convex set C is a convex subset C' of C such that every closed line segment in C with a relative interior point in C' has both endpoints in C'. Everything here rests on one strengthening of that definition: a face absorbs every convex subset of C whose relative interior it meets. From it come the partition of C by the relative interiors of its faces and, for compact C, Minkowski's theorem.

This file treats the bounded case, which is what the polyhedral theory and the Krein–Milman corollaries consume. The representation of an unbounded closed convex set needs hulls of points and directions (convexHullPD in HullDirections.lean) and lives in Representation.lean; the exposed representation is in Exposed.lean and Tangent.lean.

Extreme points and exposed faces are Mathlib's Set.extremePoints and IsExposed; isFace_singleton and IsExposed.isFace connect them to IsFace.

Main definitions #

Main results #

References #

[^1]: R. T. Rockafellar, Convex Analysis, Princeton University Press, 1970, §18.

The definition and its elementary calculus #

structure Tdaf.ConvexAnalysis.IsFace {E : Type u_1} [AddCommGroup E] [Module ℝ E] (C C' : Set E) extends IsExtreme ℝ C C' :

Rockafellar's face: a convex subset C' of a convex set C such that every closed line segment in C with a relative interior point in C' has both endpoints in C'. The segment condition is exactly Mathlib's IsExtreme ℝ C C'; convexity of C' is a genuine extra requirement, since {0, 1} is an extreme subset of [0, 1] but not a face of it.

Instances For
    theorem Tdaf.ConvexAnalysis.Convex.isFace_self {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} (hC : Convex ℝ C) :
    IsFace C C

    Every convex set is a face of itself: the greatest element of the lattice of faces.

    The empty set is a face of every set: the least element of the lattice of faces.

    theorem Tdaf.ConvexAnalysis.IsFace.trans {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C C' C'' : Set E} (h₁ : IsFace C C') (h₂ : IsFace C' C'') :
    IsFace C C''

    A face of a face is a face.

    theorem Tdaf.ConvexAnalysis.IsFace.mono {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C C'' D : Set E} (h : IsFace C C'') (hDC : D ⊆ C) (hC''D : C'' ⊆ D) :
    IsFace D C''

    A face of C that happens to lie inside an intermediate convex set D is a face of D.

    theorem Tdaf.ConvexAnalysis.IsFace.inter {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C C' C'' : Set E} (h₁ : IsFace C C') (h₂ : IsFace C C'') :
    IsFace C (C' ∩ C'')

    The intersection of two faces is a face.

    theorem Tdaf.ConvexAnalysis.IsFace.inter_convex {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C C' D : Set E} (h : IsFace C C') (hD : Convex ℝ D) :
    IsFace (C ∩ D) (C' ∩ D)

    Cutting a face and its ambient set by the same convex set leaves a face. Note that D is cut out of both sides, so this is not IsFace.inter, which intersects two faces of one set.

    theorem Tdaf.ConvexAnalysis.isFace_sInter {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} {F : Set (Set E)} (hF : F.Nonempty) (h : ∀ B ∈ F, IsFace C B) :

    The intersection of a nonempty family of faces is a face. Together with Convex.isFace_self and IsFace.empty this makes the faces of C a complete lattice under inclusion.

    @[simp]

    Rockafellar's extreme points are the zero-dimensional faces, so they are Mathlib's Set.extremePoints.

    theorem Tdaf.ConvexAnalysis.Convex.isFace_inter_setOf_eq {E : Type u_1} [AddCommGroup E] [Module ℝ E] {C : Set E} (hC : Convex ℝ C) {g : E →ₗ[ℝ] ℝ} {α : ℝ} (hmax : ∀ y ∈ C, g y ≤ α) :
    IsFace C (C ∩ {w : E | g w = α})

    Exposed faces are faces: the set on which a linear function attains its maximum over a convex set C is a face of C. This is the only source of faces used in the partition theorem below.

    theorem Tdaf.ConvexAnalysis.IsExposed.isFace {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C C' : Set E} (h : IsExposed ℝ C C') (hC : Convex ℝ C) :
    IsFace C C'

    Mathlib's exposed faces are faces.

    Faces absorb the convex subsets they meet #

    theorem Tdaf.ConvexAnalysis.IsFace.subset_of_relint_inter_nonempty {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C C' D : Set E} (hface : IsFace C C') (hDC : D ⊆ C) (h : (intrinsicInterior ℝ D ∩ C').Nonempty) :
    D ⊆ C'

    A face absorbs every convex subset of C whose relative interior it meets. This strengthens the defining segment property to arbitrary convex sets, and every other result in this file goes through it. Convexity of D is not needed.

    theorem Tdaf.ConvexAnalysis.IsFace.eq_inter_closure {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C C' : Set E} (hC : Convex ℝ C) (hface : IsFace C C') :
    C' = C ∩ closure C'

    A face is cut out of C by its own closure. In particular a face of a closed convex set is closed.

    theorem Tdaf.ConvexAnalysis.IsFace.isClosed {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C C' : Set E} (hC : Convex ℝ C) (hCcl : IsClosed C) (hface : IsFace C C') :

    A face of a closed convex set is closed.

    theorem Tdaf.ConvexAnalysis.IsFace.eq_of_relint_inter_nonempty {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C C₁ C₂ : Set E} (h₁ : IsFace C C₁) (h₂ : IsFace C C₂) (h : (intrinsicInterior ℝ C₁ ∩ intrinsicInterior ℝ C₂).Nonempty) :
    C₁ = C₂

    Two faces whose relative interiors have a point in common are equal. This is what makes the relative interiors of the faces a partition of C.

    theorem Tdaf.ConvexAnalysis.IsFace.disjoint_relint {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C C' : Set E} (hface : IsFace C C') (hne : C' ≠ C) :

    A face other than C itself misses ri C.

    A face other than C itself is contained in the relative boundary of C.

    theorem Tdaf.ConvexAnalysis.IsFace.affineSpan_ne {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C C' : Set E} (hface : IsFace C C') (hne' : C'.Nonempty) (hne : C' ≠ C) :

    A face has the same affine hull as C only if it is all of C. This is the step from the relative-boundary statement to the dimension statement.

    The dimension statement: a nonempty face other than C itself has strictly smaller dimension than C.

    The relative interiors of the faces partition C #

    theorem Tdaf.ConvexAnalysis.exists_isFace_subset_relint {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C D : Set E} (hC : Convex ℝ C) (hD : Convex ℝ D) (hDC : D ⊆ C) (hne : D.Nonempty) (hopen : intrinsicInterior ℝ D = D) :
    ∃ (C' : Set E), IsFace C C' ∧ D ⊆ intrinsicInterior ℝ C'

    The engine of the partition: every nonempty relatively open convex subset D of C lies in the relative interior of a face of C, namely the smallest face containing D. Were D inside the relative boundary of that face, a supporting hyperplane through D would cut out a strictly smaller face still containing D.

    theorem Tdaf.ConvexAnalysis.exists_isFace_mem_relint {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C : Set E} (hC : Convex ℝ C) {x : E} (hx : x ∈ C) :
    ∃ (C' : Set E), IsFace C C' ∧ x ∈ intrinsicInterior ℝ C'

    The union half: every point of C is a relative interior point of some face of C.

    The union half, as an equation.

    theorem Tdaf.ConvexAnalysis.IsFace.relint_pairwise_disjoint {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C C₁ C₂ : Set E} (h₁ : IsFace C C₁) (h₂ : IsFace C C₂) (hne : C₁ ≠ C₂) :

    The disjointness half: distinct faces have disjoint relative interiors.

    theorem Tdaf.ConvexAnalysis.IsFace.relint_maximal {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] [FiniteDimensional ℝ E] {C C' D : Set E} (hC : Convex ℝ C) (hface : IsFace C C') (hne' : C'.Nonempty) (hD : Convex ℝ D) (hopen : intrinsicInterior ℝ D = D) (hsub : intrinsicInterior ℝ C' ⊆ D) (hDC : D ⊆ C) :

    The maximality half: the relative interior of a nonempty face is a maximal relatively open convex subset of C.

    The relative interior of a convex set is relatively open, so IsFace.relint_maximal really is a maximality statement inside the family it quantifies over.

    The bounded case: Minkowski's theorem #

    theorem Tdaf.ConvexAnalysis.exists_notMem_relint_mem_segment {E : Type u_1} [NormedAddCommGroup E] [NormedSpace ℝ E] {C : Set E} (hcomp : IsCompact C) (hdim : vectorSpan ℝ C ≠ ⊥) {x : E} (hx : x ∈ intrinsicInterior ℝ C) :
    ∃ a ∈ C, ∃ b ∈ C, a ∉ intrinsicInterior ℝ C ∧ b ∉ intrinsicInterior ℝ C ∧ x ∈ segment ℝ a b

    For a compact set of positive dimension, a relative interior point lies on a segment joining two points that are not relative interior points. The general statement asks instead that C be a closed convex set which is neither an affine set nor a closed half of one; compactness is cruder but is all Minkowski's theorem needs. Convexity of C is never used.

    Minkowski's theorem: a closed bounded convex set is the convex hull of its extreme points. It is the case of the general representation in which C has no directions of recession, and it is stronger than Mathlib's Krein–Milman theorem (closure_convexHull_extremePoints), which gives only the closed convex hull — the set of extreme points need not be closed even for a compact C. The proof is an induction on dim C, through the partition of C by relative interiors of faces and the segment lemma above.

    A nonempty compact convex set has an extreme point: the convex hull of the empty set is empty.