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 anAffineEquivas anAffineEquiv;e.trans e': composition of twoAffineEquivs; note that the order followsmathlib'sCategoryTheoryconvention (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
An affine equivalence, denoted P₁ ≃ᵃ[k] P₂, 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.
- toFun : P₁ → P₂
- invFun : P₂ → P₁
- left_inv : Function.LeftInverse self.invFun self.toFun
- right_inv : Function.RightInverse self.invFun self.toFun
The underlying linear equiv of modules.
Instances For
An affine equivalence, denoted P₁ ≃ᵃ[k] P₂, 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.
Equations
- One or more equations did not get rendered due to their size.
Instances For
Reinterpret an AffineEquiv as an AffineMap.
Instances For
Equations
Equations
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
Instances For
Inverse of an affine equivalence as an affine equivalence.
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
- AffineEquiv.ofBijective hφ = { toEquiv := Equiv.ofBijective (⇑φ) hφ, linear := LinearEquiv.ofBijective φ.linear ⋯, map_vadd' := ⋯ }
Instances For
Identity map as an AffineEquiv.
Equations
- AffineEquiv.refl k P₁ = { toEquiv := Equiv.refl P₁, linear := LinearEquiv.refl k V₁, map_vadd' := ⋯ }
Instances For
Composition of two AffineEquivalences, applied left to right.
Equations
Instances For
AffineEquiv.linear on automorphisms is a MonoidHom.
Equations
- AffineEquiv.linearHom = { toFun := AffineEquiv.linear, map_one' := ⋯, map_mul' := ⋯ }
Instances For
The group of AffineEquivs 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
Product of two affine equivalences. The map comes from Equiv.prodCongr
Equations
Instances For
Product of affine spaces is commutative up to affine isomorphism.
Equations
- AffineEquiv.prodComm k P₁ P₂ = { toEquiv := Equiv.prodComm P₁ P₂, linear := LinearEquiv.prodComm k V₁ V₂, map_vadd' := ⋯ }
Instances For
Product of affine spaces is associative up to affine isomorphism.
Equations
- AffineEquiv.prodAssoc k P₁ P₂ P₃ = { toEquiv := Equiv.prodAssoc P₁ P₂ P₃, linear := LinearEquiv.prodAssoc k V₁ V₂ V₃, map_vadd' := ⋯ }
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' := ⋯ }
Instances For
p' ↦ p -ᵥ p' as an equivalence.
Equations
- AffineEquiv.constVSub k p = { toEquiv := Equiv.constVSub p, linear := LinearEquiv.neg k, map_vadd' := ⋯ }
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' := ⋯ }
Instances For
A more bundled version of AffineEquiv.constVAdd.
Equations
- AffineEquiv.constVAddHom k P₁ = { toFun := fun (v : Multiplicative V₁) => AffineEquiv.constVAdd k P₁ (Multiplicative.toAdd v), map_one' := ⋯, map_mul' := ⋯ }
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
Instances For
Point reflection in x as a permutation.
Equations
- AffineEquiv.pointReflection k x = (AffineEquiv.constVSub k x).trans (AffineEquiv.vaddConst k x)
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
- e.toAffineEquiv = { toEquiv := e.toEquiv, linear := e, map_vadd' := ⋯ }