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.
Adding a group element to a point, then subtracting another point, produces the same result as subtracting the points then adding the group element.
If subtracting two points produces 0, they are equal.
Subtracting two points produces 0 if and only if they are equal.
Cancellation adding the results of two subtractions.
Subtracting two points in the reverse order produces the negation of subtracting them.
Subtracting the result of adding a group element produces the same result as subtracting the points and subtracting that group element.
Cancellation subtracting the results of two subtractions.
Convert between an equality with adding a group element to a point and an equality of a subtraction of two points with a group element.
If the same point subtracted from two points produces equal results, those points are equal.
The same point subtracted from two points produces equal results if and only if 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 two points from the same point produces equal results if and only if 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' := _}
v ↦ v +ᵥ p
as an equivalence.
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.