Affine equivalences #
In this file we define AffineEquiv k P₁ P₂
(notation: P₁ ≃ᵃ[k] P₂
) to be the type of affine
equivalences between P₁
and P₂
, i.e., equivalences such that both forward and inverse maps are
affine maps.
We define the following equivalences:
-
AffineEquiv.refl k P
: the identity map as anAffineEquiv
; -
e.symm
: the inverse map of anAffineEquiv
as anAffineEquiv
; -
e.trans e'
: composition of twoAffineEquiv
s; note that the order followsmathlib
'sCategoryTheory
convention (applye
, thene'
), not the convention used in function composition and compositions of bundled morphisms.
We equip AffineEquiv k P P
with a Group
structure with multiplication corresponding to
composition in AffineEquiv.group
.
Tags #
affine space, affine equivalence
- toFun : P₁ → P₂
- invFun : P₂ → P₁
- left_inv : Function.LeftInverse s.invFun s.toFun
- right_inv : Function.RightInverse s.invFun s.toFun
An affine equivalence is an equivalence between affine spaces such that both forward and inverse maps are affine.
We define it using an Equiv
for the map and a LinearEquiv
for the linear part in order
to allow affine equivalences with good definitional equalities.
Instances For
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reinterpret an AffineEquiv
as an AffineMap
.
Equations
Instances For
Equations
- One or more equations did not get rendered due to their size.
Equations
- AffineEquiv.instCoeFunAffineEquivForAll = FunLike.hasCoeToFun
Equations
- AffineEquiv.instCoeOutAffineEquivEquiv = { coe := AffineEquiv.toEquiv }
Equations
- AffineEquiv.instCoeAffineEquivAffineMap = { coe := AffineEquiv.toAffineMap }
Construct an affine 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 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
- One or more equations did not get rendered due to their size.
Instances For
Inverse of an affine equivalence as an affine equivalence.
Equations
- AffineEquiv.symm e = { toEquiv := e.symm, linear := LinearEquiv.symm e.linear, map_vadd' := (_ : ∀ (p : P₂) (v : V₂), ↑e.symm (v +ᵥ p) = ↑(LinearEquiv.symm e.linear) v +ᵥ ↑e.symm p) }
Instances For
See Note [custom simps projection]
Equations
- AffineEquiv.Simps.apply e = ↑e
Instances For
See Note [custom simps projection]
Equations
Instances For
Bijective affine maps are affine isomorphisms.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Identity map as an AffineEquiv
.
Equations
- AffineEquiv.refl k P₁ = { toEquiv := Equiv.refl P₁, linear := LinearEquiv.refl k V₁, map_vadd' := (_ : ∀ (x : P₁) (x_1 : V₁), ↑(Equiv.refl P₁) (x_1 +ᵥ x) = ↑(Equiv.refl P₁) (x_1 +ᵥ x)) }
Instances For
Composition of two AffineEquiv
alences, applied left to right.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Equations
- AffineEquiv.group = Group.mk (_ : ∀ (e : P₁ ≃ᵃ[k] P₁), AffineEquiv.trans e (AffineEquiv.symm e) = AffineEquiv.refl k P₁)
AffineEquiv.linear
on automorphisms is a MonoidHom
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The group of AffineEquiv
s are equivalent to the group of units of AffineMap
.
This is the affine version of LinearMap.GeneralLinearGroup.generalLinearEquiv
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
The map v ↦ v +ᵥ b
as an affine equivalence between a module V
and an affine space P
with
tangent space V
.
Equations
- AffineEquiv.vaddConst k b = { toEquiv := Equiv.vaddConst b, linear := LinearEquiv.refl k V₁, map_vadd' := (_ : ∀ (x x_1 : V₁), x_1 + x +ᵥ b = x_1 +ᵥ (x +ᵥ b)) }
Instances For
p' ↦ p -ᵥ p'
as an equivalence.
Equations
- AffineEquiv.constVSub k p = { toEquiv := Equiv.constVSub p, linear := LinearEquiv.neg k, map_vadd' := (_ : ∀ (p' : P₁) (v : V₁), p -ᵥ (v +ᵥ p') = -v + (p -ᵥ p')) }
Instances For
The map p ↦ v +ᵥ p
as an affine automorphism of an affine space.
Note that there is no need for an AffineMap.constVAdd
as it is always an equivalence.
This is roughly to DistribMulAction.toLinearEquiv
as +ᵥ
is to •
.
Equations
- AffineEquiv.constVAdd k P₁ v = { toEquiv := Equiv.constVAdd P₁ v, linear := LinearEquiv.refl k V₁, map_vadd' := (_ : ∀ (x : P₁) (x_1 : V₁), v +ᵥ (x_1 +ᵥ x) = x_1 +ᵥ (v +ᵥ x)) }
Instances For
A more bundled version of AffineEquiv.constVAdd
.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Fixing a point in affine space, homothety about this point gives a group homomorphism from (the centre of) the units of the scalars into the group of affine equivalences.
Equations
- AffineEquiv.homothetyUnitsMulHom p = MonoidHom.comp (MulEquiv.toMonoidHom (MulEquiv.symm AffineEquiv.equivUnitsAffineMap)) (Units.map (AffineMap.homothetyHom p))
Instances For
Point reflection in x
as a permutation.
Equations
Instances For
x
is the only fixed point of pointReflection x
. This lemma requires
x + x = y + y ↔ x = y
. There is no typeclass to use here, so we add it as an explicit argument.
Interpret a linear equivalence between modules as an affine equivalence.
Equations
- LinearEquiv.toAffineEquiv e = { toEquiv := LinearEquiv.toEquiv e, linear := e, map_vadd' := (_ : ∀ (p v : V₁), ↑e (v + p) = ↑e v + ↑e p) }