Affine maps #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
This file defines affine maps.
Main definitions #
affine_map
is the type of affine maps between two affine spaces with the same ringk
. Various basic examples of affine maps are defined, includingconst
,id
,line_map
andhomothety
.
Notations #
P1 →ᵃ[k] P2
is a notation foraffine_map k P1 P2
;affine_space V P
: a localized notation foradd_torsor V P
defined inlinear_algebra.affine_space.basic
.
Implementation notes #
out_param
is used in the definition of [add_torsor V P]
to make V
an implicit argument
(deduced from P
) in most cases; include V
is needed in many cases for V
, and type classes
using it, to be added as implicit arguments to individual lemmas. As for modules, k
is an
explicit argument rather than implied by P
or V
.
This file only provides purely algebraic definitions and results. Those depending on analysis or
topology are defined elsewhere; see analysis.normed_space.add_torsor
and
topology.algebra.affine
.
References #
- to_fun : P1 → P2
- linear : V1 →ₗ[k] V2
- map_vadd' : ∀ (p : P1) (v : V1), self.to_fun (v +ᵥ p) = ⇑(self.linear) v +ᵥ self.to_fun p
An affine_map k P1 P2
(notation: P1 →ᵃ[k] P2
) is a map from P1
to P2
that
induces a corresponding linear map from V1
to V2
.
Instances for affine_map
- affine_map.has_sizeof_inst
- affine_map.fun_like
- affine_map.has_coe_to_fun
- affine_map.nonempty
- affine_map.mul_action
- affine_map.is_central_scalar
- affine_map.has_zero
- affine_map.has_add
- affine_map.has_sub
- affine_map.has_neg
- affine_map.add_comm_group
- affine_map.add_torsor
- affine_map.inhabited
- affine_map.monoid
- affine_map.distrib_mul_action
- affine_map.module
- affine_equiv.affine_map.has_coe
- continuous_affine_map.affine_map.has_coe
Equations
- affine_map.fun_like k P1 P2 = {coe := affine_map.to_fun _inst_7, coe_injective' := _}
Equations
Reinterpret a linear map as an affine map.
Constructing an affine map and coercing back to a function produces the same map.
to_fun
is the same as the result of coercing to a function.
An affine map on the result of adding a vector to a point produces the same result as the linear map applied to that vector, added to the affine map applied to that point.
The linear map on the result of subtracting two points is the result of subtracting the result of the affine map on those two points.
Two affine maps are equal if they coerce to the same function.
Constant function as an affine_map
.
Equations
- affine_map.const k P1 p = {to_fun := function.const P1 p, linear := 0, map_vadd' := _}
Construct an affine map by verifying the relation between the map and its linear part at one
base point. Namely, this function takes a map f : P₁ → P₂
, a linear map f' : V₁ →ₗ[k] V₂
, and
a point p
such that for any other point p'
we have f p' = f' (p' -ᵥ p) +ᵥ f p
.
The space of affine maps to a module inherits an R
-action from the action on its codomain.
The set of affine maps to a vector space is an additive commutative group.
Equations
- affine_map.add_comm_group = function.injective.add_comm_group coe_fn affine_map.add_comm_group._proof_3 affine_map.coe_zero affine_map.coe_add affine_map.coe_neg affine_map.coe_sub affine_map.add_comm_group._proof_4 affine_map.add_comm_group._proof_5
The space of affine maps from P1
to P2
is an affine space over the space of affine maps
from P1
to the vector space V2
corresponding to P2
.
Equations
- affine_map.add_torsor = {to_add_action := {to_has_vadd := {vadd := λ (f : P1 →ᵃ[k] V2) (g : P1 →ᵃ[k] P2), {to_fun := λ (p : P1), ⇑f p +ᵥ ⇑g p, linear := f.linear + g.linear, map_vadd' := _}}, zero_vadd := _, add_vadd := _}, to_has_vsub := {vsub := λ (f g : P1 →ᵃ[k] P2), {to_fun := λ (p : P1), ⇑f p -ᵥ ⇑g p, linear := f.linear - g.linear, map_vadd' := _}}, nonempty := _, vsub_vadd' := _, vadd_vsub' := _}
prod.fst
as an affine_map
.
Equations
- affine_map.fst = {to_fun := prod.fst P2, linear := linear_map.fst k V1 V2 _inst_6, map_vadd' := _}
prod.snd
as an affine_map
.
Equations
- affine_map.snd = {to_fun := prod.snd P2, linear := linear_map.snd k V1 V2 _inst_6, map_vadd' := _}
Identity map as an affine map.
Equations
- affine_map.id k P1 = {to_fun := id P1, linear := linear_map.id _inst_3, map_vadd' := _}
The identity affine map acts as the identity.
The identity affine map acts as the identity.
Equations
- affine_map.inhabited = {default := affine_map.id k P1 _inst_4}
Composition of affine maps.
Composition of affine maps acts as applying the two functions.
Composition of affine maps acts as applying the two functions.
Equations
- affine_map.monoid = {mul := affine_map.comp _inst_4, mul_assoc := _, one := affine_map.id k P1 _inst_4, one_mul := _, mul_one := _, npow := npow_rec (mul_one_class.to_has_mul (P1 →ᵃ[k] P1)), npow_zero' := _, npow_succ' := _}
affine_map.linear
on endomorphisms is a monoid_hom
.
Equations
- affine_map.linear_hom = {to_fun := affine_map.linear _inst_4, map_one' := _, map_mul' := _}
Definition of affine_map.line_map
and lemmas about it #
The affine map from k
to P1
sending 0
to p₀
and 1
to p₁
.
Equations
- affine_map.line_map p₀ p₁ = (linear_map.id.smul_right (p₁ -ᵥ p₀)).to_affine_map +ᵥ affine_map.const k k p₀
Decomposition of an affine map in the special case when the point space and vector space are the same.
Decomposition of an affine map in the special case when the point space and vector space are the same.
Evaluation at a point as an affine map.
Equations
- affine_map.proj i = {to_fun := λ (f : Π (i : ι), P i), f i, linear := linear_map.proj i, map_vadd' := _}
The space of affine maps to a module inherits an R
-action from the action on its codomain.
Equations
- affine_map.distrib_mul_action = {to_mul_action := affine_map.mul_action _inst_9, smul_zero := _, smul_add := _}
The space of affine maps taking values in an R
-module is an R
-module.
Equations
- affine_map.module = {to_distrib_mul_action := {to_mul_action := {to_has_smul := {smul := has_smul.smul smul_zero_class.to_has_smul}, one_smul := _, mul_smul := _}, smul_zero := _, smul_add := _}, add_smul := _, zero_smul := _}
The space of affine maps between two modules is linearly equivalent to the product of the
domain with the space of linear maps, by taking the value of the affine map at (0 : V1)
and the
linear part.
homothety c r
is the homothety (also known as dilation) about c
with scale factor r
.
Equations
- affine_map.homothety c r = r • (affine_map.id k P1 -ᵥ affine_map.const k P1 c) +ᵥ affine_map.const k P1 c
homothety
as a multiplicative monoid homomorphism.
Equations
- affine_map.homothety_hom c = {to_fun := affine_map.homothety c, map_one' := _, map_mul' := _}
homothety
as an affine map.
Equations
- affine_map.homothety_affine c = {to_fun := affine_map.homothety c, linear := ⇑((linear_map.lsmul k (P1 →ᵃ[k] V1)).flip) (affine_map.id k P1 -ᵥ affine_map.const k P1 c), map_vadd' := _}
Applying an affine map to an affine combination of two points yields an affine combination of the images.