Unbundled monoid and group homomorphisms (deprecated)
This file defines typeclasses for unbundled monoid and group homomorphisms. Though these classes are deprecated, they are still widely used in mathlib, and probably will not go away before Lean 4 because Lean 3 often fails to coerce a bundled homomorphism to a function.
main definitions
monoid_hom, is_monoid_hom (deprecated), is_group_hom (deprecated)
implementation notes
There's a coercion from bundled homs to fun, and the canonical notation is to use the bundled hom as a function via this coercion.
There is no group_hom
-- the idea is that monoid_hom
is used.
The constructor for monoid_hom
needs a proof of map_one
as well
as map_mul
; a separate constructor monoid_hom.mk'
will construct
group homs (i.e. monoid homs between groups) given only a proof
that multiplication is preserved,
Throughout the monoid_hom
section implicit {}
brackets are often used instead of type class []
brackets. This is done when the instances can be inferred because they are implicit arguments to
the type monoid_hom
. When they can be inferred from the type it is faster to use this method than
to use type class inference.
Tags
is_group_hom, is_monoid_hom, monoid_hom
Predicate for maps which preserve an addition.
Predicate for maps which preserve a multiplication.
The identity map preserves multiplication.
Equations
The identity map preserves addition
The composition of maps which preserve multiplication, also preserves multiplication.
The composition of addition preserving maps also preserves addition
A product of maps which preserve multiplication, preserves multiplication when the target is commutative.
The inverse of a map which preserves multiplication, preserves multiplication when the target is commutative.
- to_is_add_hom : is_add_hom f
- map_zero : f 0 = 0
Predicate for add_monoid homomorphisms (deprecated -- use the bundled monoid_hom
version).
Instances
- is_add_group_hom.to_is_add_monoid_hom
- is_semiring_hom.is_add_monoid_hom
- add_monoid_hom.is_add_monoid_hom
- is_add_monoid_hom.id
- is_add_monoid_hom.is_add_monoid_hom_mul_left
- is_add_monoid_hom.is_add_monoid_hom_mul_right
- ring_hom.is_add_monoid_hom
- nsmul.is_add_monoid_hom
- multiset.is_add_monoid_hom
- multiset.sum.is_add_monoid_hom
- multiset.countp.is_add_monoid_hom
- multiset.count.is_add_monoid_hom
- add_equiv.is_add_monoid_hom
- linear_map.is_add_monoid_hom
- subtype_val.is_add_monoid_hom
- coe.is_add_monoid_hom
- subtype_mk.is_add_monoid_hom
- set_inclusion.is_add_monoid_hom
- finsupp.subtype_domain.is_add_monoid_hom
- finsupp.filter.is_add_monoid_hom
- finsupp.is_add_monoid_hom.to_multiset
- multiset.to_finsupp.is_add_monoid_hom
- linear_map.linear_map_apply_is_add_monoid_hom
- matrix.mul_vec.is_add_monoid_hom_left
- polynomial.eval₂.is_add_monoid_hom
- mv_polynomial.coeff.is_add_monoid_hom
- matrix.to_lin.is_add_monoid_hom
- dfinsupp.is_add_monoid_hom
- dfinsupp.subtype_domain.is_add_monoid_hom
- set.is_add_monoid_hom.indicator
- polynomial.is_add_monoid_hom
- prime_multiset.coe_nat_hom
- prime_multiset.coe_pnat_hom
- to_is_mul_hom : is_mul_hom f
- map_one : f 1 = 1
Predicate for monoid homomorphisms (deprecated -- use the bundled monoid_hom
version).
Instances
- is_group_hom.to_is_monoid_hom
- is_semiring_hom.is_monoid_hom
- monoid_hom.is_monoid_hom
- is_monoid_hom.id
- ring_hom.is_monoid_hom
- units.coe_is_monoid_hom
- pow.is_monoid_hom
- mul_equiv.is_monoid_hom
- pnat.coe_mul_hom
- subtype_val.is_monoid_hom
- coe.is_monoid_hom
- subtype_mk.is_monoid_hom
- set_inclusion.is_monoid_hom
- linear_map.automorphism_group.to_linear_map_is_monoid_hom
- matrix.is_monoid_hom
- normed_field.normed_field.is_monoid_hom_norm
- traversable.is_monoid_hom
- traversable.fold_foldl
- traversable.fold_foldr
- traversable.fold_mfoldl
- traversable.fold_mfoldr
- zsqrtd.is_monoid_hom
Interpret a map f : M → N
as a homomorphism M →+ N
.
Interpret a map f : M → N
as a homomorphism M →* N
.
Equations
- _ = _
A monoid homomorphism preserves multiplication.
A map to a group preserving multiplication is a monoid homomorphism.
The identity map is a monoid homomorphism.
Equations
The composite of two monoid homomorphisms is a monoid homomorphism.
Left multiplication in a ring is an additive monoid morphism.
Equations
- _ = _
Right multiplication in a ring is an additive monoid morphism.
Equations
- _ = _
- to_is_add_hom : is_add_hom f
Predicate for additive group homomorphism (deprecated -- use bundled monoid_hom
).
Instances
- is_add_group_hom.add
- is_ring_hom.is_add_group_hom
- add_monoid_hom.is_add_group_hom
- is_add_group_hom.id
- is_add_group_hom.neg
- ring_hom.is_add_group_hom
- inv.is_add_group_hom
- is_add_group_hom.sub
- gsmul.is_add_group_hom
- add_equiv.is_add_group_hom
- linear_map.is_add_group_hom
- subtype_val.is_add_group_hom
- coe.is_add_group_hom
- subtype_mk.is_add_group_hom
- set_inclusion.is_add_group_hom
- linear_map.linear_map_apply_is_add_group_hom
- mv_polynomial.coeff.is_add_group_hom
- free_abelian_group.is_add_group_hom_lift'
- free_abelian_group.is_add_group_hom_seq
- dfinsupp.is_add_group_hom
- direct_sum.mk.is_add_group_hom
- direct_sum.of.is_add_group_hom
- direct_sum.to_group.is_add_group_hom
- direct_sum.is_add_group_hom
- add_comm_group.direct_limit.of.is_add_group_hom
- add_comm_group.direct_limit.lift.is_add_group_hom
- complex.re.is_add_group_hom
- complex.im.is_add_group_hom
- set.is_add_group_hom.indicator
- uniform_space.completion.is_add_group_hom_coe
- to_is_mul_hom : is_mul_hom f
Predicate for group homomorphisms (deprecated -- use bundled monoid_hom
).
Instances
- is_group_hom.mul
- monoid_hom.is_group_hom
- is_group_hom.id
- is_group_hom.inv
- inv.is_group_hom
- gpow.is_group_hom
- mul_equiv.is_group_hom
- mul_action.is_group_hom
- subtype_val.is_group_hom
- coe.is_group_hom
- subtype_mk.is_group_hom
- set_inclusion.is_group_hom
- free_group.to_group.is_group_hom
- free_group.sum.is_group_hom
Equations
Construct is_group_hom
from its only hypothesis. The default constructor tries to get
is_mul_hom
from class instances, and this makes some proofs fail.
A group homomorphism is a monoid homomorphism.
Equations
- _ = _
A group homomorphism sends 1 to 1.
A group homomorphism sends inverses to inverses.
The identity is a group homomorphism.
Equations
The composition of two group homomomorphisms is a group homomorphism.
A group homomorphism is injective iff its kernel is trivial.
The product of group homomorphisms is a group homomorphism if the target is commutative.
The inverse of a group homomorphism is a group homomorphism if the target is commutative.
These instances look redundant, because deprecated.ring
provides is_ring_hom
for a →+*
.
Nevertheless these are harmless, and helpful for stripping out dependencies on deprecated.ring
.
Equations
- _ = _
Equations
- _ = _
Equations
Inversion is a group homomorphism if the group is commutative.
Additive group homomorphisms commute with subtraction.
The difference of two additive group homomorphisms is an additive group homomorphism if the target is commutative.
The group homomorphism on units induced by a multiplicative morphism.
Equations
- units.map' f = units.map (monoid_hom.of f)