category_theory.endomorphismMathlib.CategoryTheory.Endomorphism

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
 -/
-import Algebra.Hom.Equiv.Basic
+import Algebra.Group.Equiv.Basic
 import CategoryTheory.Groupoid
 import CategoryTheory.Opposites
 import GroupTheory.GroupAction.Defs
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
 -/
-import Mathbin.Algebra.Hom.Equiv.Basic
-import Mathbin.CategoryTheory.Groupoid
-import Mathbin.CategoryTheory.Opposites
-import Mathbin.GroupTheory.GroupAction.Defs
+import Algebra.Hom.Equiv.Basic
+import CategoryTheory.Groupoid
+import CategoryTheory.Opposites
+import GroupTheory.GroupAction.Defs
 
 #align_import category_theory.endomorphism from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
 
Diff
@@ -113,7 +113,7 @@ instance mulActionRight {X Y : C} : MulAction (End Y) (X ⟶ Y)
     where
   smul r f := f ≫ r
   one_smul := Category.comp_id
-  mul_smul r s f := Eq.symm <| Category.assoc _ _ _
+  hMul_smul r s f := Eq.symm <| Category.assoc _ _ _
 #align category_theory.End.mul_action_right CategoryTheory.End.mulActionRight
 -/
 
@@ -122,7 +122,7 @@ instance mulActionLeft {X : Cᵒᵖ} {Y : C} : MulAction (End X) (unop X ⟶ Y)
     where
   smul r f := r.unop ≫ f
   one_smul := Category.id_comp
-  mul_smul r s f := Category.assoc _ _ _
+  hMul_smul r s f := Category.assoc _ _ _
 #align category_theory.End.mul_action_left CategoryTheory.End.mulActionLeft
 -/
 
@@ -144,7 +144,7 @@ end MulAction
 /-- In a groupoid, endomorphisms form a group -/
 instance group {C : Type u} [Groupoid.{v} C] (X : C) : Group (End X) :=
   { End.monoid with
-    mul_left_inv := Groupoid.comp_inv
+    hMul_left_inv := Groupoid.comp_inv
     inv := Groupoid.inv }
 #align category_theory.End.group CategoryTheory.End.group
 -/
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
-
-! This file was ported from Lean 3 source module category_theory.endomorphism
-! leanprover-community/mathlib commit e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Algebra.Hom.Equiv.Basic
 import Mathbin.CategoryTheory.Groupoid
 import Mathbin.CategoryTheory.Opposites
 import Mathbin.GroupTheory.GroupAction.Defs
 
+#align_import category_theory.endomorphism from "leanprover-community/mathlib"@"e97cf15cd1aec9bd5c193b2ffac5a6dc9118912b"
+
 /-!
 # Endomorphisms
 
Diff
@@ -196,14 +196,19 @@ instance : Group (Aut X) := by
       ext <;>
     simp [flip, (· * ·), Monoid.mul, MulOneClass.mul, MulOneClass.one, One.one, Monoid.one, Inv.inv]
 
+#print CategoryTheory.Aut.Aut_mul_def /-
 theorem Aut_mul_def (f g : Aut X) : f * g = g.trans f :=
   rfl
 #align category_theory.Aut.Aut_mul_def CategoryTheory.Aut.Aut_mul_def
+-/
 
+#print CategoryTheory.Aut.Aut_inv_def /-
 theorem Aut_inv_def (f : Aut X) : f⁻¹ = f.symm :=
   rfl
 #align category_theory.Aut.Aut_inv_def CategoryTheory.Aut.Aut_inv_def
+-/
 
+#print CategoryTheory.Aut.unitsEndEquivAut /-
 /-- Units in the monoid of endomorphisms of an object
 are (multiplicatively) equivalent to automorphisms of that object.
 -/
