category_theory.path_categoryMathlib.CategoryTheory.PathCategory

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)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,9 +3,9 @@ Copyright (c) 2021 Scott Morrison. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Scott Morrison
 -/
-import Mathbin.CategoryTheory.EqToHom
-import Mathbin.CategoryTheory.Quotient
-import Mathbin.Combinatorics.Quiver.Path
+import CategoryTheory.EqToHom
+import CategoryTheory.Quotient
+import Combinatorics.Quiver.Path
 
 #align_import category_theory.path_category from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
 
Diff
@@ -2,16 +2,13 @@
 Copyright (c) 2021 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.path_category
-! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.CategoryTheory.EqToHom
 import Mathbin.CategoryTheory.Quotient
 import Mathbin.Combinatorics.Quiver.Path
 
+#align_import category_theory.path_category from "leanprover-community/mathlib"@"f47581155c818e6361af4e4fda60d27d020c226b"
+
 /-!
 # The category paths on a quiver.
 
Diff
@@ -149,7 +149,7 @@ theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.ob
         F.map e.toPath =
           eqToHom (congr_fun h_obj a) ≫ G.map e.toPath ≫ eqToHom (congr_fun h_obj.symm b)) :
     F = G := by
-  ext (X Y f)
+  ext X Y f
   · induction' f with Y' Z' g e ih
     · erw [F.map_id, G.map_id, category.id_comp, eq_to_hom_trans, eq_to_hom_refl]
     · erw [F.map_comp g e.to_path, G.map_comp g e.to_path, ih, h]
Diff
@@ -88,23 +88,30 @@ def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C
 #align category_theory.paths.lift CategoryTheory.Paths.lift
 -/
 
+#print CategoryTheory.Paths.lift_nil /-
 @[simp]
 theorem lift_nil {C} [Category C] (φ : V ⥤q C) (X : V) :
     (lift φ).map Quiver.Path.nil = 𝟙 (φ.obj X) :=
   rfl
 #align category_theory.paths.lift_nil CategoryTheory.Paths.lift_nil
+-/
 
+#print CategoryTheory.Paths.lift_cons /-
 @[simp]
 theorem lift_cons {C} [Category C] (φ : V ⥤q C) {X Y Z : V} (p : Quiver.Path X Y) (f : Y ⟶ Z) :
     (lift φ).map (p.cons f) = (lift φ).map p ≫ φ.map f :=
   rfl
 #align category_theory.paths.lift_cons CategoryTheory.Paths.lift_cons
+-/
 
+#print CategoryTheory.Paths.lift_toPath /-
 @[simp]
 theorem lift_toPath {C} [Category C] (φ : V ⥤q C) {X Y : V} (f : X ⟶ Y) :
     (lift φ).map f.toPath = φ.map f := by dsimp [Quiver.Hom.toPath, lift]; simp
 #align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPath
+-/
 
+#print CategoryTheory.Paths.lift_spec /-
 theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunctor = φ :=
   by
   apply Prefunctor.ext; rotate_left
@@ -113,7 +120,9 @@ theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunc
     dsimp [lift, Quiver.Hom.toPath]
     simp only [category.id_comp]
 #align category_theory.paths.lift_spec CategoryTheory.Paths.lift_spec
+-/
 
+#print CategoryTheory.Paths.lift_unique /-
 theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
     (hΦ : of ⋙q Φ.toPrefunctor = φ) : Φ = lift φ :=
   by
@@ -129,7 +138,9 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
         convert functor.map_comp Φ p f'.to_path
       rw [this, ih]
 #align category_theory.paths.lift_unique CategoryTheory.Paths.lift_unique
+-/
 
+#print CategoryTheory.Paths.ext_functor /-
 /-- Two functors out of a path category are equal when they agree on singleton paths. -/
 @[ext]
 theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.obj)
@@ -145,6 +156,7 @@ theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.ob
       simp only [category.id_comp, eq_to_hom_refl, eq_to_hom_trans_assoc, category.assoc]
   · intro X; rw [h_obj]
 #align category_theory.paths.ext_functor CategoryTheory.Paths.ext_functor
+-/
 
 end Paths
 
@@ -254,6 +266,7 @@ def quotientPathsTo : Quotient (pathsHomRel C) ⥤ C :=
 #align category_theory.quotient_paths_to CategoryTheory.quotientPathsTo
 -/
 
+#print CategoryTheory.quotientPathsEquiv /-
 /-- The canonical quotient of the path category of a category
 is equivalent to the original category. -/
 def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
@@ -274,6 +287,7 @@ def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
   counitIso := NatIso.ofComponents (fun X => Iso.refl _) (by tidy)
   functor_unitIso_comp' := by intros; cases X; dsimp; simp; rfl
 #align category_theory.quotient_paths_equiv CategoryTheory.quotientPathsEquiv
+-/
 
 end
 
Diff
@@ -124,7 +124,7 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
     dsimp [lift]
     induction' f with _ _ p f' ih
     · simp only [category.comp_id]; apply Functor.map_id
-    · simp only [category.comp_id, category.id_comp] at ih⊢
+    · simp only [category.comp_id, category.id_comp] at ih ⊢
       have : Φ.map (p.cons f') = Φ.map p ≫ Φ.map f'.to_path := by
         convert functor.map_comp Φ p f'.to_path
       rw [this, ih]
@@ -272,7 +272,7 @@ def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
         apply quotient.comp_closure.of
         simp [paths_hom_rel])
   counitIso := NatIso.ofComponents (fun X => Iso.refl _) (by tidy)
