Multiplicative and additive equivs
In this file we define two extensions of equiv
called add_equiv
and mul_equiv
, which are
datatypes representing isomorphisms of add_monoid
s/add_group
s and monoid
s/group
s. We also
introduce the corresponding groups of automorphisms add_aut
and mul_aut
.
Notations
The extended equivs all have coercions to functions, and the coercions are the canonical notation when treating the isomorphisms as maps.
Implementation notes
The fields for mul_equiv
, add_equiv
now avoid the unbundled is_mul_hom
and is_add_hom
, as
these are deprecated.
Definition of multiplication in the groups of automorphisms agrees with function composition,
multiplication in equiv.perm
, and multiplication in category_theory.End
, not with
category_theory.comp
.
Tags
equiv, mul_equiv, add_equiv, mul_aut, add_aut
Equations
- mul_equiv.has_coe_to_fun = {F := λ (x : M ≃* N), M → N, coe := mul_equiv.to_fun _inst_2}
A multiplicative isomorphism preserves multiplication (deprecated).
Equations
- _ = _
Makes a multiplicative isomorphism from a bijection which preserves multiplication.
The identity map is a multiplicative isomorphism.
Equations
- mul_equiv.refl M = {to_fun := (equiv.refl M).to_fun, inv_fun := (equiv.refl M).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
The identity map is an additive isomorphism.
Equations
- mul_equiv.inhabited = {default := mul_equiv.refl M _inst_1}
Transitivity of multiplication-preserving isomorphisms
A bijective add_monoid
homomorphism is an isomorphism
A bijective monoid
homomorphism is an isomorphism
Equations
- mul_equiv.of_bijective f hf = {to_fun := (equiv.of_bijective ⇑f hf).to_fun, inv_fun := (equiv.of_bijective ⇑f hf).inv_fun, left_inv := _, right_inv := _, map_mul' := _}
Extract the forward direction of an additive equivalence as an addition-preserving function.
A multiplicative bijection between two monoids is a monoid hom (deprecated -- use to_monoid_hom).
Equations
- _ = _
A multiplicative bijection between two groups is a group hom (deprecated -- use to_monoid_hom).
Equations
Equations
- add_equiv.inhabited = {default := add_equiv.refl M _inst_1}
The group operation on multiplicative automorphisms is defined by
λ g h, mul_equiv.trans h g
.
This means that multiplication agrees with composition, (g*h)(x) = g (h x)
.
Equations
- mul_aut.group M = {mul := λ (g h : M ≃* M), h.trans g, mul_assoc := _, one := mul_equiv.refl M _inst_1, one_mul := _, mul_one := _, inv := mul_equiv.symm _inst_1, mul_left_inv := _}
Equations
- mul_aut.inhabited M = {default := 1}
Monoid hom from the group of multiplicative automorphisms to the group of permutations.
Equations
- mul_aut.to_perm M = {to_fun := mul_equiv.to_equiv _inst_1, map_one' := _, map_mul' := _}
group conjugation as a group homomorphism into the automorphism group.
conj g h = g * h * g⁻¹
The group operation on additive automorphisms is defined by
λ g h, mul_equiv.trans h g
.
This means that multiplication agrees with composition, (g*h)(x) = g (h x)
.
Equations
- add_aut.group A = {mul := λ (g h : A ≃+ A), h.trans g, mul_assoc := _, one := add_equiv.refl A _inst_1, one_mul := _, mul_one := _, inv := add_equiv.symm _inst_1, mul_left_inv := _}
Equations
- add_aut.inhabited A = {default := 1}
Monoid hom from the group of multiplicative automorphisms to the group of permutations.
Equations
- add_aut.to_perm A = {to_fun := add_equiv.to_equiv _inst_1, map_one' := _, map_mul' := _}
An additive group is isomorphic to its group of additive units
A multiplicative equivalence of monoids defines a multiplicative equivalence of their groups of units.
Equations
- units.map_equiv h = {to_fun := (units.map h.to_monoid_hom).to_fun, inv_fun := ⇑(units.map h.symm.to_monoid_hom), left_inv := _, right_inv := _, map_mul' := _}
Left addition of an additive unit is a permutation of the underlying type.
Right addition of an additive unit is a permutation of the underlying type.
Left addition in an add_group
is a permutation of the underlying type.
Right addition in an add_group
is a permutation of the underlying type.
Negation on an add_group
is a permutation of the underlying type.
Point reflection in x
as a permutation.
Equations
- equiv.point_reflection x = equiv.trans (equiv.neg A) (equiv.add_left (x + x))
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.
Reinterpret f : G ≃+ H
as multiplicative G ≃* multiplicative H
.
Equations
- f.to_multiplicative = {to_fun := ⇑(f.to_add_monoid_hom.to_multiplicative), inv_fun := ⇑(f.symm.to_add_monoid_hom.to_multiplicative), left_inv := _, right_inv := _, map_mul' := _}
Reinterpret f : G ≃* H
as additive G ≃+ additive H
.
Equations
- f.to_additive = {to_fun := ⇑(f.to_monoid_hom.to_additive), inv_fun := ⇑(f.symm.to_monoid_hom.to_additive), left_inv := _, right_inv := _, map_add' := _}