category_theory.preadditive.hom_orthogonalMathlib.CategoryTheory.Preadditive.HomOrthogonal

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(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
@@ -127,7 +127,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
   by
   ext ⟨b, ⟨⟩⟩ ⟨a⟩
-  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
+  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
   simp only [category.comp_id, category.id_comp, category.assoc, End.one_def, eq_to_hom_refl,
     Matrix.one_apply, hom_orthogonal.matrix_decomposition_apply, biproduct.components]
   split_ifs with h
@@ -144,7 +144,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
     o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i ⬝ o.matrixDecomposition z i :=
   by
   ext ⟨c, ⟨⟩⟩ ⟨a⟩
-  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
+  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
   simp only [Matrix.mul_apply, limits.biproduct.components,
     hom_orthogonal.matrix_decomposition_apply, category.comp_id, category.id_comp, category.assoc,
     End.mul_def, eq_to_hom_refl, eq_to_hom_trans_assoc, Finset.sum_congr]
@@ -153,7 +153,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
   apply Finset.sum_congr_set
   · intros; simp; rfl
   · intro b nm
-    simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm 
+    simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm
     simp only [category.assoc]
     convert comp_zero
     convert comp_zero
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2022 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.CategoryTheory.Linear.Basic
-import Mathbin.CategoryTheory.Preadditive.Biproducts
-import Mathbin.LinearAlgebra.Matrix.InvariantBasisNumber
+import CategoryTheory.Linear.Basic
+import CategoryTheory.Preadditive.Biproducts
+import LinearAlgebra.Matrix.InvariantBasisNumber
 
 #align_import category_theory.preadditive.hom_orthogonal from "leanprover-community/mathlib"@"781cb2eed038c4caf53bdbd8d20a95e5822d77df"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2022 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.preadditive.hom_orthogonal
-! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.Linear.Basic
 import Mathbin.CategoryTheory.Preadditive.Biproducts
 import Mathbin.LinearAlgebra.Matrix.InvariantBasisNumber
 
+#align_import category_theory.preadditive.hom_orthogonal from "leanprover-community/mathlib"@"781cb2eed038c4caf53bdbd8d20a95e5822d77df"
+
 /-!
 # Hom orthogonal families.
 
Diff
@@ -95,13 +95,13 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     biproduct.matrix fun j k =>
       if h : f j = g k then z (f j) ⟨k, by simp [h]⟩ ⟨j, by simp⟩ ≫ eqToHom (by simp [h]) else 0
   left_inv z := by
-    ext (j k)
+    ext j k
     simp only [category.assoc, biproduct.lift_π, biproduct.ι_matrix]
     split_ifs
     · simp; rfl
     · symm; apply o.eq_zero h
   right_inv z := by
-    ext (i⟨j, w⟩⟨k, ⟨⟩⟩)
+    ext i ⟨j, w⟩ ⟨k, ⟨⟩⟩
     simp only [Set.mem_preimage, Set.mem_singleton_iff]
     simp [w.symm]; rfl
 #align category_theory.hom_orthogonal.matrix_decomposition CategoryTheory.HomOrthogonal.matrixDecomposition
@@ -129,7 +129,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
   by
-  ext (⟨b, ⟨⟩⟩⟨a⟩)
+  ext ⟨b, ⟨⟩⟩ ⟨a⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
   simp only [category.comp_id, category.id_comp, category.assoc, End.one_def, eq_to_hom_refl,
     Matrix.one_apply, hom_orthogonal.matrix_decomposition_apply, biproduct.components]
@@ -146,7 +146,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
     o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i ⬝ o.matrixDecomposition z i :=
   by
-  ext (⟨c, ⟨⟩⟩⟨a⟩)
+  ext ⟨c, ⟨⟩⟩ ⟨a⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
   simp only [Matrix.mul_apply, limits.biproduct.components,
     hom_orthogonal.matrix_decomposition_apply, category.comp_id, category.id_comp, category.assoc,
Diff
@@ -67,9 +67,11 @@ namespace HomOrthogonal
 
 variable {ι : Type _} {s : ι → C}
 
+#print CategoryTheory.HomOrthogonal.eq_zero /-
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
     f = 0 := by haveI := o i j w; apply Subsingleton.elim
 #align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zero
+-/
 
 section
 
@@ -111,6 +113,7 @@ section
 
 variable [Preadditive C] [HasFiniteBiproducts C]
 
+#print CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv /-
 /-- `hom_orthogonal.matrix_decomposition` as an additive equivalence. -/
 @[simps]
 noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
@@ -119,7 +122,9 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) :=
   { o.matrixDecomposition with map_add' := fun w z => by ext; dsimp [biproduct.components]; simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
+-/
 
+#print CategoryTheory.HomOrthogonal.matrixDecomposition_id /-
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
@@ -133,7 +138,9 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
   · convert comp_zero
     simpa using biproduct.ι_π_ne _ (Ne.symm h)
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
+-/
 
+#print CategoryTheory.HomOrthogonal.matrixDecomposition_comp /-
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
@@ -157,6 +164,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
     convert comp_zero
     apply o.eq_zero nm
 #align category_theory.hom_orthogonal.matrix_decomposition_comp CategoryTheory.HomOrthogonal.matrixDecomposition_comp
+-/
 
 section
 
@@ -184,6 +192,7 @@ if `s i` is simple (as then `End (s i)` is a division ring).
 
 variable [∀ i, InvariantBasisNumber (End (s i))]
 
+#print CategoryTheory.HomOrthogonal.equiv_of_iso /-
 /-- Given a hom orthogonal family `s : ι → C`
 for which each `End (s i)` is a ring with invariant basis number (e.g. if each `s i` is simple),
 if two direct sums over `s` are isomorphic, then they have the same multiplicities.
@@ -200,6 +209,7 @@ theorem equiv_of_iso (o : HomOrthogonal s) {α β : Type} [Fintype α] [Fintype
     Matrix.square_of_invertible (o.matrix_decomposition i.inv c) (o.matrix_decomposition i.hom c)
       (by rw [← o.matrix_decomposition_comp]; simp) (by rw [← o.matrix_decomposition_comp]; simp)
 #align category_theory.hom_orthogonal.equiv_of_iso CategoryTheory.HomOrthogonal.equiv_of_iso
+-/
 
 end
 
Diff
@@ -125,7 +125,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
   by
   ext (⟨b, ⟨⟩⟩⟨a⟩)
-  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
+  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
   simp only [category.comp_id, category.id_comp, category.assoc, End.one_def, eq_to_hom_refl,
     Matrix.one_apply, hom_orthogonal.matrix_decomposition_apply, biproduct.components]
   split_ifs with h
@@ -140,16 +140,16 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
     o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i ⬝ o.matrixDecomposition z i :=
   by
   ext (⟨c, ⟨⟩⟩⟨a⟩)
-  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
+  simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property 
   simp only [Matrix.mul_apply, limits.biproduct.components,
     hom_orthogonal.matrix_decomposition_apply, category.comp_id, category.id_comp, category.assoc,
     End.mul_def, eq_to_hom_refl, eq_to_hom_trans_assoc, Finset.sum_congr]
   conv_lhs => rw [← category.id_comp w, ← biproduct.total]
   simp only [preadditive.sum_comp, preadditive.comp_sum]
   apply Finset.sum_congr_set
-  · intros ; simp; rfl
+  · intros; simp; rfl
   · intro b nm
-    simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm
+    simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm 
     simp only [category.assoc]
     convert comp_zero
     convert comp_zero
Diff
@@ -43,7 +43,7 @@ This is preliminary to defining semisimple categories.
 -/
 
 
-open Classical Matrix
+open scoped Classical Matrix
 
 open CategoryTheory.Limits
 
Diff
@@ -67,12 +67,6 @@ namespace HomOrthogonal
 
 variable {ι : Type _} {s : ι → C}
 
-/- warning: category_theory.hom_orthogonal.eq_zero -> CategoryTheory.HomOrthogonal.eq_zero is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {i : ι} {j : ι}, (Ne.{succ u3} ι i j) -> (forall (f : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} C _inst_1 _inst_2 (s i) (s j)))))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} C _inst_1], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {i : ι} {j : ι}, (Ne.{succ u1} ι i j) -> (forall (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u3} C _inst_1 _inst_2 (s i) (s j))))))
-Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zeroₓ'. -/
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
     f = 0 := by haveI := o i j w; apply Subsingleton.elim
 #align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zero