-  functor_unitIso_comp' := by intros ; cases X; dsimp; simp; rfl
+  functor_unitIso_comp' := by intros; cases X; dsimp; simp; rfl
 #align category_theory.quotient_paths_equiv CategoryTheory.quotientPathsEquiv
 
 end
Diff
@@ -88,47 +88,23 @@ def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C
 #align category_theory.paths.lift CategoryTheory.Paths.lift
 -/
 
-/- warning: category_theory.paths.lift_nil -> CategoryTheory.Paths.lift_nil is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (X : V), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X X (Quiver.Path.nil.{succ u1, u2} V _inst_1 X)) (CategoryTheory.CategoryStruct.id.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (Prefunctor.obj.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ X))
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (X : V), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X X (Quiver.Path.nil.{succ u3, u4} V _inst_1 X)) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ X))
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_nil CategoryTheory.Paths.lift_nilₓ'. -/
 @[simp]
 theorem lift_nil {C} [Category C] (φ : V ⥤q C) (X : V) :
     (lift φ).map Quiver.Path.nil = 𝟙 (φ.obj X) :=
   rfl
 #align category_theory.paths.lift_nil CategoryTheory.Paths.lift_nil
 
-/- warning: category_theory.paths.lift_cons -> CategoryTheory.Paths.lift_cons is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) {X : V} {Y : V} {Z : V} (p : Quiver.Path.{succ u1, u2} V _inst_1 X Y) (f : Quiver.Hom.{succ u1, u2} V _inst_1 Y Z), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Z)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Z (Quiver.Path.cons.{succ u1, u2} V _inst_1 X Y Z p f)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Y) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Z) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Y p) (Prefunctor.map.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ Y Z f))
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) {X : V} {Y : V} {Z : V} (p : Quiver.Path.{succ u3, u4} V _inst_1 X Y) (f : Quiver.Hom.{succ u3, u4} V _inst_1 Y Z), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Z)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Z (Quiver.Path.cons.{succ u3, u4} V _inst_1 X Y Z p f)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Y) (Prefunctor.obj.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ Z) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Y p) (Prefunctor.map.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ Y Z f))
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_cons CategoryTheory.Paths.lift_consₓ'. -/
 @[simp]
 theorem lift_cons {C} [Category C] (φ : V ⥤q C) {X Y Z : V} (p : Quiver.Path X Y) (f : Y ⟶ Z) :
     (lift φ).map (p.cons f) = (lift φ).map p ≫ φ.map f :=
   rfl
 #align category_theory.paths.lift_cons CategoryTheory.Paths.lift_cons
 
-/- warning: category_theory.paths.lift_to_path -> CategoryTheory.Paths.lift_toPath is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) {X : V} {Y : V} (f : Quiver.Hom.{succ u1, u2} V _inst_1 X Y), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Y)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Y (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 X Y f)) (Prefunctor.map.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ X Y f)
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) {X : V} {Y : V} (f : Quiver.Hom.{succ u3, u4} V _inst_1 X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Y)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Y (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 X Y f)) (Prefunctor.map.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ X Y f)
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPathₓ'. -/
 @[simp]
 theorem lift_toPath {C} [Category C] (φ : V ⥤q C) {X Y : V} (f : X ⟶ Y) :
     (lift φ).map f.toPath = φ.map f := by dsimp [Quiver.Hom.toPath, lift]; simp
 #align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPath
 
-/- warning: category_theory.paths.lift_spec -> CategoryTheory.Paths.lift_spec is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))), Eq.{max (max (succ u2) (succ u1) (succ u4)) (succ u2) (succ u3)} (Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Prefunctor.comp.{u2, succ u1, u2, succ (max u2 u1), u3, succ u4} V _inst_1 (CategoryTheory.Paths.{u2} V) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Paths.of.{u1, u2} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ))) φ
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Prefunctor.comp.{u4, succ u3, u4, max (succ u4) (succ u3), u2, succ u1} V _inst_1 (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Paths.of.{u3, u4} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ))) φ
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_spec CategoryTheory.Paths.lift_specₓ'. -/
 theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunctor = φ :=
   by
   apply Prefunctor.ext; rotate_left
@@ -138,12 +114,6 @@ theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunc
     simp only [category.id_comp]
 #align category_theory.paths.lift_spec CategoryTheory.Paths.lift_spec
 
-/- warning: category_theory.paths.lift_unique -> CategoryTheory.Paths.lift_unique is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Φ : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2), (Eq.{max (max (succ u2) (succ u1) (succ u4)) (succ u2) (succ u3)} (Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Prefunctor.comp.{u2, succ u1, u2, succ (max u2 u1), u3, succ u4} V _inst_1 (CategoryTheory.Paths.{u2} V) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Paths.of.{u1, u2} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 Φ)) φ) -> (Eq.{succ (max (max u2 u1) u4 u2 u3)} (CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2) Φ (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ))
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Φ : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2), (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Prefunctor.comp.{u4, succ u3, u4, max (succ u4) (succ u3), u2, succ u1} V _inst_1 (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Paths.of.{u3, u4} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 Φ)) φ) -> (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2) Φ (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ))
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_unique CategoryTheory.Paths.lift_uniqueₓ'. -/
 theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
     (hΦ : of ⋙q Φ.toPrefunctor = φ) : Φ = lift φ :=
   by
