equivs in the algebraic hierarchy

In the first part there are theorems of the following form: if α has a group structure and α ≃ β then β has a group structure, and similarly for monoids, semigroups, rings, integral domains, fields and so on.

In the second part there are extensions of equiv called add_equiv, mul_equiv, and ring_equiv, which are datatypes representing isomorphisms of add_monoids/add_groups, monoids/groups and rings. We also introduce the corresponding groups of automorphisms add_aut, mul_aut, and ring_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, and ring_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, ring_equiv, mul_aut, add_aut, ring_aut


add_equiv

add_equiv α β is the type of an equiv α ≃ β which preserves addition.

mul_equiv

mul_equiv α β is the type of an equiv α ≃ β which preserves multiplication.

mul_equiv.map_mul

A multiplicative isomorphism preserves multiplication (canonical form).

mul_equiv.is_mul_hom

A multiplicative isomorphism preserves multiplication (deprecated).

mul_equiv.refl

The identity map is a multiplicative isomorphism.

mul_equiv.symm

The inverse of an isomorphism is an isomorphism.

mul_equiv.trans

Transitivity of multiplication-preserving isomorphisms

mul_equiv.apply_symm_apply

e.right_inv in canonical form

mul_equiv.symm_apply_apply

e.left_inv in canonical form

mul_equiv.map_one

a multiplicative equiv of monoids sends 1 to 1 (and is hence a monoid isomorphism)

mul_equiv.to_monoid_hom

A multiplicative bijection between two monoids is an isomorphism.

mul_equiv.map_inv

A multiplicative equivalence of groups preserves inversion.

mul_equiv.is_monoid_hom

A multiplicative bijection between two monoids is a monoid hom (deprecated -- use to_monoid_hom).

mul_equiv.is_group_hom

A multiplicative bijection between two groups is a group hom (deprecated -- use to_monoid_hom).

mul_equiv.ext

Two multiplicative isomorphisms agree if they are defined by the same underlying function.

add_equiv.ext

Two additive isomorphisms agree if they are defined by the same underlying function.

add_equiv.map_sub

An additive equivalence of additive groups preserves subtraction.

mul_aut

The group of multiplicative automorphisms.

add_aut

The group of additive automorphisms.

mul_aut.group

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).

mul_aut.to_perm

Monoid hom from the group of multiplicative automorphisms to the group of permutations.

add_aut.group

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).

add_aut.to_perm

Monoid hom from the group of multiplicative automorphisms to the group of permutations.

to_units

A group is isomorphic to its group of units.

ring_equiv.refl

The identity map is a ring isomorphism.

ring_equiv.symm

The inverse of a ring isomorphism is a ring isomorphis.

ring_equiv.trans

Transitivity of ring_equiv.

ring_equiv.map_mul

A ring isomorphism preserves multiplication.

ring_equiv.map_one

A ring isomorphism sends one to one.

ring_equiv.map_add

A ring isomorphism preserves addition.

ring_equiv.map_zero

A ring isomorphism sends zero to zero.

ring_equiv.to_ring_hom

Reinterpret a ring equivalence as a ring homomorphism.

ring_equiv.of

Interpret an equivalence f : α ≃ β as a ring equivalence α ≃+* β.

ring_equiv.of'

Interpret an equivalence f : α ≃ β as a ring equivalence α ≃+* β.

ring_equiv.ext

Two ring isomorphisms agree if they are defined by the same underlying function.

ring_aut

The group of ring automorphisms.

ring_aut.group

The group operation on automorphisms of a ring is defined by λ g h, ring_equiv.trans h g. This means that multiplication agrees with composition, (g*h)(x) = g (h x) .

ring_aut.to_add_aut

Monoid homomorphism from ring automorphisms to additive automorphisms.

ring_aut.to_mul_aut

Monoid homomorphism from ring automorphisms to multiplicative automorphisms.

ring_aut.to_perm

Monoid homomorphism from ring automorphisms to permutations.