Affine isometries #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
In this file we define affine_isometry 𝕜 P P₂
to be an affine isometric embedding of normed
add-torsors P
into P₂
over normed 𝕜
-spaces and affine_isometry_equiv
to be an affine
isometric equivalence between P
and P₂
.
We also prove basic lemmas and provide convenience constructors. The choice of these lemmas and
constructors is closely modelled on those for the linear_isometry
and affine_map
theories.
Since many elementary properties don't require ‖x‖ = 0 → x = 0
we initially set up the theory for
seminormed_add_comm_group
and specialize to normed_add_comm_group
only when needed.
Notation #
We introduce the notation P →ᵃⁱ[𝕜] P₂
for affine_isometry 𝕜 P P₂
, and P ≃ᵃⁱ[𝕜] P₂
for
affine_isometry_equiv 𝕜 P P₂
. In contrast with the notation →ₗᵢ
for linear isometries, ≃ᵢ
for isometric equivalences, etc., the "i" here is a superscript. This is for aesthetic reasons to
match the superscript "a" (note that in mathlib →ᵃ
is an affine map, since →ₐ
has been taken by
algebra-homomorphisms.)
An 𝕜
-affine isometric embedding of one normed add-torsor over a normed 𝕜
-space into
another.
Instances for affine_isometry
- affine_isometry.has_sizeof_inst
- affine_isometry.has_coe_to_fun
- affine_isometry.inhabited
- affine_isometry.monoid
The underlying linear map of an affine isometry is in fact a linear isometry.
Equations
- f.linear_isometry = {to_linear_map := {to_fun := f.to_affine_map.linear.to_fun, map_add' := _, map_smul' := _}, norm_map' := _}
Equations
- affine_isometry.has_coe_to_fun = {coe := λ (f : P →ᵃⁱ[𝕜] P₂), f.to_affine_map.to_fun}
Reinterpret a linear isometry as an affine isometry.
Equations
- f.to_affine_isometry = {to_affine_map := {to_fun := f.to_linear_map.to_affine_map.to_fun, linear := f.to_linear_map.to_affine_map.linear, map_vadd' := _}, norm_map := _}
The identity affine isometry.
Equations
Equations
- affine_isometry.inhabited = {default := affine_isometry.id _inst_17}
Composition of affine isometries.
Equations
- g.comp f = {to_affine_map := g.to_affine_map.comp f.to_affine_map, norm_map := _}
Equations
- affine_isometry.monoid = {mul := affine_isometry.comp _inst_17, mul_assoc := _, one := affine_isometry.id _inst_17, one_mul := _, mul_one := _, npow := npow_rec (mul_one_class.to_has_mul (P →ᵃⁱ[𝕜] P)), npow_zero' := _, npow_succ' := _}
A affine isometric equivalence between two normed vector spaces.
Instances for affine_isometry_equiv
- affine_isometry_equiv.has_sizeof_inst
- affine_isometry_equiv.has_coe_to_fun
- affine_isometry_equiv.inhabited
- affine_isometry_equiv.group
The underlying linear equiv of an affine isometry equiv is in fact a linear isometry equiv.
Equations
- e.linear_isometry_equiv = {to_linear_equiv := {to_fun := e.to_affine_equiv.linear.to_fun, map_add' := _, map_smul' := _, inv_fun := e.to_affine_equiv.linear.inv_fun, left_inv := _, right_inv := _}, norm_map' := _}
Equations
- affine_isometry_equiv.has_coe_to_fun = {coe := λ (f : P ≃ᵃⁱ[𝕜] P₂), f.to_affine_equiv.to_equiv.to_fun}
Reinterpret a affine_isometry_equiv
as a affine_isometry
.
Equations
- e.to_affine_isometry = {to_affine_map := e.to_affine_equiv.to_affine_map, norm_map := _}
Construct an affine isometry equivalence by verifying the relation between the map and its
linear part at one base point. Namely, this function takes a map e : P₁ → P₂
, a linear isometry
equivalence e' : V₁ ≃ᵢₗ[k] V₂
, and a point p
such that for any other point p'
we have
e p' = e' (p' -ᵥ p) +ᵥ e p
.
Equations
- affine_isometry_equiv.mk' e e' p h = {to_affine_equiv := {to_equiv := (affine_equiv.mk' e e'.to_linear_equiv p h).to_equiv, linear := (affine_equiv.mk' e e'.to_linear_equiv p h).linear, map_vadd' := _}, norm_map := _}
Reinterpret a linear isometry equiv as an affine isometry equiv.
Equations
- e.to_affine_isometry_equiv = {to_affine_equiv := {to_equiv := e.to_linear_equiv.to_affine_equiv.to_equiv, linear := e.to_linear_equiv.to_affine_equiv.linear, map_vadd' := _}, norm_map := _}
Reinterpret a affine_isometry_equiv
as an isometry_equiv
.
Equations
- e.to_isometry_equiv = {to_equiv := e.to_affine_equiv.to_equiv, isometry_to_fun := _}
Reinterpret a affine_isometry_equiv
as an homeomorph
.
Equations
Identity map as a affine_isometry_equiv
.
Equations
Equations
- affine_isometry_equiv.inhabited = {default := affine_isometry_equiv.refl 𝕜 P _inst_17}
The inverse affine_isometry_equiv
.
Equations
- e.symm = {to_affine_equiv := {to_equiv := e.to_affine_equiv.symm.to_equiv, linear := e.to_affine_equiv.symm.linear, map_vadd' := _}, norm_map := _}
Composition of affine_isometry_equiv
s as a affine_isometry_equiv
.
Equations
- e.trans e' = {to_affine_equiv := e.to_affine_equiv.trans e'.to_affine_equiv, norm_map := _}
The group of affine isometries of a normed_add_torsor
, P
.
Equations
- affine_isometry_equiv.group = {mul := λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁, mul_assoc := _, one := affine_isometry_equiv.refl 𝕜 P _inst_17, one_mul := _, mul_one := _, npow := div_inv_monoid.npow._default (affine_isometry_equiv.refl 𝕜 P) (λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁) affine_isometry_equiv.trans_refl affine_isometry_equiv.refl_trans, npow_zero' := _, npow_succ' := _, inv := affine_isometry_equiv.symm _inst_17, div := div_inv_monoid.div._default (λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁) affine_isometry_equiv.group._proof_4 (affine_isometry_equiv.refl 𝕜 P) affine_isometry_equiv.trans_refl affine_isometry_equiv.refl_trans (div_inv_monoid.npow._default (affine_isometry_equiv.refl 𝕜 P) (λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁) affine_isometry_equiv.trans_refl affine_isometry_equiv.refl_trans) affine_isometry_equiv.group._proof_5 affine_isometry_equiv.group._proof_6 affine_isometry_equiv.symm, div_eq_mul_inv := _, zpow := div_inv_monoid.zpow._default (λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁) affine_isometry_equiv.group._proof_8 (affine_isometry_equiv.refl 𝕜 P) affine_isometry_equiv.trans_refl affine_isometry_equiv.refl_trans (div_inv_monoid.npow._default (affine_isometry_equiv.refl 𝕜 P) (λ (e₁ e₂ : P ≃ᵃⁱ[𝕜] P), e₂.trans e₁) affine_isometry_equiv.trans_refl affine_isometry_equiv.refl_trans) affine_isometry_equiv.group._proof_9 affine_isometry_equiv.group._proof_10 affine_isometry_equiv.symm, zpow_zero' := _, zpow_succ' := _, zpow_neg' := _, mul_left_inv := _}
The map v ↦ v +ᵥ p
as an affine isometric equivalence between V
and P
.
Equations
- affine_isometry_equiv.vadd_const 𝕜 p = {to_affine_equiv := {to_equiv := (affine_equiv.vadd_const 𝕜 p).to_equiv, linear := (affine_equiv.vadd_const 𝕜 p).linear, map_vadd' := _}, norm_map := _}
p' ↦ p -ᵥ p'
as an affine isometric equivalence.
Equations
- affine_isometry_equiv.const_vsub 𝕜 p = {to_affine_equiv := {to_equiv := (affine_equiv.const_vsub 𝕜 p).to_equiv, linear := (affine_equiv.const_vsub 𝕜 p).linear, map_vadd' := _}, norm_map := _}
Translation by v
(that is, the map p ↦ v +ᵥ p
) as an affine isometric automorphism of P
.
Equations
- affine_isometry_equiv.const_vadd 𝕜 P v = {to_affine_equiv := {to_equiv := (affine_equiv.const_vadd 𝕜 P v).to_equiv, linear := (affine_equiv.const_vadd 𝕜 P v).linear, map_vadd' := _}, norm_map := _}
The map g
from V
to V₂
corresponding to a map f
from P
to P₂
, at a base point p
,
is an isometry if f
is one.
Point reflection in x
as an affine isometric automorphism.
Equations
If f
is an affine map, then its linear part is continuous iff f
is continuous.
If f
is an affine map, then its linear part is an open map iff f
is an open map.
An affine subspace is isomorphic to its image under an injective affine map.
This is the affine version of submodule.equiv_map_of_injective
.
Equations
- E.equiv_map_of_injective φ hφ = {to_equiv := {to_fun := (equiv.set.image ⇑φ ↑E hφ).to_fun, inv_fun := (equiv.set.image ⇑φ ↑E hφ).inv_fun, left_inv := _, right_inv := _}, linear := (submodule.equiv_map_of_injective φ.linear _ E.direction).trans (linear_equiv.of_eq (submodule.map φ.linear E.direction) (affine_subspace.map φ E).direction _), map_vadd' := _}
Restricts an affine isometry to an affine isometry equivalence between a nonempty affine
subspace E
and its image.
This is an isometry version of affine_subspace.equiv_map
, having a stronger premise and a stronger
conclusion.
Equations
- affine_subspace.isometry_equiv_map φ E = {to_affine_equiv := E.equiv_map_of_injective φ.to_affine_map _, norm_map := _}