@@ -160,9 +130,6 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
       rw [this, ih]
 #align category_theory.paths.lift_unique CategoryTheory.Paths.lift_unique
 
-/- warning: category_theory.paths.ext_functor -> CategoryTheory.Paths.ext_functor is a dubious translation:
-<too large>
-Case conversion may be inaccurate. Consider using '#align category_theory.paths.ext_functor CategoryTheory.Paths.ext_functorₓ'. -/
 /-- Two functors out of a path category are equal when they agree on singleton paths. -/
 @[ext]
 theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.obj)
@@ -287,12 +254,6 @@ def quotientPathsTo : Quotient (pathsHomRel C) ⥤ C :=
 #align category_theory.quotient_paths_to CategoryTheory.quotientPathsTo
 -/
 
-/- warning: category_theory.quotient_paths_equiv -> CategoryTheory.quotientPathsEquiv is a dubious translation:
-lean 3 declaration is
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Quotient.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) (CategoryTheory.Quotient.category.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) C _inst_1
-but is expected to have type
-  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Quotient.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) C (CategoryTheory.Quotient.category.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) _inst_1
-Case conversion may be inaccurate. Consider using '#align category_theory.quotient_paths_equiv CategoryTheory.quotientPathsEquivₓ'. -/
 /-- The canonical quotient of the path category of a category
 is equivalent to the original category. -/
 def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
Diff
@@ -82,12 +82,9 @@ def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C
   map_id' X := by rfl
   map_comp' X Y Z f g := by
     induction' g with _ _ g' p ih _ _ _
-    · rw [category.comp_id]
-      rfl
+    · rw [category.comp_id]; rfl
     · have : f ≫ g'.cons p = (f ≫ g').cons p := by apply Quiver.Path.comp_cons
-      rw [this]
-      simp only
-      rw [ih, category.assoc]
+      rw [this]; simp only; rw [ih, category.assoc]
 #align category_theory.paths.lift CategoryTheory.Paths.lift
 -/
 
@@ -123,10 +120,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPathₓ'. -/
 @[simp]
 theorem lift_toPath {C} [Category C] (φ : V ⥤q C) {X Y : V} (f : X ⟶ Y) :
-    (lift φ).map f.toPath = φ.map f :=
-  by
-  dsimp [Quiver.Hom.toPath, lift]
-  simp
+    (lift φ).map f.toPath = φ.map f := by dsimp [Quiver.Hom.toPath, lift]; simp
 #align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPath
 
 /- warning: category_theory.paths.lift_spec -> CategoryTheory.Paths.lift_spec is a dubious translation:
@@ -138,10 +132,8 @@ Case conversion may be inaccurate. Consider using '#align category_theory.paths.
 theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunctor = φ :=
   by
   apply Prefunctor.ext; rotate_left
-  · rintro X
-    rfl
-  · rintro X Y f
-    rcases φ with ⟨φo, φm⟩
+  · rintro X; rfl
+  · rintro X Y f; rcases φ with ⟨φo, φm⟩
     dsimp [lift, Quiver.Hom.toPath]
     simp only [category.id_comp]
 #align category_theory.paths.lift_spec CategoryTheory.Paths.lift_spec
@@ -157,13 +149,11 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
   by
   subst_vars
   apply Functor.ext; rotate_left
-  · rintro X
-    rfl
+  · rintro X; rfl
   · rintro X Y f
     dsimp [lift]
     induction' f with _ _ p f' ih
-    · simp only [category.comp_id]
-      apply Functor.map_id
+    · simp only [category.comp_id]; apply Functor.map_id
     · simp only [category.comp_id, category.id_comp] at ih⊢
       have : Φ.map (p.cons f') = Φ.map p ≫ Φ.map f'.to_path := by
         convert functor.map_comp Φ p f'.to_path
@@ -186,8 +176,7 @@ theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.ob
     · erw [F.map_id, G.map_id, category.id_comp, eq_to_hom_trans, eq_to_hom_refl]
     · erw [F.map_comp g e.to_path, G.map_comp g e.to_path, ih, h]
       simp only [category.id_comp, eq_to_hom_refl, eq_to_hom_trans_assoc, category.assoc]
-  · intro X
-    rw [h_obj]
+  · intro X; rw [h_obj]
 #align category_theory.paths.ext_functor CategoryTheory.Paths.ext_functor
 
 end Paths
@@ -311,10 +300,7 @@ def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
   Functor := quotientPathsTo C
   inverse := toQuotientPaths C
   unitIso :=
-    NatIso.ofComponents
-      (fun X => by
-        cases X
-        rfl)
+    NatIso.ofComponents (fun X => by cases X; rfl)
       (by
         intros
         cases X; cases Y
@@ -325,12 +311,7 @@ def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C
         apply quotient.comp_closure.of
         simp [paths_hom_rel])
   counitIso := NatIso.ofComponents (fun X => Iso.refl _) (by tidy)
-  functor_unitIso_comp' := by
-    intros
-    cases X
-    dsimp
-    simp
-    rfl
+  functor_unitIso_comp' := by intros ; cases X; dsimp; simp; rfl
 #align category_theory.quotient_paths_equiv CategoryTheory.quotientPathsEquiv
 
 end
Diff
@@ -171,10 +171,7 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
 #align category_theory.paths.lift_unique CategoryTheory.Paths.lift_unique
 
 /- warning: category_theory.paths.ext_functor -> CategoryTheory.Paths.ext_functor is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] {F : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2} {G : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2} (h_obj : Eq.{max (succ u2) (succ u3)} ((CategoryTheory.Paths.{u2} V) -> C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G)), (forall (a : V) (b : V) (e : Quiver.Hom.{succ u1, u2} V _inst_1 a b), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a b (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 a b e)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (CategoryTheory.eqToHom.{u4, u3} C _inst_2 (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (congr_fun.{succ u2, succ u3} V (fun (x : V) => C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) h_obj a)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G b) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a b (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 a b e)) (CategoryTheory.eqToHom.{u4, u3} C _inst_2 (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G b) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (congr_fun.{succ u2, succ u3} V (fun (x : V) => C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) (fun (b : V) => CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (Eq.symm.{max (succ u2) (succ u3)} ((CategoryTheory.Paths.{u2} V) -> C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) h_obj) b))))) -> (Eq.{succ (max (max u2 u1) u4 u2 u3)} (CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2) F G)