@@ -215,7 +220,9 @@ def unitsEndEquivAut : (End X)ˣ ≃* Aut X
   right_inv := fun ⟨f₁, f₂, f₃, f₄⟩ => rfl
   map_mul' f g := by rcases f with ⟨⟩ <;> rcases g with ⟨⟩ <;> rfl
 #align category_theory.Aut.units_End_equiv_Aut CategoryTheory.Aut.unitsEndEquivAut
+-/
 
+#print CategoryTheory.Aut.autMulEquivOfIso /-
 /-- Isomorphisms induce isomorphisms of the automorphism group -/
 def autMulEquivOfIso {X Y : C} (h : X ≅ Y) : Aut X ≃* Aut Y
     where
@@ -225,6 +232,7 @@ def autMulEquivOfIso {X Y : C} (h : X ≅ Y) : Aut X ≃* Aut Y
   right_inv := by tidy
   map_mul' := by simp [Aut_mul_def]
 #align category_theory.Aut.Aut_mul_equiv_of_iso CategoryTheory.Aut.autMulEquivOfIso
+-/
 
 end Aut
 
@@ -232,6 +240,7 @@ namespace Functor
 
 variable {D : Type u'} [Category.{v'} D] (f : C ⥤ D) (X)
 
+#print CategoryTheory.Functor.mapEnd /-
 /-- `f.map` as a monoid hom between endomorphism monoids. -/
 @[simps]
 def mapEnd : End X →* End (f.obj X)
@@ -240,13 +249,16 @@ def mapEnd : End X →* End (f.obj X)
   map_mul' x y := f.map_comp y x
   map_one' := f.map_id X
 #align category_theory.functor.map_End CategoryTheory.Functor.mapEnd
+-/
 
+#print CategoryTheory.Functor.mapAut /-
 /-- `f.map_iso` as a group hom between automorphism groups. -/
 def mapAut : Aut X →* Aut (f.obj X) where
   toFun := f.mapIso
   map_mul' x y := f.mapIso_trans y x
   map_one' := f.mapIso_refl X
 #align category_theory.functor.map_Aut CategoryTheory.Functor.mapAut
+-/
 
 end Functor
 
Diff
@@ -196,32 +196,14 @@ instance : Group (Aut X) := by
       ext <;>
     simp [flip, (· * ·), Monoid.mul, MulOneClass.mul, MulOneClass.one, One.one, Monoid.one, Inv.inv]
 
-/- warning: category_theory.Aut.Aut_mul_def -> CategoryTheory.Aut.Aut_mul_def is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C) (f : CategoryTheory.Aut.{u1, u2} C _inst_1 X) (g : CategoryTheory.Aut.{u1, u2} C _inst_1 X), Eq.{succ u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (HMul.hMul.{u1, u1, u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (instHMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (MulOneClass.toHasMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.group.{u1, u2} C _inst_1 X)))))) f g) (CategoryTheory.Iso.trans.{u1, u2} C _inst_1 X X X g f)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C) (f : CategoryTheory.Aut.{u1, u2} C _inst_1 X) (g : CategoryTheory.Aut.{u1, u2} C _inst_1 X), Eq.{succ u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (HMul.hMul.{u1, u1, u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (instHMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (MulOneClass.toMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.instGroupAut.{u1, u2} C _inst_1 X)))))) f g) (CategoryTheory.Iso.trans.{u1, u2} C _inst_1 X X X g f)
-Case conversion may be inaccurate. Consider using '#align category_theory.Aut.Aut_mul_def CategoryTheory.Aut.Aut_mul_defₓ'. -/
 theorem Aut_mul_def (f g : Aut X) : f * g = g.trans f :=
   rfl
 #align category_theory.Aut.Aut_mul_def CategoryTheory.Aut.Aut_mul_def
 