@@ -117,9 +111,6 @@ section
 
 variable [Preadditive C] [HasFiniteBiproducts C]
 
-/- warning: category_theory.hom_orthogonal.matrix_decomposition_add_equiv -> CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquivₓ'. -/
 /-- `hom_orthogonal.matrix_decomposition` as an additive equivalence. -/
 @[simps]
 noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
@@ -129,9 +120,6 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
   { o.matrixDecomposition with map_add' := fun w z => by ext; dsimp [biproduct.components]; simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
 
-/- warning: category_theory.hom_orthogonal.matrix_decomposition_id -> CategoryTheory.HomOrthogonal.matrixDecomposition_id is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_idₓ'. -/
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
@@ -146,9 +134,6 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
     simpa using biproduct.ι_π_ne _ (Ne.symm h)
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
 
-/- warning: category_theory.hom_orthogonal.matrix_decomposition_comp -> CategoryTheory.HomOrthogonal.matrixDecomposition_comp is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_comp CategoryTheory.HomOrthogonal.matrixDecomposition_compₓ'. -/
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
@@ -199,12 +184,6 @@ if `s i` is simple (as then `End (s i)` is a division ring).
 
 variable [∀ i, InvariantBasisNumber (End (s i))]
 
-/- warning: category_theory.hom_orthogonal.equiv_of_iso -> CategoryTheory.HomOrthogonal.equiv_of_iso is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i)))], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u3} ι (g (coeFn.{1, 1} (Equiv.{1, 1} α β) (fun (_x : Equiv.{1, 1} α β) => α -> β) (Equiv.hasCoeToFun.{1, 1} α β) e a)) (f a))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i))], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u2, u3} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u1} ι (g (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{1, 1} α β) e a)) (f a))))
-Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.equiv_of_iso CategoryTheory.HomOrthogonal.equiv_of_isoₓ'. -/
 /-- Given a hom orthogonal family `s : ι → C`
 for which each `End (s i)` is a ring with invariant basis number (e.g. if each `s i` is simple),
 if two direct sums over `s` are isomorphic, then they have the same multiplicities.
Diff
@@ -74,9 +74,7 @@ but is expected to have type
   forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} C _inst_1], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {i : ι} {j : ι}, (Ne.{succ u1} ι i j) -> (forall (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u3} C _inst_1 _inst_2 (s i) (s j))))))
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zeroₓ'. -/
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
-    f = 0 := by
-  haveI := o i j w
-  apply Subsingleton.elim
+    f = 0 := by haveI := o i j w; apply Subsingleton.elim
 #align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zero
 
 section
@@ -95,15 +93,8 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i))
     where
   toFun z i j k :=
-    eqToHom
-        (by
-          rcases k with ⟨k, ⟨⟩⟩
-          simp) ≫
-      biproduct.components z k j ≫
-        eqToHom
-          (by
-            rcases j with ⟨j, ⟨⟩⟩
-            simp)
+    eqToHom (by rcases k with ⟨k, ⟨⟩⟩; simp) ≫
+      biproduct.components z k j ≫ eqToHom (by rcases j with ⟨j, ⟨⟩⟩; simp)
   invFun z :=
     biproduct.matrix fun j k =>
       if h : f j = g k then z (f j) ⟨k, by simp [h]⟩ ⟨j, by simp⟩ ≫ eqToHom (by simp [h]) else 0
@@ -111,10 +102,8 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     ext (j k)
     simp only [category.assoc, biproduct.lift_π, biproduct.ι_matrix]
     split_ifs
-    · simp
-      rfl
-    · symm
-      apply o.eq_zero h
+    · simp; rfl
+    · symm; apply o.eq_zero h
   right_inv z := by
     ext (i⟨j, w⟩⟨k, ⟨⟩⟩)
     simp only [Set.mem_preimage, Set.mem_singleton_iff]
@@ -137,11 +126,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
     [Fintype β] {f : α → ι} {g : β → ι} :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃+
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) :=
-  { o.matrixDecomposition with
-    map_add' := fun w z => by
-      ext
-      dsimp [biproduct.components]
-      simp }
+  { o.matrixDecomposition with map_add' := fun w z => by ext; dsimp [biproduct.components]; simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
 
 /- warning: category_theory.hom_orthogonal.matrix_decomposition_id -> CategoryTheory.HomOrthogonal.matrixDecomposition_id is a dubious translation:
@@ -156,8 +141,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
   simp only [category.comp_id, category.id_comp, category.assoc, End.one_def, eq_to_hom_refl,
     Matrix.one_apply, hom_orthogonal.matrix_decomposition_apply, biproduct.components]
   split_ifs with h
-  · cases h
-    simp
+  · cases h; simp
   · convert comp_zero
     simpa using biproduct.ι_π_ne _ (Ne.symm h)
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
@@ -178,9 +162,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
   conv_lhs => rw [← category.id_comp w, ← biproduct.total]
   simp only [preadditive.sum_comp, preadditive.comp_sum]
   apply Finset.sum_congr_set
-  · intros
-    simp
-    rfl
+  · intros ; simp; rfl
   · intro b nm
     simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm
     simp only [category.assoc]
@@ -203,10 +185,7 @@ noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃ₗ[R]
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) :=
   { o.matrixDecompositionAddEquiv with
-    map_smul' := fun w z => by
-      ext
-      dsimp [biproduct.components]
-      simp }
+    map_smul' := fun w z => by ext; dsimp [biproduct.components]; simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_linear_equiv CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv
 -/
 