-but is expected to have type
-  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] {F : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2} {G : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2} (h_obj : Eq.{max (succ u4) (succ u2)} ((CategoryTheory.Paths.{u4} V) -> C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G))), (forall (a : V) (b : V) (e : Quiver.Hom.{succ u3, u4} V _inst_1 a b), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a b (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 a b e)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (CategoryTheory.eqToHom.{u1, u2} C _inst_2 (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (congr_fun.{succ u4, succ u2} (CategoryTheory.Paths.{u4} V) (fun (x : CategoryTheory.Paths.{u4} V) => C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) h_obj a)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) b) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a b (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 a b e)) (CategoryTheory.eqToHom.{u1, u2} C _inst_2 (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) b) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (congr_fun.{succ u4, succ u2} (CategoryTheory.Paths.{u4} V) (fun (x : CategoryTheory.Paths.{u4} V) => C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Eq.symm.{max (succ u4) (succ u2)} ((CategoryTheory.Paths.{u4} V) -> C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) h_obj) b))))) -> (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2) F G)
+<too large>
 Case conversion may be inaccurate. Consider using '#align category_theory.paths.ext_functor CategoryTheory.Paths.ext_functorₓ'. -/
 /-- Two functors out of a path category are equal when they agree on singleton paths. -/
 @[ext]
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.path_category
-! leanprover-community/mathlib commit c6dd521ebdce53bb372c527569dd7c25de53a08b
+! leanprover-community/mathlib commit f47581155c818e6361af4e4fda60d27d020c226b
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
@@ -14,6 +14,9 @@ import Mathbin.Combinatorics.Quiver.Path
 
 /-!
 # The category paths on a quiver.
+
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
 When `C` is a quiver, `paths C` is the category of paths.
 
 ## When the quiver is itself a category
Diff
@@ -30,11 +30,13 @@ namespace CategoryTheory
 
 section
 
+#print CategoryTheory.Paths /-
 /-- A type synonym for the category of paths in a quiver.
 -/
 def Paths (V : Type u₁) : Type u₁ :=
   V
 #align category_theory.paths CategoryTheory.Paths
+-/
 
 instance (V : Type u₁) [Inhabited V] : Inhabited (Paths V) :=
   ⟨(default : V)⟩
@@ -43,15 +45,18 @@ variable (V : Type u₁) [Quiver.{v₁ + 1} V]
 
 namespace Paths
 
+#print CategoryTheory.Paths.categoryPaths /-
 instance categoryPaths : Category.{max u₁ v₁} (Paths V)
     where
   Hom := fun X Y : V => Quiver.Path X Y
   id X := Quiver.Path.nil
   comp X Y Z f g := Quiver.Path.comp f g
 #align category_theory.paths.category_paths CategoryTheory.Paths.categoryPaths
+-/
 
 variable {V}
 
+#print CategoryTheory.Paths.of /-
 /-- The inclusion of a quiver `V` into its path category, as a prefunctor.
 -/
 @[simps]
@@ -59,9 +64,11 @@ def of : V ⥤q Paths V where
   obj X := X
   map X Y f := f.toPath
 #align category_theory.paths.of CategoryTheory.Paths.of
+-/
 
 attribute [local ext] Functor.ext
 
+#print CategoryTheory.Paths.lift /-
 /-- Any prefunctor from `V` lifts to a functor from `paths V` -/
 def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C
     where
@@ -79,19 +86,38 @@ def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C
       simp only
       rw [ih, category.assoc]
 #align category_theory.paths.lift CategoryTheory.Paths.lift
+-/
 
+/- warning: category_theory.paths.lift_nil -> CategoryTheory.Paths.lift_nil is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (X : V), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X X (Quiver.Path.nil.{succ u1, u2} V _inst_1 X)) (CategoryTheory.CategoryStruct.id.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (Prefunctor.obj.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ X))
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (X : V), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X X (Quiver.Path.nil.{succ u3, u4} V _inst_1 X)) (CategoryTheory.CategoryStruct.id.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ X))
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_nil CategoryTheory.Paths.lift_nilₓ'. -/
 @[simp]
 theorem lift_nil {C} [Category C] (φ : V ⥤q C) (X : V) :
     (lift φ).map Quiver.Path.nil = 𝟙 (φ.obj X) :=
   rfl
 #align category_theory.paths.lift_nil CategoryTheory.Paths.lift_nil
 
