Multiplicative and additive equivs #
In this file we define two extensions of Equiv called AddEquiv and MulEquiv, which are
datatypes representing isomorphisms of AddMonoids/AddGroups and Monoids/Groups.
Main definitions #
≃*(MulEquiv),≃+(AddEquiv): bundled equivalences that preserve multiplication/addition (and are therefore monoid and group isomorphisms).MulEquivClass,AddEquivClass: classes for types containing bundled equivalences that preserve multiplication/addition.
Notation #
The extended equivs all have coercions to functions, and the coercions are the canonical notation when treating the isomorphisms as maps.
Tags #
Equiv, MulEquiv, AddEquiv
AddEquivClass F A B states that F is a type of addition-preserving morphisms.
You should extend this class when you extend AddEquiv.
- map_add (f : F) (a b : A) : f (a + b) = f a + f b
Preserves addition.
Instances
MulEquivClass F A B states that F is a type of multiplication-preserving morphisms.
You should extend this class when you extend MulEquiv.
- map_mul (f : F) (a b : A) : f (a * b) = f a * f b
Preserves multiplication.
Instances
Alias of EmbeddingLike.map_eq_one_iff.
Alias of EmbeddingLike.map_ne_one_iff.
Turn an element of a type F satisfying MulEquivClass F α β into an actual
MulEquiv. This is declared as the default coercion from F to α ≃* β.
Instances For
Turn an element of a type F satisfying AddEquivClass F α β into an actual
AddEquiv. This is declared as the default coercion from F to α ≃+ β.
Instances For
Any type satisfying MulEquivClass can be cast into MulEquiv via
MulEquivClass.toMulEquiv.
Any type satisfying AddEquivClass can be cast into AddEquiv via
AddEquivClass.toAddEquiv.
Two multiplicative isomorphisms agree if they are defined by the same underlying function.
Two additive isomorphisms agree if they are defined by the same underlying function.
The simp-normal form to turn something into a MulHom is via MulHomClass.toMulHom.
simp-normal form of toFun_eq_coe.
Makes a multiplicative isomorphism from a bijection which preserves multiplication.
Instances For
Makes an additive isomorphism from a bijection which preserves addition.
Instances For
A multiplicative isomorphism preserves multiplication.
An additive isomorphism preserves addition.
The identity map is a multiplicative isomorphism.
Instances For
The identity map is an additive isomorphism.
Instances For
An alias for h.symm.map_mul. Introduced to fix the issue in
https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/!4.234183.20.60simps.60.20maximum.20recursion.20depth
The inverse of an isomorphism is an isomorphism.
Instances For
The inverse of an isomorphism is an isomorphism.
Instances For
simp-normal form of invFun_eq_symm.
See Note [custom simps projection]
Instances For
See Note [custom simps projection]
Instances For
MulEquiv.symm defines an equivalence between α ≃* β and β ≃* α.
Instances For
AddEquiv.symm defines an equivalence between α ≃+ β and β ≃+ α
Instances For
Equiv.cast (congrArg _ h) as a MulEquiv.
Note that unlike Equiv.cast, this takes an equality of indices rather than an equality of types,
to avoid having to deal with an equality of the algebraic structure itself.
Instances For
Equiv.cast (congrArg _ h) as an AddEquiv.
Note that unlike Equiv.cast, this takes an equality of indices rather than an equality of types,
to avoid having to deal with an equality of the algebraic structure itself.
Instances For
Monoids #
A multiplicative isomorphism of monoids sends 1 to 1 (and is hence a monoid isomorphism).
An additive isomorphism of additive monoids sends 0 to 0
(and is hence an additive monoid isomorphism).
A bijective Semigroup homomorphism is an isomorphism
Instances For
A bijective AddSemigroup homomorphism is an isomorphism
Instances For
Extract the forward direction of a multiplicative equivalence as a multiplication-preserving function.
Instances For
Extract the forward direction of an additive equivalence as an addition-preserving function.
Instances For
Groups #
A multiplicative equivalence of groups preserves inversion.
An additive equivalence of additive groups preserves negation.
A multiplicative equivalence of groups preserves division.
An additive equivalence of additive groups preserves subtractions.
Given a pair of multiplicative homomorphisms f, g such that g.comp f = id and
f.comp g = id, returns a multiplicative equivalence with toFun = f and invFun = g. This
constructor is useful if the underlying type(s) have specialized ext lemmas for multiplicative
homomorphisms.
Instances For
Given a pair of additive homomorphisms f, g such that g.comp f = id and
f.comp g = id, returns an additive equivalence with toFun = f and invFun = g. This
constructor is useful if the underlying type(s) have specialized ext lemmas for additive
homomorphisms.
Instances For
Given a pair of monoid homomorphisms f, g such that g.comp f = id and f.comp g = id,
returns a multiplicative equivalence with toFun = f and invFun = g. This constructor is
useful if the underlying type(s) have specialized ext lemmas for monoid homomorphisms.
Instances For
Given a pair of additive monoid homomorphisms f, g such that g.comp f = id
and f.comp g = id, returns an additive equivalence with toFun = f and invFun = g. This
constructor is useful if the underlying type(s) have specialized ext lemmas for additive
monoid homomorphisms.