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_monoids/add_groups and monoids/groups. 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' := _}