Affine maps #
This file defines affine maps.
Main definitions #
AffineMap
is the type of affine maps between two affine spaces with the same ringk
. Various basic examples of affine maps are defined, includingconst
,id
,lineMap
andhomothety
.
Notations #
P1 →ᵃ[k] P2
is a notation forAffineMap k P1 P2
;AffineSpace V P
: a localized notation forAddTorsor V P
defined inLinearAlgebra.AffineSpace.Basic
.
Implementation notes #
outParam
is used in the definition of [AddTorsor V P]
to make V
an implicit argument
(deduced from P
) in most cases. 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.NormedSpace.AddTorsor
and
Topology.Algebra.Affine
.
References #
- https://en.wikipedia.org/wiki/Affine_space
- https://en.wikipedia.org/wiki/Principal_homogeneous_space
An AffineMap k P1 P2
(notation: P1 →ᵃ[k] P2
) is a map from P1
to P2
that
induces a corresponding linear map from V1
to V2
.
- toFun : P1 → P2
Instances For
An AffineMap k P1 P2
(notation: P1 →ᵃ[k] P2
) is a map from P1
to P2
that
induces a corresponding linear map from V1
to V2
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AffineMap.instFunLike k P1 P2 = { coe := AffineMap.toFun, coe_injective' := ⋯ }
Equations
- AffineMap.hasCoeToFun k P1 P2 = DFunLike.hasCoeToFun
Reinterpret a linear map as an affine map.
Equations
- LinearMap.toAffineMap f = { toFun := ⇑f, linear := f, map_vadd' := ⋯ }
Instances For
Constructing an affine map and coercing back to a function produces the same map.
toFun
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.
The constant function as an AffineMap
.
Equations
- AffineMap.const k P1 p = { toFun := Function.const P1 p, linear := 0, map_vadd' := ⋯ }
Instances For
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
.
Equations
- AffineMap.mk' f f' p h = { toFun := f, linear := f', map_vadd' := ⋯ }
Instances For
The space of affine maps to a module inherits an R
-action from the action on its codomain.
Equations
- AffineMap.mulAction = MulAction.mk ⋯ ⋯
Equations
- ⋯ = ⋯
Equations
- AffineMap.instZeroAffineMapAddGroupIsAddTorsorToAddGroup = { zero := { toFun := 0, linear := 0, map_vadd' := ⋯ } }
The set of affine maps to a vector space is an additive commutative group.
Equations
- AffineMap.instAddCommGroupAffineMapAddGroupIsAddTorsorToAddGroup = Function.Injective.addCommGroup DFunLike.coe ⋯ ⋯ ⋯ ⋯ ⋯ ⋯ ⋯
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
- AffineMap.instAddTorsorAffineMapAddGroupIsAddTorsorToAddGroupAffineMapToAddGroupInstAddCommGroupAffineMapAddGroupIsAddTorsorToAddGroup = AddTorsor.mk ⋯ ⋯
Equations
- AffineMap.fst = { toFun := Prod.fst, linear := LinearMap.fst k V1 V2, map_vadd' := ⋯ }
Instances For
Equations
- AffineMap.snd = { toFun := Prod.snd, linear := LinearMap.snd k V1 V2, map_vadd' := ⋯ }
Instances For
Identity map as an affine map.
Equations
- AffineMap.id k P1 = { toFun := id, linear := LinearMap.id, map_vadd' := ⋯ }
Instances For
The identity affine map acts as the identity.
The identity affine map acts as the identity.
Equations
- AffineMap.instInhabitedAffineMap = { default := AffineMap.id k P1 }
Composition of affine maps.
Equations
- AffineMap.comp f g = { toFun := ⇑f ∘ ⇑g, linear := LinearMap.comp f.linear g.linear, map_vadd' := ⋯ }
Instances For
Composition of affine maps acts as applying the two functions.
Composition of affine maps acts as applying the two functions.
AffineMap.linear
on endomorphisms is a MonoidHom
.
Equations
- AffineMap.linearHom = { toOneHom := { toFun := AffineMap.linear, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
Definition of AffineMap.lineMap
and lemmas about it #
The affine map from k
to P1
sending 0
to p₀
and 1
to p₁
.
Equations
- AffineMap.lineMap p₀ p₁ = LinearMap.toAffineMap (LinearMap.smulRight LinearMap.id (p₁ -ᵥ p₀)) +ᵥ AffineMap.const k k p₀
Instances For
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
- AffineMap.proj i = { toFun := fun (f : (i : ι) → P i) => f i, linear := LinearMap.proj i, map_vadd' := ⋯ }
Instances For
The space of affine maps to a module inherits an R
-action from the action on its codomain.
Equations
- AffineMap.distribMulAction = DistribMulAction.mk ⋯ ⋯
The space of affine maps taking values in an R
-module is an R
-module.
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.
See note [bundled maps over different rings]
Equations
- One or more equations did not get rendered due to their size.
Instances For
homothety c r
is the homothety (also known as dilation) about c
with scale factor r
.
Equations
- AffineMap.homothety c r = r • (AffineMap.id k P1 -ᵥ AffineMap.const k P1 c) +ᵥ AffineMap.const k P1 c
Instances For
homothety
as a multiplicative monoid homomorphism.
Equations
- AffineMap.homothetyHom c = { toOneHom := { toFun := AffineMap.homothety c, map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
homothety
as an affine map.
Equations
- AffineMap.homothetyAffine c = { toFun := AffineMap.homothety c, linear := (LinearMap.flip (LinearMap.lsmul k (P1 →ᵃ[k] V1))) (AffineMap.id k P1 -ᵥ AffineMap.const k P1 c), map_vadd' := ⋯ }
Instances For
Applying an affine map to an affine combination of two points yields an affine combination of the images.