@@ -240,12 +219,7 @@ theorem equiv_of_iso (o : HomOrthogonal s) {α β : Type} [Fintype α] [Fintype
   simp only [Cardinal.mk_fintype, Nat.cast_inj]
   exact
     Matrix.square_of_invertible (o.matrix_decomposition i.inv c) (o.matrix_decomposition i.hom c)
-      (by
-        rw [← o.matrix_decomposition_comp]
-        simp)
-      (by
-        rw [← o.matrix_decomposition_comp]
-        simp)
+      (by rw [← o.matrix_decomposition_comp]; simp) (by rw [← o.matrix_decomposition_comp]; simp)
 #align category_theory.hom_orthogonal.equiv_of_iso CategoryTheory.HomOrthogonal.equiv_of_iso
 
 end
Diff
@@ -129,10 +129,7 @@ section
 variable [Preadditive C] [HasFiniteBiproducts C]
 
 /- warning: category_theory.hom_orthogonal.matrix_decomposition_add_equiv -> CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, AddEquiv.{u1, max u3 u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (AddZeroClass.toHasAdd.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddMonoid.toAddZeroClass.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (SubNegMonoid.toAddMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddGroup.toSubNegMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddCommGroup.toAddGroup.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (CategoryTheory.Preadditive.homGroup.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g)))))))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (fun (i : ι) => Matrix.hasAdd.{u1, 0, 0} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Distrib.toHasAdd.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toDistrib.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i)))))))
-but is expected to have type
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, AddEquiv.{u1, max u1 u3} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u1} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (AddZeroClass.toAdd.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddMonoid.toAddZeroClass.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (SubNegMonoid.toAddMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddGroup.toSubNegMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddCommGroup.toAddGroup.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (CategoryTheory.Preadditive.homGroup.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))))))))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => Matrix.{0, 0, u1} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (fun (i : ι) => Matrix.add.{u1, 0, 0} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Distrib.toAdd.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toDistrib.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u1, u2} C _inst_1 _inst_2 (s i))))))))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquivₓ'. -/
 /-- `hom_orthogonal.matrix_decomposition` as an additive equivalence. -/
 @[simps]
@@ -148,10 +145,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
 
 /- warning: category_theory.hom_orthogonal.matrix_decomposition_id -> CategoryTheory.HomOrthogonal.matrixDecomposition_id is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (OfNat.mk.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (One.one.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (Matrix.hasOne.{u1, 0} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (fun (a : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (b : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) => Subtype.decidableEq.{0} α (fun (x : α) => Membership.Mem.{0, 0} α (Set.{0} α) (Set.hasMem.{0} α) x (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MulZeroClass.toHasZero.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i))))))) (CategoryTheory.End.one.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))))))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) 1 (One.toOfNat1.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (Matrix.one.{u2, 0} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (fun (a : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (b : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) => Subtype.instDecidableEqSubtype.{0} α (fun (x : α) => Membership.mem.{0, 0} α (Set.{0} α) (Set.instMembershipSet.{0} α) x (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MonoidWithZero.toZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Semiring.toMonoidWithZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))) (CategoryTheory.End.one.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_idₓ'. -/
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
@@ -169,10 +163,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
 
 /- warning: category_theory.hom_orthogonal.matrix_decomposition_comp -> CategoryTheory.HomOrthogonal.matrixDecomposition_comp is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c))) z w) i) (Matrix.mul.{u1, 0, 0, 0} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) x (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) a (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (AddCommGroup.toAddCommMonoid.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.addCommGroup.{u1, u2} C _inst_1 _inst_2 (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
-but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c)))) z w) i) (Matrix.mul.{u2, 0, 0, 0} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) x (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) a (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Ring.toNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_comp CategoryTheory.HomOrthogonal.matrixDecomposition_compₓ'. -/
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
Diff
@@ -151,7 +151,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
 lean 3 declaration is
   forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (OfNat.mk.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (One.one.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (Matrix.hasOne.{u1, 0} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (fun (a : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (b : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) => Subtype.decidableEq.{0} α (fun (x : α) => Membership.Mem.{0, 0} α (Set.{0} α) (Set.hasMem.{0} α) x (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MulZeroClass.toHasZero.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i))))))) (CategoryTheory.End.one.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))))))
 but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) 1 (One.toOfNat1.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (Matrix.one.{u2, 0} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (fun (a : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (b : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) => Subtype.instDecidableEqSubtype.{0} α (fun (x : α) => Membership.mem.{0, 0} α (Set.{0} α) (Set.instMembershipSet.{0} α) x (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MonoidWithZero.toZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Semiring.toMonoidWithZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))) (CategoryTheory.End.one.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))))
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) 1 (One.toOfNat1.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (Matrix.one.{u2, 0} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (fun (a : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (b : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) => Subtype.instDecidableEqSubtype.{0} α (fun (x : α) => Membership.mem.{0, 0} α (Set.{0} α) (Set.instMembershipSet.{0} α) x (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MonoidWithZero.toZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Semiring.toMonoidWithZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))) (CategoryTheory.End.one.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))))
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_idₓ'. -/
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
@@ -172,7 +172,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
 lean 3 declaration is
   forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c))) z w) i) (Matrix.mul.{u1, 0, 0, 0} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) x (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) a (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (AddCommGroup.toAddCommMonoid.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.addCommGroup.{u1, u2} C _inst_1 _inst_2 (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
 but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c)))) z w) i) (Matrix.mul.{u2, 0, 0, 0} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) x (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) a (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Ring.toNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c)))) z w) i) (Matrix.mul.{u2, 0, 0, 0} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) x (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) a (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Ring.toNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_comp CategoryTheory.HomOrthogonal.matrixDecomposition_compₓ'. -/
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
@@ -233,7 +233,7 @@ variable [∀ i, InvariantBasisNumber (End (s i))]
 lean 3 declaration is
   forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i)))], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u3} ι (g (coeFn.{1, 1} (Equiv.{1, 1} α β) (fun (_x : Equiv.{1, 1} α β) => α -> β) (Equiv.hasCoeToFun.{1, 1} α β) e a)) (f a))))
 but is expected to have type
-  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i))], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u2, u3} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u1} ι (g (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{1, 1} α β) e a)) (f a))))
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i))], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u2, u3} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u1} ι (g (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.812 : α) => β) _x) (Equiv.instFunLikeEquiv.{1, 1} α β) e a)) (f a))))
 Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.equiv_of_iso CategoryTheory.HomOrthogonal.equiv_of_isoₓ'. -/
 /-- Given a hom orthogonal family `s : ι → C`
 for which each `End (s i)` is a ring with invariant basis number (e.g. if each `s i` is simple),
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module category_theory.preadditive.hom_orthogonal
-! leanprover-community/mathlib commit 829895f162a1f29d0133f4b3538f4cd1fb5bffd3
+! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.LinearAlgebra.Matrix.InvariantBasisNumber
 /-!
 # Hom orthogonal families.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A family of objects in a category with zero morphisms is "hom orthogonal" if the only
 morphism between distinct objects is the zero morphism.
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module category_theory.preadditive.hom_orthogonal
-! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
+! leanprover-community/mathlib commit 829895f162a1f29d0133f4b3538f4cd1fb5bffd3
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,9 +15,6 @@ import Mathbin.LinearAlgebra.Matrix.InvariantBasisNumber
 /-!
 # Hom orthogonal families.
 
-> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
-> Any changes to this file require a corresponding PR to mathlib4.
-
 A family of objects in a category with zero morphisms is "hom orthogonal" if the only
 morphism between distinct objects is the zero morphism.
 
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 
 ! This file was ported from Lean 3 source module category_theory.preadditive.hom_orthogonal
-! leanprover-community/mathlib commit 829895f162a1f29d0133f4b3538f4cd1fb5bffd3
+! leanprover-community/mathlib commit 781cb2eed038c4caf53bdbd8d20a95e5822d77df
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -15,6 +15,9 @@ import Mathbin.LinearAlgebra.Matrix.InvariantBasisNumber
 /-!
 # Hom orthogonal families.
 
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
 A family of objects in a category with zero morphisms is "hom orthogonal" if the only
 morphism between distinct objects is the zero morphism.
 
Diff
@@ -50,6 +50,7 @@ namespace CategoryTheory
 
 variable {C : Type u} [Category.{v} C]
 
+#print CategoryTheory.HomOrthogonal /-
 /-- A family of objects is "hom orthogonal" if
 there is at most one morphism between distinct objects.
 
@@ -57,11 +58,18 @@ there is at most one morphism between distinct objects.
 def HomOrthogonal {ι : Type _} (s : ι → C) : Prop :=
   ∀ i j, i ≠ j → Subsingleton (s i ⟶ s j)
 #align category_theory.hom_orthogonal CategoryTheory.HomOrthogonal
+-/
 
 namespace HomOrthogonal
 
 variable {ι : Type _} {s : ι → C}
 
+/- warning: category_theory.hom_orthogonal.eq_zero -> CategoryTheory.HomOrthogonal.eq_zero is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u1, u2} C _inst_1], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {i : ι} {j : ι}, (Ne.{succ u3} ι i j) -> (forall (f : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) f (OfNat.ofNat.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) 0 (OfNat.mk.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) 0 (Zero.zero.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (s i) (s j)) (CategoryTheory.Limits.HasZeroMorphisms.hasZero.{u1, u2} C _inst_1 _inst_2 (s i) (s j)))))))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Limits.HasZeroMorphisms.{u2, u3} C _inst_1], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {i : ι} {j : ι}, (Ne.{succ u1} ι i j) -> (forall (f : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)), Eq.{succ u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) f (OfNat.ofNat.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) 0 (Zero.toOfNat0.{u2} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (s i) (s j)) (CategoryTheory.Limits.HasZeroMorphisms.Zero.{u2, u3} C _inst_1 _inst_2 (s i) (s j))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zeroₓ'. -/
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
     f = 0 := by
   haveI := o i j w
@@ -72,6 +80,7 @@ section
 
 variable [HasZeroMorphisms C] [HasFiniteBiproducts C]
 
+#print CategoryTheory.HomOrthogonal.matrixDecomposition /-
 /-- Morphisms between two direct sums over a hom orthogonal family `s : ι → C`
 are equivalent to block diagonal matrices,
 with blocks indexed by `ι`,
@@ -108,6 +117,7 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     simp only [Set.mem_preimage, Set.mem_singleton_iff]
     simp [w.symm]; rfl
 #align category_theory.hom_orthogonal.matrix_decomposition CategoryTheory.HomOrthogonal.matrixDecomposition
+-/
 
 end
 
@@ -115,6 +125,12 @@ section
 
 variable [Preadditive C] [HasFiniteBiproducts C]
 
+/- warning: category_theory.hom_orthogonal.matrix_decomposition_add_equiv -> CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, AddEquiv.{u1, max u3 u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (AddZeroClass.toHasAdd.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddMonoid.toAddZeroClass.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (SubNegMonoid.toAddMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddGroup.toSubNegMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (AddCommGroup.toAddGroup.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g))) (CategoryTheory.Preadditive.homGroup.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_1.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 α _inst_4 f)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv._proof_2.{u2, u3, u1} C _inst_1 ι s _inst_2 _inst_3 β _inst_5 g)))))))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (fun (i : ι) => Matrix.hasAdd.{u1, 0, 0} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Distrib.toHasAdd.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toDistrib.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i)))))))
+but is expected to have type
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, AddEquiv.{u1, max u1 u3} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u1} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (AddZeroClass.toAdd.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddMonoid.toAddZeroClass.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (SubNegMonoid.toAddMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddGroup.toSubNegMonoid.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (AddCommGroup.toAddGroup.{u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (CategoryTheory.Preadditive.homGroup.{u1, u2} C _inst_1 _inst_2 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))))))))) (Pi.instAdd.{u3, u1} ι (fun (i : ι) => Matrix.{0, 0, u1} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (fun (i : ι) => Matrix.add.{u1, 0, 0} (Set.Elem.{0} β (Set.preimage.{0, u3} β ι g (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u3} α ι f (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.instSingletonSet.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Distrib.toAdd.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toDistrib.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u1, u2} C _inst_1 _inst_2 (s i))))))))))
+Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquivₓ'. -/
 /-- `hom_orthogonal.matrix_decomposition` as an additive equivalence. -/
 @[simps]
 noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
@@ -128,6 +144,12 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
       simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
 
