category_theory.path_category
⟷
Mathlib.CategoryTheory.PathCategory
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.
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(no changes)
(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)
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -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"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -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.
mathlib commit https://github.com/leanprover-community/mathlib/commit/2a0ce625dbb0ffbc7d1316597de0b25c1ec75303
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -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]
mathlib commit https://github.com/leanprover-community/mathlib/commit/21e3562c5e12d846c7def5eff8cdbc520d7d4936
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/195fcd60ff2bfe392543bceb0ec2adcdb472db4c
@@ -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
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
@@ -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
Homogenises porting notes via capitalisation and addition of whitespace.
It makes the following changes:
@@ -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
@@ -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])
@@ -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]
@@ -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.
fix-comments.py
on all files.@@ -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:
All dependencies are ported!