Torsors of additive group actions #
This file defines torsors of additive group actions.
Notations #
The group elements are referred to as acting on points. This file
defines the notation +ᵥ
for adding a group element to a point and
-ᵥ
for subtracting two points to produce a group element.
Implementation notes #
Affine spaces are the motivating example of torsors of additive group actions. It may be appropriate
to refactor in terms of the general definition of group actions, via to_additive
, when there is a
use for multiplicative torsors (currently mathlib only develops the theory of group actions for
multiplicative group actions).
Notations #
-
v +ᵥ p
is a notation forVAdd.vadd
, the left action of an additive monoid; -
p₁ -ᵥ p₂
is a notation forVSub.vsub
, difference between two points in an additive torsor as an element of the corresponding additive group;
References #
- https://en.wikipedia.org/wiki/Principal_homogeneous_space
- https://en.wikipedia.org/wiki/Affine_space
An AddTorsor G P
gives a structure to the nonempty type P
,
acted on by an AddGroup G
with a transitive and free action given
by the +ᵥ
operation and a corresponding subtraction given by the
-ᵥ
operation. In the case of a vector space, it is an affine
space.
- vadd : G → P → P
- vsub : P → P → G
- nonempty : Nonempty P
Torsor subtraction and addition with the same element cancels out.
Torsor addition and subtraction with the same element cancels out.
Instances
An AddGroup G
is a torsor for itself.
Equations
- addGroupIsAddTorsor G = AddTorsor.mk ⋯ ⋯
Adding a group element to the point p
is an injective
function.
Subtracting the point p
is an injective function.
Subtracting a point from the point p
is an injective
function.
The permutation given by p ↦ v +ᵥ p
.
Equations
- Equiv.constVAdd P v = { toFun := fun (x : P) => v +ᵥ x, invFun := fun (x : P) => -v +ᵥ x, left_inv := ⋯, right_inv := ⋯ }
Instances For
Equiv.constVAdd
as a homomorphism from Multiplicative G
to Equiv.perm P
Equations
- Equiv.constVAddHom P = { toOneHom := { toFun := fun (v : Multiplicative G) => Equiv.constVAdd P (Multiplicative.toAdd v), map_one' := ⋯ }, map_mul' := ⋯ }
Instances For
Point reflection in x
as a permutation.
Equations
- Equiv.pointReflection x = (Equiv.constVSub x).trans (Equiv.vaddConst 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.