Isomorphisms #
THIS FILE IS SYNCHRONIZED WITH MATHLIB4. Any changes to this file require a corresponding PR to mathlib4.
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
- Action.is_iso_of_hom_is_iso
- algebraic_geometry.is_iso_of_is_empty
- 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.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.pullback_comparison.category_theory.is_iso
- category_theory.limits.pushout_comparison.category_theory.is_iso
- 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.monoidal_nat_iso.is_iso_of_is_iso_app
- category_theory.monoidal_unit.is_iso
- category_theory.monoidal_counit.is_iso
- category_theory.transfer_nat_trans_self_iso
- category_theory.transfer_nat_trans_self_symm_iso
- category_theory.limits.equalizer.ι_of_self
- category_theory.limits.coequalizer.π_of_self
- category_theory.limits.terminal_comparison.category_theory.is_iso
- category_theory.limits.initial_comparison.category_theory.is_iso
- 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.limits.equalizer_comparison.category_theory.is_iso
- category_theory.limits.coequalizer_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.abelian.functor_category.functor_category_is_iso_coimage_image_comparison
- Action.is_iso_hom_mk
- 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.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.abelian.homology_c_to_k.category_theory.is_iso
- quasi_iso.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
- category_theory.μ_iso_of_reflective
- category_theory.reflective.app.category_theory.is_iso
- Profinite.is_iso_as_limit_cone_lift
- category_theory.sieve.functor_inclusion_top_is_iso
- category_theory.limits.colimit_limit_to_limit_colimit_is_iso
- category_theory.limits.colimit_limit_to_limit_colimit_cone_iso
- category_theory.functor.final.colimit_pre_is_iso
- category_theory.functor.initial.limit_pre_is_iso
- localization_unit_is_iso
- localization_unit_is_iso'
- category_theory.limits.initial_is_iso_to
- category_theory.limits.terminal_is_iso_from
- category_theory.is_iso_sheafification_adjunction_counit
- category_theory.sheafification_reflective
- category_theory.grothendieck_topology.subpresheaf.ι.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
- category_theory.limits.pullback.diagonal.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
- Mon_.quiver.hom.hom.category_theory.is_iso
- category_theory.center.is_iso_of_f_is_iso
- simplicial_object.splitting.map_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
- algebraic_topology.dold_kan.Γ₂N₂.nat_trans.category_theory.is_iso
- algebraic_topology.dold_kan.Γ₂N₁.nat_trans.category_theory.is_iso
- algebraic_geometry.PresheafedSpace.base_is_iso_of_iso
- algebraic_geometry.PresheafedSpace.c_is_iso_of_iso
- algebraic_geometry.PresheafedSpace.of_restrict_stalk_map_is_iso
- algebraic_geometry.PresheafedSpace.stalk_map.is_iso
- algebraic_geometry.SheafedSpace.is_PresheafedSpace_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.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.PresheafedSpace.glue_data.componentwise_diagram_π_is_iso
- algebraic_geometry.Scheme.val_base_is_iso
- algebraic_geometry.morphism_restrict.category_theory.is_iso
- algebraic_geometry.Scheme.open_cover.from_glued_stalk_iso
- algebraic_geometry.Scheme.open_cover.from_glued.category_theory.is_iso
- algebraic_geometry.Γ_Spec.is_iso_LocallyRingedSpace_adjunction_counit
- algebraic_geometry.Γ_Spec.is_iso_adjunction_counit
- algebraic_geometry.is_affine.affine
- algebraic_geometry.basic_open_sections_to_affine.category_theory.is_iso
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