Strictly convex spaces #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines strictly convex spaces. A normed space is strictly convex if all closed balls are strictly convex. This does not mean that the norm is strictly convex (in fact, it never is).
Main definitions #
strict_convex_space
: a typeclass saying that a given normed space over a normed linear ordered
field (e.g., ℝ
or ℚ
) is strictly convex. The definition requires strict convexity of a closed
ball of positive radius with center at the origin; strict convexity of any other closed ball follows
from this assumption.
Main results #
In a strictly convex space, we prove
strict_convex_closed_ball
: a closed ball is strictly convex.combo_mem_ball_of_ne
,open_segment_subset_ball_of_ne
,norm_combo_lt_of_ne
: a nontrivial convex combination of two points in a closed ball belong to the corresponding open ball;norm_add_lt_of_not_same_ray
,same_ray_iff_norm_add
,dist_add_dist_eq_iff
: the triangle inequalitydist x y + dist y z ≤ dist x z
is a strict inequality unlessy
belongs to the segment[x -[ℝ] z]
.isometry.affine_isometry_of_strict_convex_space
: an isometry ofnormed_add_torsor
s for real normed spaces, strictly convex in the case of the codomain, is an affine isometry.
We also provide several lemmas that can be used as alternative constructors for strict_convex ℝ E
:
-
strict_convex_space.of_strict_convex_closed_unit_ball
: ifclosed_ball (0 : E) 1
is strictly convex, thenE
is a strictly convex space; -
strict_convex_space.of_norm_add
: if‖x + y‖ = ‖x‖ + ‖y‖
impliessame_ray ℝ x y
for all nonzerox y : E
, thenE
is a strictly convex space.
Implementation notes #
While the definition is formulated for any normed linear ordered field, most of the lemmas are
formulated only for the case 𝕜 = ℝ
.
Tags #
convex, strictly convex
- strict_convex_closed_ball : ∀ (r : ℝ), 0 < r → strict_convex 𝕜 (metric.closed_ball 0 r)
A strictly convex space is a normed space where the closed balls are strictly convex. We only
require balls of positive radius with center at the origin to be strictly convex in the definition,
then prove that any closed ball is strictly convex in strict_convex_closed_ball
below.
See also strict_convex_space.of_strict_convex_closed_unit_ball
.
Instances of this typeclass
A closed ball in a strictly convex space is strictly convex.
A real normed vector space is strictly convex provided that the unit ball is strictly convex.
Strict convexity is equivalent to ‖a • x + b • y‖ < 1
for all x
and y
of norm at most 1
and all strictly positive a
and b
such that a + b = 1
. This lemma shows that it suffices to
check this for points of norm one and some a
, b
such that a + b = 1
.
If x ≠ y
belong to the same closed ball, then a convex combination of x
and y
with
positive coefficients belongs to the corresponding open ball.
If x ≠ y
belong to the same closed ball, then the open segment with endpoints x
and y
is
included in the corresponding open ball.
If x
and y
are two distinct vectors of norm at most r
, then a convex combination of x
and y
with positive coefficients has norm strictly less than r
.
In a strictly convex space, if x
and y
are not in the same ray, then ‖x + y‖ < ‖x‖ + ‖y‖
.
In a strictly convex space, two vectors x
, y
are in the same ray if and only if the triangle
inequality for x
and y
becomes an equality.
If x
and y
are two vectors in a strictly convex space have the same norm and the norm of
their sum is equal to the sum of their norms, then they are equal.
In a strictly convex space, two vectors x
, y
are not in the same ray if and only if the
triangle inequality for x
and y
is strict.
In a strictly convex space, the triangle inequality turns into an equality if and only if the middle point belongs to the segment joining two other points.
An isometry of normed_add_torsor
s for real normed spaces, strictly convex in the case of
the codomain, is an affine isometry. Unlike Mazur-Ulam, this does not require the isometry to
be surjective.
Equations
- hi.affine_isometry_of_strict_convex_space = {to_affine_map := {to_fun := (affine_map.of_map_midpoint f _ _).to_fun, linear := (affine_map.of_map_midpoint f _ _).linear, map_vadd' := _}, norm_map := _}