Documentation

Mathlib.CategoryTheory.Iso

Isomorphisms #

This file defines isomorphisms between objects of a category.

Main definitions #

Notation #

Tags #

category, category theory, isomorphism

structure CategoryTheory.Iso {C : Type u} [Category.{v, u} C] (X Y : C) :

An isomorphism (a.k.a. an invertible morphism) between two objects of a category. The inverse morphism is bundled.

See also CategoryTheory.Core for the category with the same objects and isomorphisms playing the role of morphisms.

Instances For
    @[simp]
    theorem CategoryTheory.Iso.hom_inv_id_assoc {C : Type u} [Category.{v, u} C] {X Y : C} (self : X Y) {Z : C} (h : X Z) :

    Composition of the two directions of an isomorphism is the identity on the source.

    @[simp]
    theorem CategoryTheory.Iso.inv_hom_id_assoc {C : Type u} [Category.{v, u} C] {X Y : C} (self : X Y) {Z : C} (h : Y Z) :

    Composition of the two directions of an isomorphism in reverse order is the identity on the target.

    def CategoryTheory.«term_≅_» :
    Lean.TrailingParserDescr

    Notation for an isomorphism in a category.

    Instances For
      theorem CategoryTheory.Iso.ext {C : Type u} [Category.{v, u} C] {X Y : C} α β : X Y (w : α.hom = β.hom) :
      α = β
      theorem CategoryTheory.Iso.ext_iff {C : Type u} [Category.{v, u} C] {X Y : C} {α β : X Y} :
      α = β α.hom = β.hom
      theorem CategoryTheory.Iso.ext_inv {C : Type u} [Category.{v, u} C] {X Y : C} α β : X Y (w : α.inv = β.inv) :
      α = β
      def CategoryTheory.Iso.symm {C : Type u} [Category.{v, u} C] {X Y : C} (I : X Y) :
      Y X

      Inverse isomorphism.

      Instances For
        @[simp]
        theorem CategoryTheory.Iso.symm_hom {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
        α.symm.hom = α.inv
        @[simp]
        theorem CategoryTheory.Iso.symm_inv {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
        α.symm.inv = α.hom
        @[simp]
        theorem CategoryTheory.Iso.symm_mk {C : Type u} [Category.{v, u} C] {X Y : C} (hom : X Y) (inv : Y X) (hom_inv_id : CategoryStruct.comp hom inv = CategoryStruct.id X) (inv_hom_id : CategoryStruct.comp inv hom = CategoryStruct.id Y) :
        { hom := hom, inv := inv, hom_inv_id := hom_inv_id, inv_hom_id := inv_hom_id }.symm = { hom := inv, inv := hom, hom_inv_id := inv_hom_id, inv_hom_id := hom_inv_id }
        @[simp]
        theorem CategoryTheory.Iso.symm_symm_eq {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
        α.symm.symm = α
        @[simp]
        theorem CategoryTheory.Iso.symm_eq_iff {C : Type u} [Category.{v, u} C] {X Y : C} {α β : X Y} :
        α.symm = β.symm α = β
        theorem CategoryTheory.Iso.nonempty_iso_symm {C : Type u} [Category.{v, u} C] (X Y : C) :
        Nonempty (X Y) Nonempty (Y X)
        def CategoryTheory.Iso.refl {C : Type u} [Category.{v, u} C] (X : C) :
        X X

        Identity isomorphism.

        Instances For
          @[implicit_reducible]
          instance CategoryTheory.Iso.instInhabited {C : Type u} [Category.{v, u} C] {X : C} :
          Inhabited (X X)
          @[simp]
          theorem CategoryTheory.Iso.refl_symm {C : Type u} [Category.{v, u} C] (X : C) :
          (refl X).symm = refl X
          def CategoryTheory.Iso.trans {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : Y Z) :
          X Z

          Composition of two isomorphisms

          Instances For
            @[simp]
            theorem CategoryTheory.Iso.trans_inv {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : Y Z) :
            @[simp]
            theorem CategoryTheory.Iso.trans_hom {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : Y Z) :
            @[implicit_reducible]
            instance CategoryTheory.Iso.instTransIso {C : Type u} [Category.{v, u} C] :
            Trans (fun (x1 x2 : C) => x1 x2) (fun (x1 x2 : C) => x1 x2) fun (x1 x2 : C) => x1 x2
            @[simp]
            theorem CategoryTheory.Iso.trans_def {C : Type u} [Category.{v, u} C] {a✝ b✝ c✝ : C} (α : a✝ b✝) (β : b✝ c✝) :
            Trans.trans α β = α ≪≫ β
            def CategoryTheory.Iso.«term_≪≫_» :
            Lean.TrailingParserDescr

            Notation for composition of isomorphisms.

            Instances For
              @[simp]
              theorem CategoryTheory.Iso.trans_mk {C : Type u} [Category.{v, u} C] {X Y Z : C} (hom : X Y) (inv : Y X) (hom_inv_id : CategoryStruct.comp hom inv = CategoryStruct.id X) (inv_hom_id : CategoryStruct.comp inv hom = CategoryStruct.id Y) (hom' : Y Z) (inv' : Z Y) (hom_inv_id' : CategoryStruct.comp hom' inv' = CategoryStruct.id Y) (inv_hom_id' : CategoryStruct.comp inv' hom' = CategoryStruct.id Z) (hom_inv_id'' : CategoryStruct.comp (CategoryStruct.comp hom hom') (CategoryStruct.comp inv' inv) = CategoryStruct.id X) (inv_hom_id'' : CategoryStruct.comp (CategoryStruct.comp inv' inv) (CategoryStruct.comp hom hom') = CategoryStruct.id Z) :
              { hom := hom, inv := inv, hom_inv_id := hom_inv_id, inv_hom_id := inv_hom_id } ≪≫ { hom := hom', inv := inv', hom_inv_id := hom_inv_id', inv_hom_id := inv_hom_id' } = { hom := CategoryStruct.comp hom hom', inv := CategoryStruct.comp inv' inv, hom_inv_id := hom_inv_id'', inv_hom_id := inv_hom_id'' }
              @[simp]
              theorem CategoryTheory.Iso.trans_symm {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : Y Z) :
              (α ≪≫ β).symm = β.symm ≪≫ α.symm
              @[simp]
              theorem CategoryTheory.Iso.trans_assoc {C : Type u} [Category.{v, u} C] {X Y Z Z' : C} (α : X Y) (β : Y Z) (γ : Z Z') :
              (α ≪≫ β) ≪≫ γ = α ≪≫ β ≪≫ γ
              @[simp]
              theorem CategoryTheory.Iso.refl_trans {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
              refl X ≪≫ α = α
              @[simp]
              theorem CategoryTheory.Iso.trans_refl {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
              α ≪≫ refl Y = α
              @[simp]
              theorem CategoryTheory.Iso.symm_self_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
              α.symm ≪≫ α = refl Y
              @[simp]
              theorem CategoryTheory.Iso.self_symm_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) :
              α ≪≫ α.symm = refl X
              @[simp]
              theorem CategoryTheory.Iso.symm_self_id_assoc {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : Y Z) :
              α.symm ≪≫ α ≪≫ β = β
              @[simp]
              theorem CategoryTheory.Iso.self_symm_id_assoc {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) (β : X Z) :
              α ≪≫ α.symm ≪≫ β = β
              theorem CategoryTheory.Iso.inv_comp_eq {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) {f : X Z} {g : Y Z} :
              theorem CategoryTheory.Iso.eq_inv_comp {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) {f : X Z} {g : Y Z} :
              theorem CategoryTheory.Iso.comp_inv_eq {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) {f : Z Y} {g : Z X} :
              theorem CategoryTheory.Iso.eq_comp_inv {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) {f : Z Y} {g : Z X} :
              theorem CategoryTheory.Iso.inv_eq_inv {C : Type u} [Category.{v, u} C] {X Y : C} (f g : X Y) :
              f.inv = g.inv f.hom = g.hom
              theorem CategoryTheory.Iso.hom_comp_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {f : Y X} :
              theorem CategoryTheory.Iso.comp_inv_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {f : X Y} :
              theorem CategoryTheory.Iso.comp_hom_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {f : Y X} :
              theorem CategoryTheory.Iso.inv_comp_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {f : X Y} :
              theorem CategoryTheory.Iso.hom_eq_inv {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) (β : Y X) :
              α.hom = β.inv β.hom = α.inv
              theorem CategoryTheory.Iso.inv_eq_hom {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) (β : Y X) :
              α.inv = β.hom β.inv = α.hom
              def CategoryTheory.Iso.homToEquiv {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} :
              (Z X) (Z Y)

              The bijection (Z ⟶ X) ≃ (Z ⟶ Y) induced by α : X ≅ Y.

              Instances For
                def CategoryTheory.Iso.homFromEquiv {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} :
                (X Z) (Y Z)

                The bijection (X ⟶ Z) ≃ (Y ⟶ Z) induced by α : X ≅ Y.

                Instances For
                  @[simp]
                  theorem CategoryTheory.Iso.homFromEquiv_symm_apply {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} (g : Y Z) :
                  @[simp]
                  theorem CategoryTheory.Iso.homFromEquiv_apply {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} (f : X Z) :
                  @[simp]
                  theorem CategoryTheory.Iso.homToEquiv_apply {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} (f : Z X) :
                  @[simp]
                  theorem CategoryTheory.Iso.homToEquiv_symm_apply {C : Type u} [Category.{v, u} C] {X Y : C} (α : X Y) {Z : C} (g : Z Y) :
                  class CategoryTheory.IsIso {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) :

                  The IsIso typeclass expresses that a morphism is invertible.

                  Given a morphism f with IsIso f, one can view f as an isomorphism via asIso f and get the inverse using inv f.

                  Instances
                    theorem CategoryTheory.IsIso.mk' {C : Type u} [Category.{v, u} C] {X Y : C} {f : Y X} (out : ∃ (inv : X Y), CategoryStruct.comp inv f = CategoryStruct.id X CategoryStruct.comp f inv = CategoryStruct.id Y) :

                    IsIso.mk' is the dual of IsIso.mk, which we need for to_dual. Please avoid using this directly.

                    noncomputable def CategoryTheory.inv {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [I : IsIso f] :
                    Y X

                    The inverse of a morphism f when we have [IsIso f].

                    Instances For
                      @[simp]
                      theorem CategoryTheory.IsIso.hom_inv_id_assoc {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [I : IsIso f] {Z : C} (h : X Z) :
                      @[simp]
                      theorem CategoryTheory.IsIso.inv_hom_id_assoc {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [I : IsIso f] {Z : C} (h : Y Z) :
                      noncomputable def CategoryTheory.asIso {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [IsIso f] :
                      X Y

                      Reinterpret a morphism f : X ⟶ Y with an IsIso f instance as X ≅ Y.

                      Instances For
                        noncomputable def CategoryTheory.asIso' {C : Type u} [Category.{v, u} C] {X Y : C} (f : Y X) [IsIso f] :
                        X Y

                        Reinterpret a morphism f : X ⟶ Y with an IsIso f instance as Y ≅ X.

                        Instances For
                          @[simp]
                          theorem CategoryTheory.asIso_hom {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [IsIso f] :
                          (asIso f).hom = f
                          @[simp]
                          theorem CategoryTheory.asIso'_hom {C : Type u} [Category.{v, u} C] {X Y : C} (f : Y X) [IsIso f] :
                          (asIso' f).inv = f
                          @[simp]
                          theorem CategoryTheory.asIso_inv {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [IsIso f] :
                          (asIso f).inv = inv f
                          @[simp]
                          theorem CategoryTheory.asIso'_inv {C : Type u} [Category.{v, u} C] {X Y : C} (f : Y X) [IsIso f] :
                          (asIso' f).hom = inv f
                          @[instance 100]
                          instance CategoryTheory.IsIso.epi_of_iso {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) [IsIso f] :
                          Epi f
                          @[instance 100]
                          instance CategoryTheory.IsIso.mono_of_iso {C : Type u} [Category.{v, u} C] {X Y : C} (f : Y X) [IsIso f] :
                          theorem CategoryTheory.IsIso.inv_eq_of_hom_inv_id {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} [IsIso f] {g : Y X} (hom_inv_id : CategoryStruct.comp f g = CategoryStruct.id X) :
                          inv f = g
                          theorem CategoryTheory.IsIso.inv_eq_of_inv_hom_id {C : Type u} [Category.{v, u} C] {X Y : C} {f : Y X} [IsIso f] {g : X Y} (hom_inv_id : CategoryStruct.comp g f = CategoryStruct.id X) :
                          inv f = g
                          theorem CategoryTheory.IsIso.eq_inv_of_hom_inv_id {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} [IsIso f] {g : Y X} (hom_inv_id : CategoryStruct.comp f g = CategoryStruct.id X) :
                          g = inv f
                          theorem CategoryTheory.IsIso.eq_inv_of_inv_hom_id {C : Type u} [Category.{v, u} C] {X Y : C} {f : Y X} [IsIso f] {g : X Y} (hom_inv_id : CategoryStruct.comp g f = CategoryStruct.id X) :
                          g = inv f
                          instance CategoryTheory.IsIso.inv_isIso {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} [IsIso f] :
                          @[instance 900]
                          instance CategoryTheory.IsIso.comp_isIso {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : X Y} {h : Y Z} [IsIso f] [IsIso h] :
                          theorem CategoryTheory.IsIso.comp_isIso' {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : X Y} {h : Y Z} :

                          The composition of isomorphisms is an isomorphism. Here the arguments of type IsIso are explicit, to make this easier to use with the refine tactic, for instance.

                          @[simp]
                          theorem CategoryTheory.IsIso.inv_comp {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : X Y} {h : Y Z} [IsIso f] [IsIso h] :
                          theorem CategoryTheory.IsIso.inv_comp_assoc {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : X Y} {h : Y Z} [IsIso f] [IsIso h] {Z✝ : C} (h✝ : X Z✝) :
                          @[simp]
                          theorem CategoryTheory.IsIso.inv_inv {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} [IsIso f] :
                          inv (inv f) = f
                          @[simp]
                          theorem CategoryTheory.IsIso.Iso.inv_inv {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) :
                          inv f.inv = f.hom
                          @[simp]
                          theorem CategoryTheory.IsIso.Iso.inv_hom {C : Type u} [Category.{v, u} C] {X Y : C} (f : X Y) :
                          inv f.hom = f.inv
                          @[simp]
                          theorem CategoryTheory.IsIso.inv_comp_eq {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) [IsIso α] {f : X Z} {g : Y Z} :
                          @[simp]
                          theorem CategoryTheory.IsIso.comp_inv_eq {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : Y X) [IsIso α] {f : Z X} {g : Z Y} :
                          @[simp]
                          theorem CategoryTheory.IsIso.eq_inv_comp {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : X Y) [IsIso α] {f : X Z} {g : Y Z} :
                          @[simp]
                          theorem CategoryTheory.IsIso.eq_comp_inv {C : Type u} [Category.{v, u} C] {X Y Z : C} (α : Y X) [IsIso α] {f : Z X} {g : Z Y} :
                          theorem CategoryTheory.IsIso.of_isIso_fac_left {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : X Y} {g : Y Z} {h : X Z} [IsIso f] [hh : IsIso h] (w : CategoryStruct.comp f g = h) :
                          theorem CategoryTheory.IsIso.of_isIso_fac_right {C : Type u} [Category.{v, u} C] {X Y Z : C} {f : Y X} {g : Z Y} {h : Z X} [IsIso f] [hh : IsIso h] (w : CategoryStruct.comp g f = h) :
                          @[simp]
                          theorem CategoryTheory.isIso_comp_left_iff {C : Type u} [Category.{v, u} C] {X Y Z : C} (f : X Y) (g : Y Z) [IsIso f] :
                          @[simp]
                          theorem CategoryTheory.isIso_comp_right_iff {C : Type u} [Category.{v, u} C] {X Y Z : C} (g : Z Y) (f : Y X) [IsIso f] :
                          theorem CategoryTheory.eq_of_inv_eq_inv {C : Type u} [Category.{v, u} C] {X Y : C} {f g : X Y} [IsIso f] [IsIso g] (p : inv f = inv g) :
                          f = g
                          theorem CategoryTheory.IsIso.inv_eq_inv {C : Type u} [Category.{v, u} C] {X Y : C} {f g : X Y} [IsIso f] [IsIso g] :
                          inv f = inv g f = g
                          theorem CategoryTheory.hom_comp_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (g : X Y) [IsIso g] {f : Y X} :
                          theorem CategoryTheory.comp_hom_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (g : Y X) [IsIso g] {f : X Y} :
                          theorem CategoryTheory.inv_comp_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (g : X Y) [IsIso g] {f : X Y} :
                          theorem CategoryTheory.comp_inv_eq_id {C : Type u} [Category.{v, u} C] {X Y : C} (g : Y X) [IsIso g] {f : Y X} :
                          theorem CategoryTheory.Iso.inv_ext {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} {g : Y X} (hom_inv_id : CategoryStruct.comp f.hom g = CategoryStruct.id X) :
                          f.inv = g
                          theorem CategoryTheory.Iso.inv_ext' {C : Type u} [Category.{v, u} C] {X Y : C} {f : X Y} {g : Y X} (hom_inv_id : CategoryStruct.comp f.hom g = CategoryStruct.id X) :
                          g = f.inv

                          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.

                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_hom_left {C : Type u} [Category.{v, u} C] {X Y Z : C} (f : X Y) (g g' : Y Z) :
                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_inv_right {C : Type u} [Category.{v, u} C] {X Y Z : C} (g g' : Z Y) (f : X Y) :
                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_hom_right {C : Type u} [Category.{v, u} C] {X Y Z : C} (f f' : X Y) (g : Y Z) :
                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_inv_left {C : Type u} [Category.{v, u} C] {X Y Z : C} (g : Y Z) (f f' : Y X) :
                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_hom_right_assoc {C : Type u} [Category.{v, u} C] {W X X' Y Z : C} (f : W X) (g : X Y) (f' : W X') (g' : X' Y) (h : Y Z) :
                          @[simp]
                          theorem CategoryTheory.Iso.cancel_iso_inv_right_assoc {C : Type u} [Category.{v, u} C] {W X X' Y Z : C} (f : W X) (g : X Y) (f' : W X') (g' : X' Y) (h : Z Y) :
                          @[simp]
                          theorem CategoryTheory.Iso.map_hom_inv_id {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X Y : C} (e : X Y) (F : Functor C D) :
                          @[simp]
                          theorem CategoryTheory.Iso.map_hom_inv_id_assoc {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X Y : C} (e : X Y) (F : Functor C D) {Z : D} (h : F.obj X Z) :
                          @[simp]
                          theorem CategoryTheory.Iso.map_inv_hom_id {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X Y : C} (e : X Y) (F : Functor C D) :
                          @[simp]
                          theorem CategoryTheory.Iso.map_inv_hom_id_assoc {C : Type u} [Category.{v, u} C] {D : Type u_1} [Category.{v_1, u_1} D] {X Y : C} (e : X Y) (F : Functor C D) {Z : D} (h : F.obj Y Z) :
                          def CategoryTheory.Functor.mapIso {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (i : X Y) :
                          F.obj X F.obj Y

                          A functor F : C ⥤ D sends isomorphisms i : X ≅ Y to isomorphisms F.obj X ≅ F.obj Y

                          Instances For
                            @[simp]
                            theorem CategoryTheory.Functor.mapIso_hom {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (i : X Y) :
                            (F.mapIso i).hom = F.map i.hom
                            @[simp]
                            theorem CategoryTheory.Functor.mapIso_inv {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (i : X Y) :
                            (F.mapIso i).inv = F.map i.inv
                            @[simp]
                            theorem CategoryTheory.Functor.mapIso_symm {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (i : X Y) :
                            F.mapIso i.symm = (F.mapIso i).symm
                            @[simp]
                            theorem CategoryTheory.Functor.mapIso_trans {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y Z : C} (i : X Y) (j : Y Z) :
                            F.mapIso (i ≪≫ j) = F.mapIso i ≪≫ F.mapIso j
                            @[simp]
                            theorem CategoryTheory.Functor.mapIso_refl {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) (X : C) :
                            F.mapIso (Iso.refl X) = Iso.refl (F.obj X)
                            instance CategoryTheory.Functor.map_isIso {C : Type u} [Category.{v, u} C] {X Y : C} {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) (f : X Y) [IsIso f] :
                            IsIso (F.map f)
                            @[simp]
                            theorem CategoryTheory.Functor.map_inv {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (f : X Y) [IsIso f] :
                            theorem CategoryTheory.Functor.map_hom_inv_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (f : X Y) [IsIso f] {Z : D} (h : F.obj X Z) :
                            theorem CategoryTheory.Functor.map_inv_hom_assoc {C : Type u} [Category.{v, u} C] {D : Type u₂} [Category.{v₂, u₂} D] (F : Functor C D) {X Y : C} (f : Y X) [IsIso f] {Z : D} (h : F.obj X Z) :