Torsors of additive group actions #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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 forhas_vadd.vadd
, the left action of an additive monoid; -
p₁ -ᵥ p₂
is a notation forhas_vsub.vsub
, difference between two points in an additive torsor as an element of the corresponding additive group;
References #
- to_add_action : add_action G P
- to_has_vsub : has_vsub G P
- nonempty : nonempty P
- vsub_vadd' : ∀ (p1 p2 : P), p1 -ᵥ p2 +ᵥ p2 = p1
- vadd_vsub' : ∀ (g : G) (p : P), g +ᵥ p -ᵥ p = g
An add_torsor G P
gives a structure to the nonempty type P
,
acted on by an add_group 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.
Instances of this typeclass
Instances of other typeclasses for add_torsor
- add_torsor.has_sizeof_inst
An add_group G
is a torsor for itself.
Equations
- add_group_is_add_torsor G = {to_add_action := add_monoid.to_add_action G (sub_neg_monoid.to_add_monoid G), to_has_vsub := {vsub := has_sub.sub (sub_neg_monoid.to_has_sub G)}, nonempty := _, vsub_vadd' := _, vadd_vsub' := _}
If the same point added to two group elements produces equal results, those group elements are equal.
Adding a group element to the point p
is an injective
function.
If subtracting two points produces 0, they are equal.
Subtracting two points produces 0 if and only if they are equal.
Subtracting two points in the reverse order produces the negation of subtracting them.
If the same point subtracted from two points produces equal results, those points are equal.
Subtracting the point p
is an injective function.
If subtracting two points from the same point produces equal results, those points are equal.
Subtracting a point from the point p
is an injective
function.
Cancellation subtracting the results of two subtractions.
A product of add_torsor
s is an add_torsor
.
Equations
- pi.add_torsor = {to_add_action := {to_has_vadd := {vadd := λ (g : Π (i : I), fg i) (p : Π (i : I), fp i) (i : I), g i +ᵥ p i}, zero_vadd := _, add_vadd := _}, to_has_vsub := {vsub := λ (p₁ p₂ : Π (i : I), fp i) (i : I), p₁ i -ᵥ p₂ i}, nonempty := _, vsub_vadd' := _, vadd_vsub' := _}
p' ↦ p -ᵥ p'
as an equivalence.
Equations
- equiv.const_vsub p = {to_fun := has_vsub.vsub p, inv_fun := λ (v : G), -v +ᵥ p, left_inv := _, right_inv := _}
The permutation given by p ↦ v +ᵥ p
.
Equations
- equiv.const_vadd P v = {to_fun := has_vadd.vadd v, inv_fun := has_vadd.vadd (-v), left_inv := _, right_inv := _}
equiv.const_vadd
as a homomorphism from multiplicative G
to equiv.perm P
Equations
- equiv.const_vadd_hom P = {to_fun := λ (v : multiplicative G), equiv.const_vadd P (⇑multiplicative.to_add v), map_one' := _, map_mul' := _}
Point reflection in x
as a permutation.
Equations
x
is the only fixed point of point_reflection 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.