Theorem: CategoryTheory.Functor.mapMatComp_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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
M : Mat_ C
⊢ (F ⋙ G).mapMat_.obj M = (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
⊢ (F ⋙ G).mapMat_.obj (Mat_.mk ι✝ X✝) = (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
⊢ (F ⋙ G).mapMat_.obj (Mat_.mk ι✝ X✝) = (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
M N : Mat_ C
f : M ⟶ N
⊢ (F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom = ((fun M => eqToIso ⋯) M).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
M N : Mat_ C
f : M ⟶ N
i✝ : ((F ⋙ G).mapMat_.obj M).ι
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj N).ι
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) M).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
M N : Mat_ C
f : M ⟶ N
i✝ : ((F ⋙ G).mapMat_.obj M).ι
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj N).ι
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) M).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
N : Mat_ C
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj N).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
f : Mat_.mk ι✝ X✝ ⟶ N
i✝ : ((F ⋙ G).mapMat_.obj (Mat_.mk ι✝ X✝)).ι
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
N : Mat_ C
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj N).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
f : Mat_.mk ι✝ X✝ ⟶ N
i✝ : ((F ⋙ G).mapMat_.obj (Mat_.mk ι✝ X✝)).ι
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) N).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
ι✝¹ : Type
fintype✝¹ : Fintype ι✝¹
X✝¹ : ι✝¹ → C
i✝ : ((F ⋙ G).mapMat_.obj (Mat_.mk ι✝¹ X✝¹)).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj (Mat_.mk ι✝ X✝)).ι
f : Mat_.mk ι✝¹ X✝¹ ⟶ Mat_.mk ι✝ X✝
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝¹ X✝¹)).hom ≫ (F.mapMat_ ⋙ G.mapMat_).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
E : Type u_2
inst✝³ : Category.{v₁, u_2} E
inst✝² : Preadditive E
F : C ⥤ D
inst✝¹ : F.Additive
G : D ⥤ E
inst✝ : G.Additive
ι✝¹ : Type
fintype✝¹ : Fintype ι✝¹
X✝¹ : ι✝¹ → C
i✝ : ((F ⋙ G).mapMat_.obj (Mat_.mk ι✝¹ X✝¹)).ι
ι✝ : Type
fintype✝ : Fintype ι✝
X✝ : ι✝ → C
j✝ : ((F.mapMat_ ⋙ G.mapMat_).obj (Mat_.mk ι✝ X✝)).ι
f : Mat_.mk ι✝¹ X✝¹ ⟶ Mat_.mk ι✝ X✝
⊢ ((F ⋙ G).mapMat_.map f ≫ ((fun M => eqToIso ⋯) (Mat_.mk ι✝ X✝)).hom) i✝ j✝ =
    (((fun M => eqToIso ⋯) (Mat_.mk ι✝¹ X✝¹)).hom ≫ (F.mapMat_ ⋙ G.mapMat_).map f) i✝ j✝
state_after: no goals
tactic: simp [comp_dite, dite_comp]