-/- warning: category_theory.Aut.Aut_inv_def -> CategoryTheory.Aut.Aut_inv_def is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C) (f : CategoryTheory.Aut.{u1, u2} C _inst_1 X), Eq.{succ u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Inv.inv.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toHasInv.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.group.{u1, u2} C _inst_1 X))) f) (CategoryTheory.Iso.symm.{u1, u2} C _inst_1 X X f)
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C) (f : CategoryTheory.Aut.{u1, u2} C _inst_1 X), Eq.{succ u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Inv.inv.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (InvOneClass.toInv.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvOneMonoid.toInvOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivisionMonoid.toDivInvOneMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivisionMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.instGroupAut.{u1, u2} C _inst_1 X))))) f) (CategoryTheory.Iso.symm.{u1, u2} C _inst_1 X X f)
-Case conversion may be inaccurate. Consider using '#align category_theory.Aut.Aut_inv_def CategoryTheory.Aut.Aut_inv_defₓ'. -/
 theorem Aut_inv_def (f : Aut X) : f⁻¹ = f.symm :=
   rfl
 #align category_theory.Aut.Aut_inv_def CategoryTheory.Aut.Aut_inv_def
 
-/- warning: category_theory.Aut.units_End_equiv_Aut -> CategoryTheory.Aut.unitsEndEquivAut is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), MulEquiv.{u1, u1} (Units.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X)) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (MulOneClass.toHasMul.{u1} (Units.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X)) (Units.mulOneClass.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X))) (MulOneClass.toHasMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.group.{u1, u2} C _inst_1 X)))))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] (X : C), MulEquiv.{u1, u1} (Units.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X)) (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (MulOneClass.toMul.{u1} (Units.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X)) (Units.instMulOneClassUnits.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u2} C _inst_1 X))) (MulOneClass.toMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.instGroupAut.{u1, u2} C _inst_1 X)))))
-Case conversion may be inaccurate. Consider using '#align category_theory.Aut.units_End_equiv_Aut CategoryTheory.Aut.unitsEndEquivAutₓ'. -/
 /-- Units in the monoid of endomorphisms of an object
 are (multiplicatively) equivalent to automorphisms of that object.
 -/
@@ -234,12 +216,6 @@ def unitsEndEquivAut : (End X)ˣ ≃* Aut X
   map_mul' f g := by rcases f with ⟨⟩ <;> rcases g with ⟨⟩ <;> rfl
 #align category_theory.Aut.units_End_equiv_Aut CategoryTheory.Aut.unitsEndEquivAut
 
-/- warning: category_theory.Aut.Aut_mul_equiv_of_iso -> CategoryTheory.Aut.autMulEquivOfIso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {X : C} {Y : C}, (CategoryTheory.Iso.{u1, u2} C _inst_1 X Y) -> (MulEquiv.{u1, u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (MulOneClass.toHasMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.group.{u1, u2} C _inst_1 X))))) (MulOneClass.toHasMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (CategoryTheory.Aut.group.{u1, u2} C _inst_1 Y))))))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {X : C} {Y : C}, (CategoryTheory.Iso.{u1, u2} C _inst_1 X Y) -> (MulEquiv.{u1, u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (MulOneClass.toMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 X) (CategoryTheory.Aut.instGroupAut.{u1, u2} C _inst_1 X))))) (MulOneClass.toMul.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u2} C _inst_1 Y) (CategoryTheory.Aut.instGroupAut.{u1, u2} C _inst_1 Y))))))
-Case conversion may be inaccurate. Consider using '#align category_theory.Aut.Aut_mul_equiv_of_iso CategoryTheory.Aut.autMulEquivOfIsoₓ'. -/
 /-- Isomorphisms induce isomorphisms of the automorphism group -/
 def autMulEquivOfIso {X Y : C} (h : X ≅ Y) : Aut X ≃* Aut Y
     where
@@ -256,12 +232,6 @@ namespace Functor
 
 variable {D : Type u'} [Category.{v'} D] (f : C ⥤ D) (X)
 
