Theorem: CategoryTheory.Functor.mapMatId_inv_app
File: Mathlib/CategoryTheory/Preadditive/Mat.lean

Proof steps:
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
M : Mat_ C
⊢ (𝟭 C).mapMat_.obj M = (𝟭 (Mat_ C)).obj M
state_after: case mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
⊢ (𝟭 C).mapMat_.obj (Mat_.mk ι✝ X✝) = (𝟭 (Mat_ C)).obj (Mat_.mk ι✝ X✝)
tactic: cases M
state_before: case mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
⊢ (𝟭 C).mapMat_.obj (Mat_.mk ι✝ X✝) = (𝟭 (Mat_ C)).obj (Mat_.mk ι✝ X✝)
state_after: no goals
tactic: rfl
state_before: C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
M N : Mat_ C
f : M ⟶ N
⊢ (𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom = ((fun M => eqToIso ⋯) M).hom ≫ (𝟭 (Mat_ C)).map f
state_after: case H
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
M N : Mat_ C
f : M ⟶ N
i✝ : ((𝟭 C).mapMat_.obj M).ι
j✝ : ((𝟭 (Mat_ C)).obj N).ι
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ = (((fun M => eqToIso ⋯) M).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
tactic: ext
state_before: case H
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
M N : Mat_ C
f : M ⟶ N
i✝ : ((𝟭 C).mapMat_.obj M).ι
j✝ : ((𝟭 (Mat_ C)).obj N).ι
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ = (((fun M => eqToIso ⋯) M).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
state_after: case H.mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
N : Mat_ C
j✝ : ((𝟭 (Mat_ C)).obj N).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
f : Mat_.mk ι✝ X✝ ⟶ N
i✝ : ((𝟭 C).mapMat_.obj (Mat_.mk ι✝ X✝)).ι
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
tactic: cases M
state_before: case H.mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
N : Mat_ C
j✝ : ((𝟭 (Mat_ C)).obj N).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
f : Mat_.mk ι✝ X✝ ⟶ N
i✝ : ((𝟭 C).mapMat_.obj (Mat_.mk ι✝ X✝)).ι
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
state_after: case H.mk.mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
ι✝¹ : Type
fintype✝¹ : Fintype ι✝¹
X✝¹ : ι✝¹ → C
i✝ : ((𝟭 C).mapMat_.obj (Mat_.mk ι✝¹ X✝¹)).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
j✝ : ((𝟭 (Mat_ C)).obj (Mat_.mk ι✝ X✝)).ι
f : Mat_.mk ι✝¹ X✝¹ ⟶ Mat_.mk ι✝ X✝
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝¹ X✝¹)).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
tactic: cases N
state_before: case H.mk.mk
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : Preadditive C
D : Type u_1
inst✝¹ : Category.{v₁, u_1} D
inst✝ : Preadditive D
ι✝¹ : Type
fintype✝¹ : Fintype ι✝¹
X✝¹ : ι✝¹ → C
i✝ : ((𝟭 C).mapMat_.obj (Mat_.mk ι✝¹ X✝¹)).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
j✝ : ((𝟭 (Mat_ C)).obj (Mat_.mk ι✝ X✝)).ι
f : Mat_.mk ι✝¹ X✝¹ ⟶ Mat_.mk ι✝ X✝
⊢ ((𝟭 C).mapMat_.map f ≫ ((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝¹ X✝¹)).hom ≫ (𝟭 (Mat_ C)).map f) i✝ j✝
state_after: no goals
tactic: simp [comp_dite, dite_comp]