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.
See https://stacks.math.columbia.edu/tag/0017.
Instances for category_theory.iso
- category_theory.iso.has_sizeof_inst
- category_theory.iso.inhabited
- category_theory.subsingleton_iso
- category_theory.limits.has_zero_object.category_theory.iso.subsingleton
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 of this typeclass
- category_theory.is_iso.of_groupoid
- algebraic_geometry.is_iso_of_is_empty
- Action.is_iso_of_hom_is_iso
- 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
- category_theory.arrow.is_iso_left
- category_theory.arrow.is_iso_right
- category_theory.discrete.category_theory.is_iso
- category_theory.functor.repr_f.category_theory.is_iso
- category_theory.functor.corepr_f.category_theory.is_iso
- category_theory.limits.is_iso_π_initial
- category_theory.limits.is_iso_π_terminal
- category_theory.limits.is_iso_ι_terminal
- category_theory.limits.is_iso_ι_initial
- category_theory.limits.terminal_comparison.category_theory.is_iso
- category_theory.limits.initial_comparison.category_theory.is_iso
- category_theory.limits.equalizer.ι_of_self
- category_theory.limits.coequalizer.π_of_self
- category_theory.bicategory.whisker_left_is_iso
- category_theory.bicategory.whisker_right_is_iso
- category_theory.limits.is_iso_prod
- category_theory.limits.is_iso_coprod
- category_theory.limits.pullback.map_is_iso
- category_theory.limits.pushout.map_is_iso
- category_theory.limits.pullback_snd_iso_of_left_iso
- category_theory.limits.pullback_snd_iso_of_right_factors_mono
- category_theory.limits.pullback_snd_iso_of_right_iso
- category_theory.limits.pullback_snd_iso_of_left_factors_mono
- category_theory.limits.pushout_inr_iso_of_left_iso
- category_theory.limits.pushout_inr_iso_of_right_factors_epi
- category_theory.limits.pushout_inl_iso_of_right_iso
- category_theory.limits.pushout_inl_iso_of_left_factors_epi
- category_theory.limits.fst_iso_of_mono_eq
- category_theory.limits.snd_iso_of_mono_eq
- category_theory.limits.inl_iso_of_epi_eq
- category_theory.limits.inr_iso_of_epi_eq
- category_theory.limits.image.eq_to_hom.category_theory.is_iso
- category_theory.limits.image.is_iso_precomp_iso
- category_theory.limits.has_zero_object.zero_to_zero_is_iso
- category_theory.limits.kernel.ι_zero_is_iso
- category_theory.limits.cokernel.π_zero_is_iso
- category_theory.limits.kernel.of_cokernel_of_epi
- category_theory.limits.cokernel.of_kernel_of_mono
- category_theory.limits.prod_comparison.category_theory.is_iso
- category_theory.limits.coprod_comparison.category_theory.is_iso
- category_theory.limits.pi_comparison.category_theory.is_iso
- category_theory.limits.sigma_comparison.category_theory.is_iso
- category_theory.unit_is_iso_of_L_fully_faithful
- category_theory.counit_is_iso_of_R_fully_faithful
- category_theory.whisker_left_counit_iso_of_L_fully_faithful
- category_theory.whisker_right_counit_iso_of_L_fully_faithful
- category_theory.whisker_left_unit_iso_of_R_fully_faithful
- category_theory.whisker_right_unit_iso_of_R_fully_faithful
- category_theory.is_iso_unit_obj
- category_theory.monoidal_category.tensor_is_iso
- category_theory.monoidal_functor.ε_is_iso
- category_theory.monoidal_functor.μ_is_iso
- category_theory.bicategory.bicategorical_coherence.is_iso
- category_theory.monoidal_category.monoidal_coherence.is_iso
- category_theory.transfer_nat_trans_self_iso
- category_theory.transfer_nat_trans_self_symm_iso
- category_theory.monoidal_nat_iso.is_iso_of_is_iso_app
- category_theory.monoidal_unit.is_iso
- category_theory.monoidal_counit.is_iso
- category_theory.limits.equalizer_comparison.category_theory.is_iso
- category_theory.limits.coequalizer_comparison.category_theory.is_iso
- category_theory.limits.pullback_comparison.category_theory.is_iso
- category_theory.limits.pushout_comparison.category_theory.is_iso
- category_theory.non_preadditive_abelian.is_iso_factor_thru_image
- category_theory.non_preadditive_abelian.is_iso_factor_thru_coimage
- category_theory.non_preadditive_abelian.is_iso_r
- category_theory.abelian.of_coimage_image_comparison_is_iso.e.category_theory.is_iso
- category_theory.abelian.of_coimage_image_comparison_is_iso.m.category_theory.is_iso
- category_theory.abelian.is_iso_factor_thru_image
- category_theory.abelian.is_iso_factor_thru_coimage
- category_theory.abelian.coimage_image_comparison.category_theory.is_iso
- category_theory.limits.kernel_comparison.category_theory.is_iso
- category_theory.limits.cokernel_comparison.category_theory.is_iso
- category_theory.subobject.top_arrow_is_iso
- category_theory.subobject.is_iso_top_arrow
- category_theory.limits.is_iso_kernel_subobject_zero_arrow
- category_theory.limits.kernel_subobject_comp_mono_is_iso
- category_theory.abelian.category_theory.limits.cokernel.desc.category_theory.is_iso
- category_theory.abelian.category_theory.limits.kernel.lift.category_theory.is_iso
- Module.free.category_theory.lax_monoidal.ε.category_theory.is_iso
- category_theory.limits.initial_is_iso_to
- category_theory.limits.terminal_is_iso_from
- localization_unit_is_iso
- localization_unit_is_iso'
- quasi_iso.is_iso
- algebraic_geometry.PresheafedSpace.base_is_iso_of_iso
- algebraic_geometry.PresheafedSpace.c_is_iso_of_iso
- category_theory.sieve.functor_inclusion_top_is_iso
- category_theory.is_iso_sheafification_adjunction_counit
- category_theory.sheafification_reflective
- category_theory.limits.colimit_limit_to_limit_colimit_is_iso
- category_theory.limits.colimit_limit_to_limit_colimit_cone_iso
- Top.presheaf.covering_of_presieve.is_iso_postcompose_diagram_fork_hom_hom
- Top.presheaf.covering_of_presieve.is_iso_postcompose_diagram_fork_hom
- algebraic_geometry.SheafedSpace.is_PresheafedSpace_iso
- category_theory.functor.final.colimit_pre_is_iso
- category_theory.functor.initial.limit_pre_is_iso
- algebraic_geometry.PresheafedSpace.of_restrict_stalk_map_is_iso
- algebraic_geometry.PresheafedSpace.stalk_map.is_iso
- algebraic_geometry.LocallyRingedSpace.is_SheafedSpace_iso
- algebraic_geometry.structure_sheaf.stalk_to_fiber_ring_hom.category_theory.is_iso
- algebraic_geometry.structure_sheaf.localization_to_stalk.category_theory.is_iso
- algebraic_geometry.structure_sheaf.is_iso_to_basic_open
- algebraic_geometry.structure_sheaf.is_iso_to_global
- algebraic_geometry.is_iso_to_Spec_Γ
- algebraic_geometry.Scheme.is_LocallyRingedSpace_iso
- algebraic_geometry.Γ_Spec.is_iso_LocallyRingedSpace_adjunction_counit
- algebraic_geometry.Γ_Spec.is_iso_adjunction_counit
- algebraic_geometry.PresheafedSpace.is_open_immersion.c_iso
- algebraic_geometry.PresheafedSpace.is_open_immersion.inv_app.category_theory.is_iso
- algebraic_geometry.PresheafedSpace.is_open_immersion.stalk_iso
- algebraic_geometry.Scheme.val_base_is_iso
- algebraic_geometry.morphism_restrict.category_theory.is_iso
- algebraic_geometry.is_affine.affine
- algebraic_geometry.basic_open_sections_to_affine.category_theory.is_iso
- category_theory.glue_data.f_id
- category_theory.glue_data.t_is_iso
- category_theory.glue_data.t'_is_iso
- Top.glue_data.mk_core.t.category_theory.is_iso
- algebraic_geometry.PresheafedSpace.glue_data.componentwise_diagram_π_is_iso
- algebraic_geometry.Scheme.open_cover.from_glued_stalk_iso
- algebraic_geometry.Scheme.open_cover.from_glued.category_theory.is_iso
- fundamental_groupoid_functor.pi_Top_to_pi_cone.category_theory.is_iso
- fundamental_groupoid_functor.homotopic_maps_nat_iso.category_theory.is_iso
- simplicial_object.splitting.map_is_iso
- category_theory.abelian.functor_category.functor_category_is_iso_coimage_image_comparison
- category_theory.abelian.homology_c_to_k.category_theory.is_iso
- category_theory.μ_iso_of_reflective
- category_theory.reflective.app.category_theory.is_iso
- category_theory.to_initial_is_iso
- category_theory.frobenius_morphism_iso_of_preserves_binary_products
- category_theory.cartesian_closed_functor.comparison_iso
- category_theory.center.is_iso_of_f_is_iso
- category_theory.limits.pullback.diagonal.category_theory.is_iso
- Mon_.quiver.hom.hom.category_theory.is_iso
- category_theory.grothendieck_topology.to_image_presheaf.category_theory.is_iso
- category_theory.with_terminal.is_iso_of_from_star
- category_theory.with_initial.is_iso_of_to_star
- Action.is_iso_hom_mk
- Profinite.is_iso_as_limit_cone_lift
The inverse of a morphism f when we have [is_iso f].
Equations
Instances for category_theory.inv
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