+/- warning: category_theory.hom_orthogonal.matrix_decomposition_id -> CategoryTheory.HomOrthogonal.matrixDecomposition_id is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (b : α) => f b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (OfNat.mk.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) 1 (One.one.{u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (Matrix.hasOne.{u1, 0} (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (fun (a : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (b : coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) => Subtype.decidableEq.{0} α (fun (x : α) => Membership.Mem.{0, 0} α (Set.{0} α) (Set.hasMem.{0} α) x (Set.preimage.{0, u3} α ι (fun (b : α) => f b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MulZeroClass.toHasZero.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toMulZeroClass.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toNonAssocRing.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i))))))) (CategoryTheory.End.one.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))))))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} [_inst_4 : Fintype.{0} α] {f : α -> ι} (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : α) => s (f b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (b : α) => s (f b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α α _inst_4 _inst_4 (fun (a : α) => f a) (fun (b : α) => f b)) (CategoryTheory.CategoryStruct.id.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a))))) i) (OfNat.ofNat.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) 1 (One.toOfNat1.{u2} (Matrix.{0, 0, u2} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (Matrix.one.{u2, 0} (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (fun (a : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (b : Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) => Subtype.instDecidableEqSubtype.{0} α (fun (x : α) => Membership.mem.{0, 0} α (Set.{0} α) (Set.instMembershipSet.{0} α) x (Set.preimage.{0, u1} α ι (fun (b : α) => f b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : α) (b : α) => Classical.propDecidable (Eq.{1} α a b)) a b) (MonoidWithZero.toZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Semiring.toMonoidWithZero.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))) (CategoryTheory.End.one.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))))
+Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_idₓ'. -/
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 :=
@@ -143,6 +165,12 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
     simpa using biproduct.ι_π_ne _ (Ne.symm h)
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
 
+/- warning: category_theory.hom_orthogonal.matrix_decomposition_comp -> CategoryTheory.HomOrthogonal.matrixDecomposition_comp is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u1} (Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c))) z w) i) (Matrix.mul.{u1, 0, 0, 0} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) x (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.Mem.{0, 0} β (Set.{0} β) (Set.hasMem.{0} β) a (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (AddCommGroup.toAddCommMonoid.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.addCommGroup.{u1, u2} C _inst_1 _inst_2 (s i))) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b))) (CategoryTheory.Limits.biproduct.{0, u1, u2} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 γ _inst_6 (fun (c : γ) => h c)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} γ) Type (Set.hasCoeToSort.{0} γ) (Set.preimage.{0, u3} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (coeFn.{max 1 (succ u3) (succ u1), max (succ u3) (succ u1)} (Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (fun (_x : Equiv.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) => (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) -> (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (Equiv.hasCoeToFun.{succ u1, max (succ u3) (succ u1)} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_1.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 α _inst_4 (fun (a : α) => f a))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.HomOrthogonal.matrixDecomposition._proof_2.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 β _inst_5 (fun (b : β) => g b)))) (forall (i : ι), Matrix.{0, 0, u1} (coeSort.{1, 2} (Set.{0} β) Type (Set.hasCoeToSort.{0} β) (Set.preimage.{0, u3} β ι (fun (b : β) => g b) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (coeSort.{1, 2} (Set.{0} α) Type (Set.hasCoeToSort.{0} α) (Set.preimage.{0, u3} α ι (fun (a : α) => f a) (Singleton.singleton.{u3, u3} ι (Set.{u3} ι) (Set.hasSingleton.{u3} ι) i))) (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u1, u2, u3} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] (o : CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) {α : Type} {β : Type} {γ : Type} [_inst_4 : Fintype.{0} α] [_inst_5 : Fintype.{0} β] [_inst_6 : Fintype.{0} γ] {f : α -> ι} {g : β -> ι} {h : γ -> ι} (z : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (w : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (c : γ) => s (h c)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (i : ι), Eq.{succ u2} (Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α γ _inst_4 _inst_6 (fun (a : α) => f a) (fun (c : γ) => h c)) (CategoryTheory.CategoryStruct.comp.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c)))) z w) i) (Matrix.mul.{u2, 0, 0, 0} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Subtype.fintype.{0} β (fun (x : β) => Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) x (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (fun (a : β) => Classical.propDecidable (Membership.mem.{0, 0} β (Set.{0} β) (Set.instMembershipSet.{0} β) a (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i)))) _inst_5) (CategoryTheory.End.mul.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocSemiring.toAddCommMonoid.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonUnitalNonAssocRing.toNonUnitalNonAssocSemiring.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (NonAssocRing.toNonUnitalNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (Ring.toNonAssocRing.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instRingEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i)))))) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (a : β) => s (g a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (b : γ) => s (h b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (b : γ) => h b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (a : β) => g a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : β) => s (g a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : γ) => s (h b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} γ C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} γ _inst_6)) (fun (c : γ) => s (h c))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} γ (Set.preimage.{0, u1} γ ι (fun (c : γ) => h c) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o β γ _inst_5 _inst_6 (fun (b : β) => g b) (fun (c : γ) => h c)) w i) (FunLike.coe.{max (succ u2) (succ u1), succ u2, max (succ u2) (succ u1)} (Equiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (fun (_x : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) => forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i))) _x) (Equiv.instFunLikeEquiv.{succ u2, max (succ u2) (succ u1)} (Quiver.Hom.{succ u2, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1)) (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_4)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_5)) (fun (b : β) => s (g b))))) (forall (i : ι), Matrix.{0, 0, u2} (Set.Elem.{0} β (Set.preimage.{0, u1} β ι (fun (b : β) => g b) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (Set.Elem.{0} α (Set.preimage.{0, u1} α ι (fun (a : α) => f a) (Singleton.singleton.{u1, u1} ι (Set.{u1} ι) (Set.instSingletonSet.{u1} ι) i))) (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)))) (CategoryTheory.HomOrthogonal.matrixDecomposition.{u2, u3, u1} C _inst_1 ι s (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 o α β _inst_4 _inst_5 (fun (a : α) => f a) (fun (b : β) => g b)) z i))
+Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.matrix_decomposition_comp CategoryTheory.HomOrthogonal.matrixDecomposition_compₓ'. -/
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
@@ -173,6 +201,7 @@ section
 
 variable {R : Type _} [Semiring R] [Linear R C]
 
+#print CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv /-
 /-- `hom_orthogonal.matrix_decomposition` as an `R`-linear equivalence. -/
 @[simps]
 noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
@@ -185,6 +214,7 @@ noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β :
       dsimp [biproduct.components]
       simp }
 #align category_theory.hom_orthogonal.matrix_decomposition_linear_equiv CategoryTheory.HomOrthogonal.matrixDecompositionLinearEquiv
+-/
 
 end
 
@@ -196,6 +226,12 @@ if `s i` is simple (as then `End (s i)` is a division ring).
 
 variable [∀ i, InvariantBasisNumber (End (s i))]
 
+/- warning: category_theory.hom_orthogonal.equiv_of_iso -> CategoryTheory.HomOrthogonal.equiv_of_iso is a dubious translation:
+lean 3 declaration is
+  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {ι : Type.{u3}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u1, u2} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u1, u2} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (Ring.toSemiring.{u1} (CategoryTheory.End.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1) (s i)) (CategoryTheory.Preadditive.CategoryTheory.End.ring.{u1, u2} C _inst_1 _inst_2 (s i)))], (CategoryTheory.HomOrthogonal.{u1, u2, u3} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u1, u2} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.hasBiproduct.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u1, u2} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u1, u2} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u3} ι (g (coeFn.{1, 1} (Equiv.{1, 1} α β) (fun (_x : Equiv.{1, 1} α β) => α -> β) (Equiv.hasCoeToFun.{1, 1} α β) e a)) (f a))))
+but is expected to have type
+  forall {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] {ι : Type.{u1}} {s : ι -> C} [_inst_2 : CategoryTheory.Preadditive.{u2, u3} C _inst_1] [_inst_3 : CategoryTheory.Limits.HasFiniteBiproducts.{u2, u3} C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2)] [_inst_4 : forall (i : ι), InvariantBasisNumber.{u2} (CategoryTheory.End.{u2, u3} C (CategoryTheory.Category.toCategoryStruct.{u2, u3} C _inst_1) (s i)) (CategoryTheory.Preadditive.instSemiringEndToCategoryStruct.{u2, u3} C _inst_1 _inst_2 (s i))], (CategoryTheory.HomOrthogonal.{u2, u3, u1} C _inst_1 ι s) -> (forall {α : Type} {β : Type} [_inst_5 : Fintype.{0} α] [_inst_6 : Fintype.{0} β] {f : α -> ι} {g : β -> ι}, (CategoryTheory.Iso.{u2, u3} C _inst_1 (CategoryTheory.Limits.biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (a : α) => s (f a)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} α C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} α _inst_5)) (fun (a : α) => s (f a)))) (CategoryTheory.Limits.biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (fun (b : β) => s (g b)) (CategoryTheory.Limits.HasBiproductsOfShape.has_biproduct.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) (CategoryTheory.Limits.hasBiproductsOfShape_finite.{0, u2, u3} β C _inst_1 (CategoryTheory.Preadditive.preadditiveHasZeroMorphisms.{u2, u3} C _inst_1 _inst_2) _inst_3 (Finite.of_fintype.{0} β _inst_6)) (fun (b : β) => s (g b))))) -> (Exists.{1} (Equiv.{1, 1} α β) (fun (e : Equiv.{1, 1} α β) => forall (a : α), Eq.{succ u1} ι (g (FunLike.coe.{1, 1, 1} (Equiv.{1, 1} α β) α (fun (_x : α) => (fun (x._@.Mathlib.Logic.Equiv.Defs._hyg.808 : α) => β) _x) (Equiv.instFunLikeEquiv.{1, 1} α β) e a)) (f a))))
+Case conversion may be inaccurate. Consider using '#align category_theory.hom_orthogonal.equiv_of_iso CategoryTheory.HomOrthogonal.equiv_of_isoₓ'. -/
 /-- Given a hom orthogonal family `s : ι → C`
 for which each `End (s i)` is a ring with invariant basis number (e.g. if each `s i` is simple),
 if two direct sums over `s` are isomorphic, then they have the same multiplicities.

