Ported for Lean Pool: imports relocated and code adapted to Lean/Mathlib v4.34.0.
Strict exposed points #
This module proves the singleton exposed-face characterization, unit-normal normalization, and the singleton norm-thickening estimate for project-local exposed points.
An exposing normal selects its exposed point as a member of the corresponding exposed face.
A strictly exposing normal has singleton exposed face.
If the exposed face in direction normal is {p}, then normal strictly exposes p.
This is the converse to ExposesPoint.exposedFace_eq_singleton, and lets us pass from
Rockafellar's exposed-face notation back to the project-local strict exposed-point predicate.
Strict exposure is equivalent to the exposed face being the corresponding singleton.
Multiplying an exposing normal by a positive scalar preserves the exposed point.
The usual normalization of a nonzero vector has norm one.
A nonzero exposing normal can be normalized to a unit exposing normal.
A packaged unit-normal version of a nonzero exposing normal.
If the zero normal exposes p, then the exposed set is contained in {p}.
If an exposed set contains a point different from p, then any normal exposing p is
nonzero.
An exposed point either has a unit exposing normal, or the whole exposed set is the singleton containing that point.
This is the precise normalization dichotomy behind Rockafellar's phrase "choose a unit vector
which exposes p": outside the degenerate singleton case, the exposing normal can be normalized.
If s is contained in {p} and contains p, then every normal exposes p on s.
This packages the degenerate singleton case of exposed points.
If the ambient space has some unit vector, then every exposed point admits a unit exposing normal.
For nonzero exposing normals this is normalization. For the zero-normal case, the exposed set is
contained in {p}, so any ambient unit vector exposes p vacuously.
Thickening of a singleton gives the corresponding norm estimate.