+/- warning: category_theory.paths.lift_cons -> CategoryTheory.Paths.lift_cons is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) {X : V} {Y : V} {Z : V} (p : Quiver.Path.{succ u1, u2} V _inst_1 X Y) (f : Quiver.Hom.{succ u1, u2} V _inst_1 Y Z), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Z)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Z (Quiver.Path.cons.{succ u1, u2} V _inst_1 X Y Z p f)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Y) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Z) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Y p) (Prefunctor.map.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ Y Z f))
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) {X : V} {Y : V} {Z : V} (p : Quiver.Path.{succ u3, u4} V _inst_1 X Y) (f : Quiver.Hom.{succ u3, u4} V _inst_1 Y Z), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Z)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Z (Quiver.Path.cons.{succ u3, u4} V _inst_1 X Y Z p f)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Y) (Prefunctor.obj.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ Z) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Y p) (Prefunctor.map.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ Y Z f))
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_cons CategoryTheory.Paths.lift_consₓ'. -/
 @[simp]
 theorem lift_cons {C} [Category C] (φ : V ⥤q C) {X Y Z : V} (p : Quiver.Path X Y) (f : Y ⟶ Z) :
     (lift φ).map (p.cons f) = (lift φ).map p ≫ φ.map f :=
   rfl
 #align category_theory.paths.lift_cons CategoryTheory.Paths.lift_cons
 
+/- warning: category_theory.paths.lift_to_path -> CategoryTheory.Paths.lift_toPath is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) {X : V} {Y : V} (f : Quiver.Hom.{succ u1, u2} V _inst_1 X Y), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) Y)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ) X Y (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 X Y f)) (Prefunctor.map.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) φ X Y f)
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) {X : V} {Y : V} (f : Quiver.Hom.{succ u3, u4} V _inst_1 X Y), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) Y)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ)) X Y (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 X Y f)) (Prefunctor.map.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) φ X Y f)
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPathₓ'. -/
 @[simp]
 theorem lift_toPath {C} [Category C] (φ : V ⥤q C) {X Y : V} (f : X ⟶ Y) :
     (lift φ).map f.toPath = φ.map f :=
@@ -100,6 +126,12 @@ theorem lift_toPath {C} [Category C] (φ : V ⥤q C) {X Y : V} (f : X ⟶ Y) :
   simp
 #align category_theory.paths.lift_to_path CategoryTheory.Paths.lift_toPath
 
+/- warning: category_theory.paths.lift_spec -> CategoryTheory.Paths.lift_spec is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))), Eq.{max (max (succ u2) (succ u1) (succ u4)) (succ u2) (succ u3)} (Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Prefunctor.comp.{u2, succ u1, u2, succ (max u2 u1), u3, succ u4} V _inst_1 (CategoryTheory.Paths.{u2} V) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Paths.of.{u1, u2} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ))) φ
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))), Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Prefunctor.comp.{u4, succ u3, u4, max (succ u4) (succ u3), u2, succ u1} V _inst_1 (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Paths.of.{u3, u4} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ))) φ
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_spec CategoryTheory.Paths.lift_specₓ'. -/
 theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunctor = φ :=
   by
   apply Prefunctor.ext; rotate_left
@@ -111,6 +143,12 @@ theorem lift_spec {C} [Category C] (φ : V ⥤q C) : of ⋙q (lift φ).toPrefunc
     simp only [category.id_comp]
 #align category_theory.paths.lift_spec CategoryTheory.Paths.lift_spec
 
+/- warning: category_theory.paths.lift_unique -> CategoryTheory.Paths.lift_unique is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] (φ : Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Φ : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2), (Eq.{max (max (succ u2) (succ u1) (succ u4)) (succ u2) (succ u3)} (Prefunctor.{succ u1, succ u4, u2, u3} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2))) (Prefunctor.comp.{u2, succ u1, u2, succ (max u2 u1), u3, succ u4} V _inst_1 (CategoryTheory.Paths.{u2} V) (CategoryTheory.CategoryStruct.toQuiver.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Category.toCategoryStruct.{max u2 u1, u2} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Paths.of.{u1, u2} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 Φ)) φ) -> (Eq.{succ (max (max u2 u1) u4 u2 u3)} (CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2) Φ (CategoryTheory.Paths.lift.{u1, u2, u3, u4} V _inst_1 C _inst_2 φ))
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] (φ : Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Φ : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2), (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (Prefunctor.{succ u3, succ u1, u4, u2} V _inst_1 C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2))) (Prefunctor.comp.{u4, succ u3, u4, max (succ u4) (succ u3), u2, succ u1} V _inst_1 (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Paths.of.{u3, u4} V _inst_1) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 Φ)) φ) -> (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2) Φ (CategoryTheory.Paths.lift.{u3, u4, u2, u1} V _inst_1 C _inst_2 φ))
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.lift_unique CategoryTheory.Paths.lift_uniqueₓ'. -/
 theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
     (hΦ : of ⋙q Φ.toPrefunctor = φ) : Φ = lift φ :=
   by
@@ -129,6 +167,12 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
       rw [this, ih]
 #align category_theory.paths.lift_unique CategoryTheory.Paths.lift_unique
 
