Isomorphisms #
This file defines isomorphisms between objects of a category.
Main definitions #
structure iso: a bundled isomorphism between two objects of a category;class is_iso: an unbundled version ofiso; note thatis_iso fis aProp, and only asserts the existence of an inverse. Of course, this inverse is unique, so it doesn't cost us much to use choice to retrieve it.inv f, for the inverse of a morphism with[is_iso f]as_iso: convert fromis_isotoiso(noncomputable);of_iso: convert fromisotois_iso;- standard operations on isomorphisms (composition, inverse etc)
Notations #
X ≅ Y: same asiso X Y;α ≪≫ β: composition of two isomorphisms; it is callediso.trans
Tags #
category, category theory, isomorphism
- hom : X ⟶ Y
- inv : Y ⟶ X
- hom_inv_id' : self.hom ≫ self.inv = 𝟙 X . "obviously"
- inv_hom_id' : self.inv ≫ self.hom = 𝟙 Y . "obviously"
An isomorphism (a.k.a. an invertible morphism) between two objects of a category. The inverse morphism is bundled.
See also category_theory.core for the category with the same objects and isomorphisms playing
the role of morphisms.
Inverse isomorphism.
Equations
- I.symm = {hom := I.inv, inv := I.hom, hom_inv_id' := _, inv_hom_id' := _}
Identity isomorphism.
Equations
- category_theory.iso.refl X = {hom := 𝟙 X, inv := 𝟙 X, hom_inv_id' := _, inv_hom_id' := _}
Equations
Composition of two isomorphisms
is_iso typeclass expressing that a morphism is invertible.
Instances
- category_theory.is_iso.of_groupoid
- category_theory.is_iso.comp_is_iso
- category_theory.is_iso.id
- category_theory.is_iso.of_iso
- category_theory.is_iso.of_iso_inv
- category_theory.is_iso.inv_is_iso
- category_theory.functor.map_is_iso
- category_theory.nat_iso.hom_app_is_iso
- category_theory.nat_iso.inv_app_is_iso
- category_theory.nat_iso.is_iso_app_of_is_iso
- category_theory.is_iso_whisker_left
- category_theory.is_iso_whisker_right
- category_theory.is_iso_op
- category_theory.is_iso_unop
- category_theory.eq_to_hom.is_iso
The inverse of a morphism f when we have [is_iso f].
Equations
Reinterpret a morphism f with an is_iso f instance as an iso.
Equations
- category_theory.as_iso f = {hom := f, inv := category_theory.inv f h, hom_inv_id' := _, inv_hom_id' := _}
All these cancellation lemmas can be solved by simp [cancel_mono] (or simp [cancel_epi]),
but with the current design cancel_mono is not a good simp lemma,
because it generates a typeclass search.
When we can see syntactically that a morphism is a mono or an epi
because it came from an isomorphism, it's fine to do the cancellation via simp.
In the longer term, it might be worth exploring making mono and epi structures,
rather than typeclasses, with coercions back to X ⟶ Y.
Presumably we could write X ↪ Y and X ↠ Y.
A functor F : C ⥤ D sends isomorphisms i : X ≅ Y to isomorphisms F.obj X ≅ F.obj Y