Changes in mathlib4

mathlib3
mathlib4
chore: split Subsingleton,Nontrivial off of Data.Set.Basic (#11832)

Moves definition of and lemmas related to Set.Subsingleton and Set.Nontrivial to a new file, so that Basic can be shorter.

Diff
@@ -6,7 +6,7 @@ Authors: Scott Morrison
 import Mathlib.CategoryTheory.Linear.Basic
 import Mathlib.CategoryTheory.Preadditive.Biproducts
 import Mathlib.LinearAlgebra.Matrix.InvariantBasisNumber
-import Mathlib.Data.Set.Basic
+import Mathlib.Data.Set.Subsingleton
 
 #align_import category_theory.preadditive.hom_orthogonal from "leanprover-community/mathlib"@"829895f162a1f29d0133f4b3538f4cd1fb5bffd3"
 
chore(HomOrthogonal): fix Fintype/Finite (#11539)
Diff
@@ -73,7 +73,7 @@ are equivalent to block diagonal matrices,
 with blocks indexed by `ι`,
 and matrix entries in `i`-th block living in the endomorphisms of `s i`. -/
 @[simps]
-noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fintype α] [Fintype β]
+noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Finite α] [Finite β]
     {f : α → ι} {g : β → ι} :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) where
@@ -115,8 +115,8 @@ variable [Preadditive C] [HasFiniteBiproducts C]
 
 /-- `HomOrthogonal.matrixDecomposition` as an additive equivalence. -/
 @[simps!]
-noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
-    [Fintype β] {f : α → ι} {g : β → ι} :
+noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Finite α]
+    [Finite β] {f : α → ι} {g : β → ι} :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃+
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) :=
   { o.matrixDecomposition with
@@ -127,7 +127,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
 #align category_theory.hom_orthogonal.matrix_decomposition_add_equiv CategoryTheory.HomOrthogonal.matrixDecompositionAddEquiv
 
 @[simp]
-theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
+theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Finite α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 := by
   ext ⟨b, ⟨⟩⟩ ⟨a, j_property⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
@@ -143,8 +143,8 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
     rw [this, comp_zero]
 #align category_theory.hom_orthogonal.matrix_decomposition_id CategoryTheory.HomOrthogonal.matrixDecomposition_id
 
-theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
-    [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
+theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Finite α] [Fintype β]
+    [Finite γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
     o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i * o.matrixDecomposition z i := by
   ext ⟨c, ⟨⟩⟩ ⟨a, j_property⟩
@@ -172,8 +172,8 @@ variable {R : Type*} [Semiring R] [Linear R C]
 
 /-- `HomOrthogonal.MatrixDecomposition` as an `R`-linear equivalence. -/
 @[simps]
-noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
-    [Fintype β] {f : α → ι} {g : β → ι} :
+noncomputable def matrixDecompositionLinearEquiv (o : HomOrthogonal s) {α β : Type} [Finite α]
+    [Finite β] {f : α → ι} {g : β → ι} :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃ₗ[R]
       ∀ i : ι, Matrix (g ⁻¹' {i}) (f ⁻¹' {i}) (End (s i)) :=
   { o.matrixDecompositionAddEquiv with
@@ -197,13 +197,14 @@ variable [∀ i, InvariantBasisNumber (End (s i))]
 for which each `End (s i)` is a ring with invariant basis number (e.g. if each `s i` is simple),
 if two direct sums over `s` are isomorphic, then they have the same multiplicities.
 -/
-theorem equiv_of_iso (o : HomOrthogonal s) {α β : Type} [Fintype α] [Fintype β] {f : α → ι}
+theorem equiv_of_iso (o : HomOrthogonal s) {α β : Type} [Finite α] [Finite β] {f : α → ι}
     {g : β → ι} (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b)) :
     ∃ e : α ≃ β, ∀ a, g (e a) = f a := by
   refine' ⟨Equiv.ofPreimageEquiv _, fun a => Equiv.ofPreimageEquiv_map _ _⟩
   intro c
   apply Nonempty.some
   apply Cardinal.eq.1
+  cases nonempty_fintype α; cases nonempty_fintype β
   simp only [Cardinal.mk_fintype, Nat.cast_inj]
   exact
     Matrix.square_of_invertible (o.matrixDecomposition i.inv c) (o.matrixDecomposition i.hom c)
chore: scope open Classical (#11199)

We remove all but one open Classicals, instead preferring to use open scoped Classical. The only real side-effect this led to is moving a couple declarations to use Exists.choose instead of Classical.choose.

The first few commits are explicitly labelled regex replaces for ease of review.

Diff
@@ -38,7 +38,8 @@ This is preliminary to defining semisimple categories.
 -/
 
 
-open Classical Matrix CategoryTheory.Limits
+open scoped Classical
+open Matrix CategoryTheory.Limits
 
 universe v u
 
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
@@ -136,7 +136,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
   · cases h
     simp
   · simp at h
-    -- porting note: used to be `convert comp_zero`, but that does not work anymore
+    -- Porting note: used to be `convert comp_zero`, but that does not work anymore
     have : biproduct.ι (fun a ↦ s (f a)) a ≫ biproduct.π (fun b ↦ s (f b)) b = 0 := by
       simpa using biproduct.ι_π_ne _ (Ne.symm h)
     rw [this, comp_zero]
@@ -159,7 +159,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
   · intro b nm
     simp only [Set.mem_preimage, Set.mem_singleton_iff] at nm
     simp only [Category.assoc]
-    -- porting note: this used to be 4 times `convert comp_zero`
+    -- Porting note: this used to be 4 times `convert comp_zero`
     have : biproduct.ι (fun b ↦ s (g b)) b ≫ w ≫ biproduct.π (fun b ↦ s (h b)) c = 0 := by
       apply o.eq_zero nm
     simp only [this, comp_zero]
chore(*): shake imports (#10199)
  • Remove Data.Set.Basic from scripts/noshake.json.
  • Remove an exception that was used by examples only, move these examples to a new test file.
  • Drop an exception for Order.Filter.Basic dependency on Control.Traversable.Instances, as the relevant parts were moved to Order.Filter.ListTraverse.
  • Run lake exe shake --fix.
Diff
@@ -6,6 +6,7 @@ Authors: Scott Morrison
 import Mathlib.CategoryTheory.Linear.Basic
 import Mathlib.CategoryTheory.Preadditive.Biproducts
 import Mathlib.LinearAlgebra.Matrix.InvariantBasisNumber
+import Mathlib.Data.Set.Basic
 
 #align_import category_theory.preadditive.hom_orthogonal from "leanprover-community/mathlib"@"829895f162a1f29d0133f4b3538f4cd1fb5bffd3"
 
chore: move to v4.6.0-rc1, merging adaptations from bump/v4.6.0 (#10176)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Joachim Breitner <mail@joachim-breitner.de>

Diff
@@ -112,7 +112,7 @@ section
 variable [Preadditive C] [HasFiniteBiproducts C]
 
 /-- `HomOrthogonal.matrixDecomposition` as an additive equivalence. -/
-@[simps]
+@[simps!]
 noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Type} [Fintype α]
     [Fintype β] {f : α → ι} {g : β → ι} :
     ((⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b)) ≃+
refactor: Use Pairwise wherever possible (#9236)

Performed with a regex search for ∀ (.) (.), \1 ≠ \2 →, and a few variants to catch implicit binders and explicit types.

I have deliberately avoided trying to make the analogous Set.Pairwise transformation (or any Pairwise (foo on bar) transformations) in this PR, to keep the diff small.

Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -50,7 +50,7 @@ there is at most one morphism between distinct objects.
 
 (In a category with zero morphisms, that must be the zero morphism.) -/
 def HomOrthogonal {ι : Type*} (s : ι → C) : Prop :=
-  ∀ i j, i ≠ j → Subsingleton (s i ⟶ s j)
+  Pairwise fun i j => Subsingleton (s i ⟶ s j)
 #align category_theory.hom_orthogonal CategoryTheory.HomOrthogonal
 
 namespace HomOrthogonal
@@ -58,9 +58,8 @@ namespace HomOrthogonal
 variable {ι : Type*} {s : ι → C}
 
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
-    f = 0 := by
-  haveI := o i j w
-  apply Subsingleton.elim
+    f = 0 :=
+  (o w).elim _ _
 #align category_theory.hom_orthogonal.eq_zero CategoryTheory.HomOrthogonal.eq_zero
 
 section
chore: exactly 4 spaces in theorems (#7328)

Co-authored-by: Moritz Firsching <firsching@google.com>

Diff
@@ -30,7 +30,7 @@ then decompositions of an object as a biproduct of the family have uniquely defi
 We state this as:
 ```
 theorem HomOrthogonal.equiv_of_iso (o : HomOrthogonal s) {f : α → ι} {g : β → ι}
-  (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b)) : ∃ e : α ≃ β, ∀ a, g (e a) = f a
+    (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b)) : ∃ e : α ≃ β, ∀ a, g (e a) = f a
 ```
 
 This is preliminary to defining semisimple categories.
chore: remove unused simps (#6632)

Co-authored-by: Eric Wieser <wieser.eric@gmail.com>

Diff
@@ -100,7 +100,6 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
   right_inv z := by
     ext i ⟨j, w⟩ ⟨k, ⟨⟩⟩
     simp only [eqToHom_refl, biproduct.matrix_components, Category.id_comp]
-    simp only [Set.mem_preimage, Set.mem_singleton_iff]
     split_ifs with h
     · simp
     · exfalso
refactor(Data/Matrix): Eliminate notation in favor of HMul (#6487)

The main difficulty here is that * has a slightly difference precedence to . notably around smul and neg.

The other annoyance is that ↑U ⬝ A ⬝ ↑U⁻¹ : Matrix m m 𝔸 now has to be written U.val * A * (U⁻¹).val in order to typecheck.

A downside of this change to consider: if you have a goal of A * (B * C) = (A * B) * C, mul_assoc now gives the illusion of matching, when in fact Matrix.mul_assoc is needed. Previously the distinct symbol made it easy to avoid this mistake.

On the flipside, there is now no need to rewrite by Matrix.mul_eq_mul all the time (indeed, the lemma is now removed).

Diff
@@ -146,7 +146,7 @@ theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f
 theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintype α] [Fintype β]
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
-    o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i ⬝ o.matrixDecomposition z i := by
+    o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i * o.matrixDecomposition z i := by
   ext ⟨c, ⟨⟩⟩ ⟨a, j_property⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
   simp only [Matrix.mul_apply, Limits.biproduct.components,
chore: banish Type _ and Sort _ (#6499)

We remove all possible occurences of Type _ and Sort _ in favor of Type* and Sort*.

This has nice performance benefits.

Diff
@@ -49,13 +49,13 @@ variable {C : Type u} [Category.{v} C]
 there is at most one morphism between distinct objects.
 
 (In a category with zero morphisms, that must be the zero morphism.) -/
-def HomOrthogonal {ι : Type _} (s : ι → C) : Prop :=
+def HomOrthogonal {ι : Type*} (s : ι → C) : Prop :=
   ∀ i j, i ≠ j → Subsingleton (s i ⟶ s j)
 #align category_theory.hom_orthogonal CategoryTheory.HomOrthogonal
 
 namespace HomOrthogonal
 
-variable {ι : Type _} {s : ι → C}
+variable {ι : Type*} {s : ι → C}
 
 theorem eq_zero [HasZeroMorphisms C] (o : HomOrthogonal s) {i j : ι} (w : i ≠ j) (f : s i ⟶ s j) :
     f = 0 := by
@@ -168,7 +168,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
 
 section
 
-variable {R : Type _} [Semiring R] [Linear R C]
+variable {R : Type*} [Semiring R] [Linear R C]
 
 /-- `HomOrthogonal.MatrixDecomposition` as an `R`-linear equivalence. -/
 @[simps]
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,16 +2,13 @@
 Copyright (c) 2022 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
-
-! This file was ported from Lean 3 source module category_theory.preadditive.hom_orthogonal
-! leanprover-community/mathlib commit 829895f162a1f29d0133f4b3538f4cd1fb5bffd3
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.Linear.Basic
 import Mathlib.CategoryTheory.Preadditive.Biproducts
 import Mathlib.LinearAlgebra.Matrix.InvariantBasisNumber
 
+#align_import category_theory.preadditive.hom_orthogonal from "leanprover-community/mathlib"@"829895f162a1f29d0133f4b3538f4cd1fb5bffd3"
+
 /-!
 # Hom orthogonal families.
 
chore: remove superfluous parentheses in calls to ext (#5258)

Co-authored-by: Xavier Roblot <46200072+xroblot@users.noreply.github.com> Co-authored-by: Joël Riou <joel.riou@universite-paris-saclay.fr> Co-authored-by: Riccardo Brasca <riccardo.brasca@gmail.com> Co-authored-by: Yury G. Kudryashov <urkud@urkud.name> Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au> Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Pol'tta / Miyahara Kō <pol_tta@outlook.jp> Co-authored-by: Jason Yuen <jason_yuen2007@hotmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Jireh Loreaux <loreaujy@gmail.com> Co-authored-by: Ruben Van de Velde <65514131+Ruben-VandeVelde@users.noreply.github.com> Co-authored-by: Kyle Miller <kmill31415@gmail.com> Co-authored-by: Heather Macbeth <25316162+hrmacbeth@users.noreply.github.com> Co-authored-by: Jujian Zhang <jujian.zhang1998@outlook.com> Co-authored-by: Yaël Dillies <yael.dillies@gmail.com>

Diff
@@ -101,7 +101,7 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     · symm
       apply o.eq_zero h
   right_inv z := by
-    ext (i ⟨j, w⟩ ⟨k, ⟨⟩⟩)
+    ext i ⟨j, w⟩ ⟨k, ⟨⟩⟩
     simp only [eqToHom_refl, biproduct.matrix_components, Category.id_comp]
     simp only [Set.mem_preimage, Set.mem_singleton_iff]
     split_ifs with h
@@ -132,7 +132,7 @@ noncomputable def matrixDecompositionAddEquiv (o : HomOrthogonal s) {α β : Typ
 @[simp]
 theorem matrixDecomposition_id (o : HomOrthogonal s) {α : Type} [Fintype α] {f : α → ι} (i : ι) :
     o.matrixDecomposition (𝟙 (⨁ fun a => s (f a))) i = 1 := by
-  ext (⟨b, ⟨⟩⟩⟨a, j_property⟩)
+  ext ⟨b, ⟨⟩⟩ ⟨a, j_property⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
   simp only [Category.comp_id, Category.id_comp, Category.assoc, End.one_def, eqToHom_refl,
     Matrix.one_apply, HomOrthogonal.matrixDecomposition_apply, biproduct.components]
@@ -150,7 +150,7 @@ theorem matrixDecomposition_comp (o : HomOrthogonal s) {α β γ : Type} [Fintyp
     [Fintype γ] {f : α → ι} {g : β → ι} {h : γ → ι} (z : (⨁ fun a => s (f a)) ⟶ ⨁ fun b => s (g b))
     (w : (⨁ fun b => s (g b)) ⟶ ⨁ fun c => s (h c)) (i : ι) :
     o.matrixDecomposition (z ≫ w) i = o.matrixDecomposition w i ⬝ o.matrixDecomposition z i := by
-  ext (⟨c, ⟨⟩⟩⟨a, j_property⟩)
+  ext ⟨c, ⟨⟩⟩ ⟨a, j_property⟩
   simp only [Set.mem_preimage, Set.mem_singleton_iff] at j_property
   simp only [Matrix.mul_apply, Limits.biproduct.components,
     HomOrthogonal.matrixDecomposition_apply, Category.comp_id, Category.id_comp, Category.assoc,
feat: more consistent use of ext, and updating porting notes. (#5242)

Co-authored-by: Scott Morrison <scott.morrison@anu.edu.au>

Diff
@@ -93,12 +93,7 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     biproduct.matrix fun j k =>
       if h : f j = g k then z (f j) ⟨k, by simp [h]⟩ ⟨j, by simp⟩ ≫ eqToHom (by simp [h]) else 0
   left_inv z := by
-    -- Porting note: `ext j k` applies the lemmas in the other order,
-    -- and gets stuck. Consider adjusting priorities, or making this proof more robust.
-    apply biproduct.hom_ext
-    intro j
-    apply biproduct.hom_ext'
-    intro k
+    ext j k
     simp only [biproduct.matrix_π, biproduct.ι_desc]
     split_ifs with h
     · simp
chore: bump to nightly-2023-05-31 (#4530)

Co-authored-by: Scott Morrison <scott.morrison@gmail.com> Co-authored-by: Mario Carneiro <di.gama@gmail.com> Co-authored-by: Floris van Doorn <fpvdoorn@gmail.com> Co-authored-by: Jeremy Tan Jie Rui <reddeloostw@gmail.com> Co-authored-by: Alex J Best <alex.j.best@gmail.com>

Diff
@@ -93,7 +93,12 @@ noncomputable def matrixDecomposition (o : HomOrthogonal s) {α β : Type} [Fint
     biproduct.matrix fun j k =>
       if h : f j = g k then z (f j) ⟨k, by simp [h]⟩ ⟨j, by simp⟩ ≫ eqToHom (by simp [h]) else 0
   left_inv z := by
-    ext (j k)
+    -- Porting note: `ext j k` applies the lemmas in the other order,
+    -- and gets stuck. Consider adjusting priorities, or making this proof more robust.
+    apply biproduct.hom_ext
+    intro j
+    apply biproduct.hom_ext'
+    intro k
     simp only [biproduct.matrix_π, biproduct.ι_desc]
     split_ifs with h
     · simp
chore: tidy various files (#4003)
Diff
@@ -32,17 +32,15 @@ or otherwise if each endomorphism ring is commutative),
 then decompositions of an object as a biproduct of the family have uniquely defined multiplicities.
 We state this as:
 ```
-lemma hom_orthogonal.equiv_of_iso (o : hom_orthogonal s) {f : α → ι} {g : β → ι}
-  (i : ⨁ (λ a, s (f a)) ≅ ⨁ (λ b, s (g b))) : ∃ e : α ≃ β, ∀ a, g (e a) = f a
+theorem HomOrthogonal.equiv_of_iso (o : HomOrthogonal s) {f : α → ι} {g : β → ι}
+  (i : (⨁ fun a => s (f a)) ≅ ⨁ fun b => s (g b)) : ∃ e : α ≃ β, ∀ a, g (e a) = f a
 ```
 
 This is preliminary to defining semisimple categories.
 -/
 
 
-open Classical Matrix
-
-open CategoryTheory.Limits
+open Classical Matrix CategoryTheory.Limits
 
 universe v u
 
feat: port CategoryTheory.Preadditive.HomOrthogonal (#3734)

Co-authored-by: Moritz Firsching <firsching@google.com> Co-authored-by: Jason Yuen <jason_yuen2007@hotmail.com> Co-authored-by: int-y1 <jason_yuen2007@hotmail.com>

Dependencies 8 + 577

578 files ported (98.6%)
231066 lines ported (98.7%)
Show graph

The unported dependencies are