+/- warning: category_theory.paths.ext_functor -> CategoryTheory.Paths.ext_functor is a dubious translation:
+lean 3 declaration is
+  forall {V : Type.{u2}} [_inst_1 : Quiver.{succ u1, u2} V] {C : Type.{u3}} [_inst_2 : CategoryTheory.Category.{u4, u3} C] {F : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2} {G : CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2} (h_obj : Eq.{max (succ u2) (succ u3)} ((CategoryTheory.Paths.{u2} V) -> C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G)), (forall (a : V) (b : V) (e : Quiver.Hom.{succ u1, u2} V _inst_1 a b), Eq.{succ u4} (Quiver.Hom.{succ u4, u3} C (CategoryTheory.CategoryStruct.toQuiver.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2)) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b)) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a b (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 a b e)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (CategoryTheory.eqToHom.{u4, u3} C _inst_2 (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (congr_fun.{succ u2, succ u3} V (fun (x : V) => C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) h_obj a)) (CategoryTheory.CategoryStruct.comp.{u4, u3} C (CategoryTheory.Category.toCategoryStruct.{u4, u3} C _inst_2) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G b) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (CategoryTheory.Functor.map.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G a b (Quiver.Hom.toPath.{u2, succ u1} V _inst_1 a b e)) (CategoryTheory.eqToHom.{u4, u3} C _inst_2 (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G b) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (congr_fun.{succ u2, succ u3} V (fun (x : V) => C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) (fun (b : V) => CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F b) (Eq.symm.{max (succ u2) (succ u3)} ((CategoryTheory.Paths.{u2} V) -> C) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 F) (CategoryTheory.Functor.obj.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2 G) h_obj) b))))) -> (Eq.{succ (max (max u2 u1) u4 u2 u3)} (CategoryTheory.Functor.{max u2 u1, u4, u2, u3} (CategoryTheory.Paths.{u2} V) (CategoryTheory.Paths.categoryPaths.{u1, u2} V _inst_1) C _inst_2) F G)
+but is expected to have type
+  forall {V : Type.{u4}} [_inst_1 : Quiver.{succ u3, u4} V] {C : Type.{u2}} [_inst_2 : CategoryTheory.Category.{u1, u2} C] {F : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2} {G : CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2} (h_obj : Eq.{max (succ u4) (succ u2)} ((CategoryTheory.Paths.{u4} V) -> C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G))), (forall (a : V) (b : V) (e : Quiver.Hom.{succ u3, u4} V _inst_1 a b), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b)) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a b (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 a b e)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (CategoryTheory.eqToHom.{u1, u2} C _inst_2 (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (congr_fun.{succ u4, succ u2} (CategoryTheory.Paths.{u4} V) (fun (x : CategoryTheory.Paths.{u4} V) => C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) h_obj a)) (CategoryTheory.CategoryStruct.comp.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) b) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (Prefunctor.map.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) a b (Quiver.Hom.toPath.{u4, succ u3} V _inst_1 a b e)) (CategoryTheory.eqToHom.{u1, u2} C _inst_2 (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G) b) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F) b) (congr_fun.{succ u4, succ u2} (CategoryTheory.Paths.{u4} V) (fun (x : CategoryTheory.Paths.{u4} V) => C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Eq.symm.{max (succ u4) (succ u2)} ((CategoryTheory.Paths.{u4} V) -> C) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 F)) (Prefunctor.obj.{max (succ u4) (succ u3), succ u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.CategoryStruct.toQuiver.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Category.toCategoryStruct.{max u4 u3, u4} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1))) C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_2)) (CategoryTheory.Functor.toPrefunctor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2 G)) h_obj) b))))) -> (Eq.{max (max (max (succ u4) (succ u3)) (succ u2)) (succ u1)} (CategoryTheory.Functor.{max u4 u3, u1, u4, u2} (CategoryTheory.Paths.{u4} V) (CategoryTheory.Paths.categoryPaths.{u3, u4} V _inst_1) C _inst_2) F G)
+Case conversion may be inaccurate. Consider using '#align category_theory.paths.ext_functor CategoryTheory.Paths.ext_functorₓ'. -/
 /-- Two functors out of a path category are equal when they agree on singleton paths. -/
 @[ext]
 theorem ext_functor {C} [Category C] {F G : Paths V ⥤ C} (h_obj : F.obj = G.obj)
@@ -150,12 +194,14 @@ end Paths
 
 variable (W : Type u₂) [Quiver.{v₂ + 1} W]
 
+#print CategoryTheory.Prefunctor.mapPath_comp' /-
 -- A restatement of `prefunctor.map_path_comp` using `f ≫ g` instead of `f.comp g`.
 @[simp]
 theorem Prefunctor.mapPath_comp' (F : V ⥤q W) {X Y Z : Paths V} (f : X ⟶ Y) (g : Y ⟶ Z) :
     F.mapPath (f ≫ g) = (F.mapPath f).comp (F.mapPath g) :=
   Prefunctor.mapPath_comp _ _ _
 #align category_theory.prefunctor.map_path_comp' CategoryTheory.Prefunctor.mapPath_comp'
+-/
 
 end
 
@@ -165,24 +211,23 @@ variable {C : Type u₁} [Category.{v₁} C]
 
 open Quiver
 
