monoid and group homomorphisms

This file defines the basic structures for monoid and group homomorphisms, both unbundled (e.g. is_monoid_hom f) and bundled (e.g. monoid_hom M N, a.k.a. M * N). The unbundled ones are deprecated and the plan is to slowly remove them from mathlib.

main definitions

monoid_hom, is_monoid_hom (deprecated), is_group_hom (deprecated)

Notations

→* for bundled monoid homs (also use for group homs) →+ for bundled add_monoid homs (also use for add_group homs)

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


is_add_hom

Predicate for maps which preserve an addition.

is_mul_hom

Predicate for maps which preserve a multiplication.

is_mul_hom.id

The identity map preserves multiplication.

is_add_hom.id

The identity map preserves addition

is_mul_hom.comp

The composition of maps which preserve multiplication, also preserves multiplication.

is_add_hom.comp

The composition of addition preserving maps also preserves addition

is_mul_hom.mul

A product of maps which preserve multiplication, preserves multiplication when the target is commutative.

is_mul_hom.inv

The inverse of a map which preserves multiplication, preserves multiplication when the target is commutative.

is_add_monoid_hom

Predicate for add_monoid homomorphisms (deprecated -- use the bundled monoid_hom version).

is_monoid_hom

Predicate for monoid homomorphisms (deprecated -- use the bundled monoid_hom version).

is_monoid_hom.map_mul

A monoid homomorphism preserves multiplication.

is_monoid_hom.of_mul

A map to a group preserving multiplication is a monoid homomorphism.

is_monoid_hom.id

The identity map is a monoid homomorphism.

is_monoid_hom.comp

The composite of two monoid homomorphisms is a monoid homomorphism.

is_add_monoid_hom.is_add_monoid_hom_mul_left

Left multiplication in a ring is an additive monoid morphism.

is_add_monoid_hom.is_add_monoid_hom_mul_right

Right multiplication in a ring is an additive monoid morphism.

is_add_group_hom

Predicate for additive group homomorphism (deprecated -- use bundled monoid_hom).

is_group_hom

Predicate for group homomorphisms (deprecated -- use bundled monoid_hom).

is_group_hom.mk'

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.

is_group_hom.to_is_monoid_hom

A group homomorphism is a monoid homomorphism.

is_group_hom.map_one

A group homomorphism sends 1 to 1.

is_group_hom.map_inv

A group homomorphism sends inverses to inverses.

is_group_hom.id

The identity is a group homomorphism.

is_group_hom.comp

The composition of two group homomomorphisms is a group homomorphism.

is_group_hom.injective_iff

A group homomorphism is injective iff its kernel is trivial.

is_group_hom.mul

The product of group homomorphisms is a group homomorphism if the target is commutative.

is_group_hom.inv

The inverse of a group homomorphism is a group homomorphism if the target is commutative.

inv.is_group_hom

Inversion is a group homomorphism if the group is commutative.

is_add_group_hom.map_sub

Additive group homomorphisms commute with subtraction.

is_add_group_hom.sub

The difference of two additive group homomorphisms is an additive group homomorphism if the target is commutative.

add_monoid_hom

Bundled add_monoid homomorphisms; use this for bundled add_group homomorphisms too.

monoid_hom

Bundled monoid homomorphisms; use this for bundled group homomorphisms too.

monoid_hom.of

Interpret a map f : M N as a homomorphism M * N.

add_monoid_hom.of

Interpret a map f : M N as a homomorphism M + N.

monoid_hom.map_one

If f is a monoid homomorphism then f 1 = 1.

monoid_hom.map_mul

If f is a monoid homomorphism then f (a * b) = f a * f b.

monoid_hom.id

The identity map from a monoid to itself.

monoid_hom.comp

Composition of monoid morphisms is a monoid morphism.

monoid_hom.mul

The product of two monoid morphisms is a monoid morphism if the target is commutative.

monoid_hom.comm_monoid

(M →* N) is a comm_monoid if N is commutative.

monoid_hom.map_inv

Group homomorphisms preserve inverse.

monoid_hom.map_mul_inv

Group homomorphisms preserve division.

monoid_hom.mk'

Makes a group homomomorphism from a proof that the map preserves multiplication.

monoid_hom.inv

The inverse of a monoid homomorphism is a monoid homomorphism if the target is a commutative group.

monoid_hom.comm_group

(M →* G) is a comm_group if G is a comm_group

add_monoid_hom.map_sub

Additive group homomorphisms preserve subtraction.