-/- warning: category_theory.functor.map_End -> CategoryTheory.Functor.mapEnd is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (X : C) {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (f : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), MonoidHom.{u1, u2} (CategoryTheory.End.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) (CategoryTheory.End.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (Monoid.toMulOneClass.{u1} (CategoryTheory.End.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u3} C _inst_1 X)) (Monoid.toMulOneClass.{u2} (CategoryTheory.End.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (CategoryTheory.End.monoid.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (X : C) {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (f : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), MonoidHom.{u1, u2} (CategoryTheory.End.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) (CategoryTheory.End.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (Monoid.toMulOneClass.{u1} (CategoryTheory.End.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1) X) (CategoryTheory.End.monoid.{u1, u3} C _inst_1 X)) (Monoid.toMulOneClass.{u2} (CategoryTheory.End.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2) (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (CategoryTheory.End.monoid.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_End CategoryTheory.Functor.mapEndₓ'. -/
 /-- `f.map` as a monoid hom between endomorphism monoids. -/
 @[simps]
 def mapEnd : End X →* End (f.obj X)
@@ -271,12 +241,6 @@ def mapEnd : End X →* End (f.obj X)
   map_one' := f.map_id X
 #align category_theory.functor.map_End CategoryTheory.Functor.mapEnd
 
-/- warning: category_theory.functor.map_Aut -> CategoryTheory.Functor.mapAut is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (X : C) {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (f : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), MonoidHom.{u1, u2} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (CategoryTheory.Aut.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (CategoryTheory.Aut.group.{u1, u3} C _inst_1 X)))) (Monoid.toMulOneClass.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (DivInvMonoid.toMonoid.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (Group.toDivInvMonoid.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)) (CategoryTheory.Aut.group.{u2, u4} D _inst_2 (CategoryTheory.Functor.obj.{u1, u2, u3, u4} C _inst_1 D _inst_2 f X)))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u1, u3} C] (X : C) {D : Type.{u4}} [_inst_2 : CategoryTheory.Category.{u2, u4} D] (f : CategoryTheory.Functor.{u1, u2, u3, u4} C _inst_1 D _inst_2), MonoidHom.{u1, u2} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (CategoryTheory.Aut.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (Monoid.toMulOneClass.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (DivInvMonoid.toMonoid.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (Group.toDivInvMonoid.{u1} (CategoryTheory.Aut.{u1, u3} C _inst_1 X) (CategoryTheory.Aut.instGroupAut.{u1, u3} C _inst_1 X)))) (Monoid.toMulOneClass.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (DivInvMonoid.toMonoid.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (Group.toDivInvMonoid.{u2} (CategoryTheory.Aut.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)) (CategoryTheory.Aut.instGroupAut.{u2, u4} D _inst_2 (Prefunctor.obj.{succ u1, succ u2, u3, u4} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u3} C (CategoryTheory.Category.toCategoryStruct.{u1, u3} C _inst_1)) D (CategoryTheory.CategoryStruct.toQuiver.{u2, u4} D (CategoryTheory.Category.toCategoryStruct.{u2, u4} D _inst_2)) (CategoryTheory.Functor.toPrefunctor.{u1, u2, u3, u4} C _inst_1 D _inst_2 f) X)))))
-Case conversion may be inaccurate. Consider using '#align category_theory.functor.map_Aut CategoryTheory.Functor.mapAutₓ'. -/
 /-- `f.map_iso` as a group hom between automorphism groups. -/
 def mapAut : Aut X →* Aut (f.obj X) where
   toFun := f.mapIso

Changes in mathlib4

mathlib3
mathlib4
chore(CategoryTheory): make Functor.Full a Prop (#12449)

Before this PR, Functor.Full contained the data of the preimage of maps by a full functor F. This PR makes Functor.Full a proposition. This is to prevent any diamond to appear.

The lemma Functor.image_preimage is also renamed Functor.map_preimage.

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com>

Diff
@@ -207,14 +207,14 @@ set_option linter.uppercaseLean3 false in
 
 /-- `equivOfFullyFaithful f` as an isomorphism between endomorphism monoids. -/
 @[simps!]
-def mulEquivOfFullyFaithful [Full f] [Faithful f] :
+noncomputable def mulEquivOfFullyFaithful [Full f] [Faithful f] :
     End X ≃* End (f.obj X) where
   toEquiv := equivOfFullyFaithful f
   __ := mapEnd X f
 
 /-- `isoEquivOfFullyFaithful f` as an isomorphism between automorphism groups. -/
 @[simps!]
-def autMulEquivOfFullyFaithful [Full f] [Faithful f] :
+noncomputable def autMulEquivOfFullyFaithful [Full f] [Faithful f] :
     Aut X ≃* Aut (f.obj X) where
   toEquiv := isoEquivOfFullyFaithful f
   __ := mapAut X f
chore: classify todo porting notes (#11216)

Classifies by adding issue number #11215 to porting notes claiming "TODO".

Diff
@@ -59,11 +59,11 @@ def of (f : X ⟶ X) : End X := f
 def asHom (f : End X) : X ⟶ X := f
 #align category_theory.End.as_hom CategoryTheory.End.asHom
 
-@[simp] -- Porting note: todo: use `of`/`asHom`?
+@[simp] -- Porting note (#11215): TODO: use `of`/`asHom`?
 theorem one_def : (1 : End X) = 𝟙 X := rfl
 #align category_theory.End.one_def CategoryTheory.End.one_def
 
-@[simp] -- Porting note: todo: use `of`/`asHom`?
+@[simp] -- Porting note (#11215): TODO: use `of`/`asHom`?
 theorem mul_def (xs ys : End X) : xs * ys = ys ≫ xs := rfl
 #align category_theory.End.mul_def CategoryTheory.End.mul_def
 
style: homogenise porting notes (#11145)

Homogenises porting notes via capitalisation and addition of whitespace.

It makes the following changes:

  • converts "--porting note" into "-- Porting note";
  • converts "porting note" into "Porting note".
Diff
@@ -59,11 +59,11 @@ def of (f : X ⟶ X) : End X := f
 def asHom (f : End X) : X ⟶ X := f
 #align category_theory.End.as_hom CategoryTheory.End.asHom
 
-@[simp] -- porting note: todo: use `of`/`asHom`?
+@[simp] -- Porting note: todo: use `of`/`asHom`?
 theorem one_def : (1 : End X) = 𝟙 X := rfl
 #align category_theory.End.one_def CategoryTheory.End.one_def
 
-@[simp] -- porting note: todo: use `of`/`asHom`?
+@[simp] -- Porting note: todo: use `of`/`asHom`?
 theorem mul_def (xs ys : End X) : xs * ys = ys ≫ xs := rfl
 #align category_theory.End.mul_def CategoryTheory.End.mul_def
 
@@ -131,7 +131,7 @@ set_option linter.uppercaseLean3 false in
 
 namespace Aut
 
--- porting note: added because `Iso.ext` is not triggered automatically
+-- Porting note: added because `Iso.ext` is not triggered automatically
 @[ext]
 lemma ext {X : C} {φ₁ φ₂ : Aut X} (h : φ₁.hom = φ₂.hom) : φ₁ = φ₂ :=
   Iso.ext h
feat(CategoryTheory/Galois): definition and characterisation of Galois objects (#10215)

Defines Galois objects in a Galois category in a fibre functor independent way, also gives an equivalent characterisation in terms of a fibre functor.

To allow for a definition that only depends on C, contrary to what was said earlier, we introduce a GaloisCategory typeclass extending PreGaloisCategory that additionally asserts the existence of a fibre functor.

Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr>

Diff
@@ -5,6 +5,7 @@ Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
 -/
 import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.Units
+import Mathlib.Algebra.Group.Units.Hom
 import Mathlib.CategoryTheory.Groupoid
 import Mathlib.CategoryTheory.Opposites
 import Mathlib.GroupTheory.GroupAction.Defs
@@ -168,6 +169,10 @@ def unitsEndEquivAut : (End X)ˣ ≃* Aut X where
 set_option linter.uppercaseLean3 false in
 #align category_theory.Aut.units_End_equiv_Aut CategoryTheory.Aut.unitsEndEquivAut
 
+/-- The inclusion of `Aut X` to `End X` as a monoid homomorphism. -/
+@[simps!]
+def toEnd (X : C) : Aut X →* End X := (Units.coeHom (End X)).comp (Aut.unitsEndEquivAut X).symm
+
 /-- Isomorphisms induce isomorphisms of the automorphism group -/
 def autMulEquivOfIso {X Y : C} (h : X ≅ Y) : Aut X ≃* Aut Y where
   toFun x := ⟨h.inv ≫ x.hom ≫ h.hom, h.inv ≫ x.inv ≫ h.hom, _, _⟩
feat: add multiplicative versions of equivOfFullyFaithful and isoEquivOfFullyFaithful (#9566)

Adds multiplicative versions of equivOfFullyFaithful and isoEquivOfFullyFaithful.

Co-authored-by: Yury G. Kudryashov <urkud@urkud.name>

Diff
@@ -200,6 +200,20 @@ def mapAut : Aut X →* Aut (f.obj X) where
 set_option linter.uppercaseLean3 false in
 #align category_theory.functor.map_Aut CategoryTheory.Functor.mapAut
 
+/-- `equivOfFullyFaithful f` as an isomorphism between endomorphism monoids. -/
+@[simps!]
+def mulEquivOfFullyFaithful [Full f] [Faithful f] :
+    End X ≃* End (f.obj X) where
+  toEquiv := equivOfFullyFaithful f
+  __ := mapEnd X f
+
+/-- `isoEquivOfFullyFaithful f` as an isomorphism between automorphism groups. -/
+@[simps!]
+def autMulEquivOfFullyFaithful [Full f] [Faithful f] :
+    Aut X ≃* Aut (f.obj X) where
+  toEquiv := isoEquivOfFullyFaithful f
+  __ := mapAut X f
+
 end Functor
 
 end CategoryTheory
refactor(Algebra/Hom): transpose Hom and file name (#8095)

I believe the file defining a type of morphisms belongs alongside the file defining the structure this morphism works on. So I would like to reorganize the files in the Mathlib.Algebra.Hom folder so that e.g. Mathlib.Algebra.Hom.Ring becomes Mathlib.Algebra.Ring.Hom and Mathlib.Algebra.Hom.NonUnitalAlg becomes Mathlib.Algebra.Algebra.NonUnitalHom.

While fixing the imports I went ahead and sorted them for good luck.

The full list of changes is: renamed: Mathlib/Algebra/Hom/NonUnitalAlg.lean -> Mathlib/Algebra/Algebra/NonUnitalHom.lean renamed: Mathlib/Algebra/Hom/Aut.lean -> Mathlib/Algebra/Group/Aut.lean renamed: Mathlib/Algebra/Hom/Commute.lean -> Mathlib/Algebra/Group/Commute/Hom.lean renamed: Mathlib/Algebra/Hom/Embedding.lean -> Mathlib/Algebra/Group/Embedding.lean renamed: Mathlib/Algebra/Hom/Equiv/Basic.lean -> Mathlib/Algebra/Group/Equiv/Basic.lean renamed: Mathlib/Algebra/Hom/Equiv/TypeTags.lean -> Mathlib/Algebra/Group/Equiv/TypeTags.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/Basic.lean -> Mathlib/Algebra/Group/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Equiv/Units/GroupWithZero.lean -> Mathlib/Algebra/GroupWithZero/Units/Equiv.lean renamed: Mathlib/Algebra/Hom/Freiman.lean -> Mathlib/Algebra/Group/Freiman.lean renamed: Mathlib/Algebra/Hom/Group/Basic.lean -> Mathlib/Algebra/Group/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Group/Defs.lean -> Mathlib/Algebra/Group/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/GroupAction.lean -> Mathlib/GroupTheory/GroupAction/Hom.lean renamed: Mathlib/Algebra/Hom/GroupInstances.lean -> Mathlib/Algebra/Group/Hom/Instances.lean renamed: Mathlib/Algebra/Hom/Iterate.lean -> Mathlib/Algebra/GroupPower/IterateHom.lean renamed: Mathlib/Algebra/Hom/Centroid.lean -> Mathlib/Algebra/Ring/CentroidHom.lean renamed: Mathlib/Algebra/Hom/Ring/Basic.lean -> Mathlib/Algebra/Ring/Hom/Basic.lean renamed: Mathlib/Algebra/Hom/Ring/Defs.lean -> Mathlib/Algebra/Ring/Hom/Defs.lean renamed: Mathlib/Algebra/Hom/Units.lean -> Mathlib/Algebra/Group/Units/Hom.lean

Zulip thread: https://leanprover.zulipchat.com/#narrow/stream/287929-mathlib4/topic/Reorganizing.20.60Mathlib.2EAlgebra.2EHom.60

Diff
@@ -3,7 +3,7 @@ Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
 -/
-import Mathlib.Algebra.Hom.Equiv.Basic
+import Mathlib.Algebra.Group.Equiv.Basic
 import Mathlib.Algebra.Group.Units
 import Mathlib.CategoryTheory.Groupoid
 import Mathlib.CategoryTheory.Opposites
chore: remove trailing space in backticks (#7617)

This will improve spaces in the mathlib4 docs.

Diff
@@ -17,7 +17,7 @@ import Mathlib.GroupTheory.GroupAction.Defs
 Definition and basic properties of endomorphisms and automorphisms of an object in a category.
 
 For each `X : C`, we provide `CategoryTheory.End X := X ⟶ X` with a monoid structure,
-and `CategoryTheory.Aut X := X ≅ X ` with a group structure.
+and `CategoryTheory.Aut X := X ≅ X` with a group structure.
 -/
 
 
chore: split Algebra.Semiconj and Algebra.Commute (#7098)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -4,6 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
 -/
 import Mathlib.Algebra.Hom.Equiv.Basic
+import Mathlib.Algebra.Group.Units
 import Mathlib.CategoryTheory.Groupoid
 import Mathlib.CategoryTheory.Opposites
 import Mathlib.GroupTheory.GroupAction.Defs
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2019 Yury Kudryashov. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Yury Kudryashov, Scott Morrison, Simon Hudon
-
-! This file was ported from Lean 3 source module category_theory.endomorphism
-! leanprover-community/mathlib commit 32253a1a1071173b33dc7d6a218cf722c6feb514
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Algebra.Hom.Equiv.Basic
 import Mathlib.CategoryTheory.Groupoid
 import Mathlib.CategoryTheory.Opposites
 import Mathlib.GroupTheory.GroupAction.Defs
 
+#align_import category_theory.endomorphism from "leanprover-community/mathlib"@"32253a1a1071173b33dc7d6a218cf722c6feb514"
+
 /-!
 # Endomorphisms
 
feat: port RepresentationTheory.Action (#4700)

Co-authored-by: Joël Riou <37772949+joelriou@users.noreply.github.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Parcly Taxel <reddeloostw@gmail.com>

Diff
@@ -132,6 +132,11 @@ set_option linter.uppercaseLean3 false in
 
 namespace Aut
 
+-- porting note: added because `Iso.ext` is not triggered automatically
+@[ext]
+lemma ext {X : C} {φ₁ φ₂ : Aut X} (h : φ₁.hom = φ₂.hom) : φ₁ = φ₂ :=
+  Iso.ext h
+
 protected instance inhabited : Inhabited (Aut X) := ⟨Iso.refl X⟩
 set_option linter.uppercaseLean3 false in
 #align category_theory.Aut.inhabited CategoryTheory.Aut.inhabited
feat: port CategoryTheory.Endomorphism (#2310)

Co-authored-by: Johan Commelin <johan@commelin.net>

Dependencies 67

68 files ported (100.0%)
25883 lines ported (100.0%)

All dependencies are ported!