-/- warning: category_theory.compose_path -> CategoryTheory.composePath is a dubious translation:
-lean 3 declaration is
-  forall {C : Type.{u2}} [_inst_1 : CategoryTheory.Category.{u1, u2} C] {X : C} {Y : C}, (Quiver.Path.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y) -> (Quiver.Hom.{succ u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1)) X Y)
-but is expected to have type
-  forall {C : Type.{u1}} [_inst_1 : CategoryTheory.Category.{u2, u1} C] {X : C} {Y : C}, (Quiver.Path.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) X Y) -> (Quiver.Hom.{succ u2, u1} C (CategoryTheory.CategoryStruct.toQuiver.{u2, u1} C (CategoryTheory.Category.toCategoryStruct.{u2, u1} C _inst_1)) X Y)
-Case conversion may be inaccurate. Consider using '#align category_theory.compose_path CategoryTheory.composePathₓ'. -/
+#print CategoryTheory.composePath /-
 /-- A path in a category can be composed to a single morphism. -/
 @[simp]
 def composePath {X : C} : ∀ {Y : C} (p : Path X Y), X ⟶ Y
   | _, path.nil => 𝟙 X
   | _, path.cons p e => compose_path p ≫ e
 #align category_theory.compose_path CategoryTheory.composePath
+-/
 
+#print CategoryTheory.composePath_toPath /-
 @[simp]
 theorem composePath_toPath {X Y : C} (f : X ⟶ Y) : composePath f.toPath = f :=
   Category.id_comp _
 #align category_theory.compose_path_to_path CategoryTheory.composePath_toPath
+-/
 
+#print CategoryTheory.composePath_comp /-
 @[simp]
 theorem composePath_comp {X Y Z : C} (f : Path X Y) (g : Path Y Z) :
     composePath (f.comp g) = composePath f ≫ composePath g :=
@@ -191,27 +236,35 @@ theorem composePath_comp {X Y Z : C} (f : Path X Y) (g : Path Y Z) :
   · simp
   · simp [ih]
 #align category_theory.compose_path_comp CategoryTheory.composePath_comp
+-/
 
+#print CategoryTheory.composePath_id /-
 @[simp]
 theorem composePath_id {X : Paths C} : composePath (𝟙 X) = 𝟙 X :=
   rfl
 #align category_theory.compose_path_id CategoryTheory.composePath_id
+-/
 
+#print CategoryTheory.composePath_comp' /-
 @[simp]
 theorem composePath_comp' {X Y Z : Paths C} (f : X ⟶ Y) (g : Y ⟶ Z) :
     composePath (f ≫ g) = composePath f ≫ composePath g :=
   composePath_comp f g
 #align category_theory.compose_path_comp' CategoryTheory.composePath_comp'
+-/
 
 variable (C)
 
+#print CategoryTheory.pathComposition /-
 /-- Composition of paths as functor from the path category of a category to the category. -/
 @[simps]
 def pathComposition : Paths C ⥤ C where
   obj X := X
   map X Y f := composePath f
 #align category_theory.path_composition CategoryTheory.pathComposition
+-/
 
+#print CategoryTheory.pathsHomRel /-
 -- TODO: This, and what follows, should be generalized to
 -- the `hom_rel` for the kernel of any functor.
 -- Indeed, this should be part of an equivalence between congruence relations on a category `C`
@@ -222,7 +275,9 @@ two paths are related if they compose to the same morphism. -/
 def pathsHomRel : HomRel (Paths C) := fun X Y p q =>
   (pathComposition C).map p = (pathComposition C).map q
 #align category_theory.paths_hom_rel CategoryTheory.pathsHomRel
+-/
 
+#print CategoryTheory.toQuotientPaths /-
 /-- The functor from a category to the canonical quotient of its path category. -/
 @[simps]
 def toQuotientPaths : C ⥤ Quotient (pathsHomRel C)
@@ -232,14 +287,23 @@ def toQuotientPaths : C ⥤ Quotient (pathsHomRel C)
   map_id' X := Quot.sound (Quotient.CompClosure.of _ _ _ (by simp))
   map_comp' X Y Z f g := Quot.sound (Quotient.CompClosure.of _ _ _ (by simp))
 #align category_theory.to_quotient_paths CategoryTheory.toQuotientPaths
+-/
 
+#print CategoryTheory.quotientPathsTo /-
 /-- The functor from the canonical quotient of a path category of a category
 to the original category. -/
 @[simps]
 def quotientPathsTo : Quotient (pathsHomRel C) ⥤ C :=
   Quotient.lift _ (pathComposition C) fun X Y p q w => w
 #align category_theory.quotient_paths_to CategoryTheory.quotientPathsTo
+-/
 
+/- warning: category_theory.quotient_paths_equiv -> CategoryTheory.quotientPathsEquiv is a dubious translation:
+lean 3 declaration is
+  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Quotient.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) (CategoryTheory.Quotient.category.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) C _inst_1
+but is expected to have type
+  forall (C : Type.{u2}) [_inst_1 : CategoryTheory.Category.{u1, u2} C], CategoryTheory.Equivalence.{max u2 u1, u1, u2, u2} (CategoryTheory.Quotient.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) C (CategoryTheory.Quotient.category.{u2, max u2 u1} (CategoryTheory.Paths.{u2} C) (CategoryTheory.Paths.categoryPaths.{u1, u2} C (CategoryTheory.CategoryStruct.toQuiver.{u1, u2} C (CategoryTheory.Category.toCategoryStruct.{u1, u2} C _inst_1))) (CategoryTheory.pathsHomRel.{u1, u2} C _inst_1)) _inst_1
+Case conversion may be inaccurate. Consider using '#align category_theory.quotient_paths_equiv CategoryTheory.quotientPathsEquivₓ'. -/
 /-- The canonical quotient of the path category of a category
 is equivalent to the original category. -/
 def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C

Changes in mathlib4

mathlib3
mathlib4
chore: classify todo porting notes (#11216)

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

Diff
@@ -181,7 +181,7 @@ theorem composePath_comp {X Y Z : C} (f : Path X Y) (g : Path Y Z) :
 #align category_theory.compose_path_comp CategoryTheory.composePath_comp
 
 @[simp]
--- Porting note: TODO get rid of `(id X : C)` somehow?
+-- Porting note (#11215): TODO get rid of `(id X : C)` somehow?
 theorem composePath_id {X : Paths C} : composePath (𝟙 X) = 𝟙 (id X : C) := rfl
 #align category_theory.compose_path_id CategoryTheory.composePath_id
 
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
@@ -112,7 +112,7 @@ theorem lift_unique {C} [Category C] (φ : V ⥤q C) (Φ : Paths V ⥤ C)
     · simp only [Category.comp_id]
       apply Functor.map_id
     · simp only [Category.comp_id, Category.id_comp] at ih ⊢
-      -- porting note: Had to do substitute `p.cons f'` and `f'.toPath` by their fully qualified
+      -- Porting note: Had to do substitute `p.cons f'` and `f'.toPath` by their fully qualified
       -- versions in this `have` clause (elsewhere too).
       have : Φ.map (Quiver.Path.cons p f') = Φ.map p ≫ Φ.map (Quiver.Hom.toPath f') := by
         convert Functor.map_comp Φ p (Quiver.Hom.toPath f')
@@ -154,7 +154,7 @@ variable {C : Type u₁} [Category.{v₁} C]
 
 open Quiver
 
--- porting note:
+-- Porting note:
 -- This def was originally marked `@[simp]`, but the meaning is different in lean4: lean4#2042
 -- So, the `@[simp]` was removed, and the two equational lemmas below added instead.
 /-- A path in a category can be composed to a single morphism. -/
@@ -181,7 +181,7 @@ theorem composePath_comp {X Y Z : C} (f : Path X Y) (g : Path Y Z) :
 #align category_theory.compose_path_comp CategoryTheory.composePath_comp
 
 @[simp]
--- porting note: TODO get rid of `(id X : C)` somehow?
+-- Porting note: TODO get rid of `(id X : C)` somehow?
 theorem composePath_id {X : Paths C} : composePath (𝟙 X) = 𝟙 (id X : C) := rfl
 #align category_theory.compose_path_id CategoryTheory.composePath_id
 
chore(*): drop $/<| before fun (#9361)

Subset of #9319

Diff
@@ -235,7 +235,7 @@ def quotientPathsEquiv : Quotient (pathsHomRel C) ≌ C where
   unitIso :=
     NatIso.ofComponents
       (fun X => by cases X; rfl)
-      (Quot.ind $ fun f => by
+      (Quot.ind fun f => by
         apply Quot.sound
         apply Quotient.CompClosure.of
         simp [Category.comp_id, Category.id_comp, pathsHomRel])
chore: simplify by rfl (#7039)

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

Diff
@@ -62,7 +62,7 @@ def lift {C} [Category C] (φ : V ⥤q C) : Paths V ⥤ C where
   map {X} {Y} f :=
     @Quiver.Path.rec V _ X (fun Y _ => φ.obj X ⟶ φ.obj Y) (𝟙 <| φ.obj X)
       (fun _ f ihp => ihp ≫ φ.map f) Y f
-  map_id X := by rfl
+  map_id X := rfl
   map_comp f g := by
     induction' g with _ _ g' p ih _ _ _
     · rw [Category.comp_id]
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) 2021 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.path_category
-! leanprover-community/mathlib commit c6dd521ebdce53bb372c527569dd7c25de53a08b
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.CategoryTheory.EqToHom
 import Mathlib.CategoryTheory.Quotient
 import Mathlib.Combinatorics.Quiver.Path
 
+#align_import category_theory.path_category from "leanprover-community/mathlib"@"c6dd521ebdce53bb372c527569dd7c25de53a08b"
+
 /-!
 # The category paths on a quiver.
 When `C` is a quiver, `paths C` is the category of paths.
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -142,7 +142,7 @@ end Paths
 
 variable (W : Type u₂) [Quiver.{v₂ + 1} W]
 
--- A restatement of `prefunctor.map_path_comp` using `f ≫ g` instead of `f.comp g`.
+-- A restatement of `Prefunctor.mapPath_comp` using `f ≫ g` instead of `f.comp g`.
 @[simp]
 theorem Prefunctor.mapPath_comp' (F : V ⥤q W) {X Y Z : Paths V} (f : X ⟶ Y) (g : Y ⟶ Z) :
     F.mapPath (f ≫ g) = (F.mapPath f).comp (F.mapPath g) :=
@@ -204,7 +204,7 @@ def pathComposition : Paths C ⥤ C where
 #align category_theory.path_composition CategoryTheory.pathComposition
 
 -- TODO: This, and what follows, should be generalized to
--- the `hom_rel` for the kernel of any functor.
+-- the `HomRel` for the kernel of any functor.
 -- Indeed, this should be part of an equivalence between congruence relations on a category `C`
 -- and full, essentially surjective functors out of `C`.
 /-- The canonical relation on the path category of a category:
feat: port CategoryTheory.PathCategory (#2580)

Co-authored-by: Rémi Bottinelli <bottine@users.noreply.github.com>

Dependencies 27

28 files ported (100.0%)
8766 lines ported (100.0%)

All dependencies are ported!