category_theory.limits.constructions.over.products
⟷
Mathlib.CategoryTheory.Limits.Constructions.Over.Products
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)
(last sync)
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -3,7 +3,7 @@ Copyright (c) 2018 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
-/
-import CategoryTheory.Over
+import CategoryTheory.Comma.Over
import CategoryTheory.Limits.Shapes.Pullbacks
import CategoryTheory.Limits.Shapes.WidePullbacks
import CategoryTheory.Limits.Shapes.FiniteProducts
mathlib commit https://github.com/leanprover-community/mathlib/commit/65a1391a0106c9204fe45bc73a039f056558cb83
@@ -216,8 +216,8 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) :=
ext
rw [over.hom_mk_left]
have := m.w
- dsimp at this
- rwa [category.comp_id, category.comp_id] at this } } }
+ dsimp at this
+ rwa [category.comp_id, category.comp_id] at this } } }
#align category_theory.over.over_has_terminal CategoryTheory.Over.over_hasTerminal
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/ce64cd319bb6b3e82f31c2d38e79080d377be451
@@ -3,10 +3,10 @@ Copyright (c) 2018 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
-/
-import Mathbin.CategoryTheory.Over
-import Mathbin.CategoryTheory.Limits.Shapes.Pullbacks
-import Mathbin.CategoryTheory.Limits.Shapes.WidePullbacks
-import Mathbin.CategoryTheory.Limits.Shapes.FiniteProducts
+import CategoryTheory.Over
+import CategoryTheory.Limits.Shapes.Pullbacks
+import CategoryTheory.Limits.Shapes.WidePullbacks
+import CategoryTheory.Limits.Shapes.FiniteProducts
#align_import category_theory.limits.constructions.over.products from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
mathlib commit https://github.com/leanprover-community/mathlib/commit/8ea5598db6caeddde6cb734aa179cc2408dbd345
@@ -2,17 +2,14 @@
Copyright (c) 2018 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.limits.constructions.over.products
-! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathbin.CategoryTheory.Over
import Mathbin.CategoryTheory.Limits.Shapes.Pullbacks
import Mathbin.CategoryTheory.Limits.Shapes.WidePullbacks
import Mathbin.CategoryTheory.Limits.Shapes.FiniteProducts
+#align_import category_theory.limits.constructions.over.products from "leanprover-community/mathlib"@"50251fd6309cca5ca2e747882ffecd2729f38c5d"
+
/-!
# Products in the over category
mathlib commit https://github.com/leanprover-community/mathlib/commit/9fb8964792b4237dac6200193a0d533f1b3f7423
@@ -137,6 +137,7 @@ def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
-/
+#print CategoryTheory.Over.ConstructProducts.conesEquiv /-
-- TODO: Can we add `. obviously` to the second arguments of `nat_iso.of_components` and
-- `cones.ext`?
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
@@ -150,6 +151,7 @@ def conesEquiv (B : C) (F : Discrete J ⥤ Over B) :
unitIso := conesEquivUnitIso B F
counitIso := conesEquivCounitIso B F
#align category_theory.over.construct_products.cones_equiv CategoryTheory.Over.ConstructProducts.conesEquiv
+-/
#print CategoryTheory.Over.ConstructProducts.has_over_limit_discrete_of_widePullback_limit /-
/-- Use the above equivalence to prove we have a limit. -/
mathlib commit https://github.com/leanprover-community/mathlib/commit/cca40788df1b8755d5baf17ab2f27dacc2e17acb
@@ -217,8 +217,8 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) :=
ext
rw [over.hom_mk_left]
have := m.w
- dsimp at this
- rwa [category.comp_id, category.comp_id] at this } } }
+ dsimp at this
+ rwa [category.comp_id, category.comp_id] at this } } }
#align category_theory.over.over_has_terminal CategoryTheory.Over.over_hasTerminal
-/
mathlib commit https://github.com/leanprover-community/mathlib/commit/917c3c072e487b3cccdbfeff17e75b40e45f66cb
@@ -137,12 +137,6 @@ def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
-/
-/- warning: category_theory.over.construct_products.cones_equiv -> CategoryTheory.Over.ConstructProducts.conesEquiv is a dubious translation:
-lean 3 declaration is
- forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (B : C) (F : CategoryTheory.Functor.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B)), CategoryTheory.Equivalence.{u2, u2, max u1 u3 u2, max u1 u3 u2} (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B) F) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B) F)
-but is expected to have type
- forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (B : C) (F : CategoryTheory.Functor.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B)), CategoryTheory.Equivalence.{u2, u2, max (max u3 u1) u2, max (max (max u3 u2) u1) u2} (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B) F) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B) F)
-Case conversion may be inaccurate. Consider using '#align category_theory.over.construct_products.cones_equiv CategoryTheory.Over.ConstructProducts.conesEquivₓ'. -/
-- TODO: Can we add `. obviously` to the second arguments of `nat_iso.of_components` and
-- `cones.ext`?
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
mathlib commit https://github.com/leanprover-community/mathlib/commit/95a87616d63b3cb49d3fe678d416fbe9c4217bf4
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
! This file was ported from Lean 3 source module category_theory.limits.constructions.over.products
-! leanprover-community/mathlib commit ac3ae212f394f508df43e37aa093722fa9b65d31
+! leanprover-community/mathlib commit 50251fd6309cca5ca2e747882ffecd2729f38c5d
! Please do not edit these lines, except to modify the commit id
! if you have ported upstream changes.
-/
@@ -16,6 +16,9 @@ import Mathbin.CategoryTheory.Limits.Shapes.FiniteProducts
/-!
# Products in the over category
+> THIS FILE IS SYNCHRONIZED WITH MATHLIB4.
+> Any changes to this file require a corresponding PR to mathlib4.
+
Shows that products in the over category can be derived from wide pullbacks in the base category.
The main result is `over_product_of_wide_pullback`, which says that if `C` has `J`-indexed wide
pullbacks, then `over B` has `J`-indexed products.
mathlib commit https://github.com/leanprover-community/mathlib/commit/c89fe2d59ae06402c3f55f978016d1ada444f57e
@@ -37,6 +37,7 @@ namespace CategoryTheory.Over
namespace ConstructProducts
+#print CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver /-
/-- (Implementation)
Given a product diagram in `C/B`, construct the corresponding wide pullback diagram
in `C`.
@@ -46,7 +47,9 @@ def widePullbackDiagramOfDiagramOver (B : C) {J : Type w} (F : Discrete J ⥤ Ov
WidePullbackShape J ⥤ C :=
WidePullbackShape.wideCospan B (fun j => (F.obj ⟨j⟩).left) fun j => (F.obj ⟨j⟩).Hom
#align category_theory.over.construct_products.wide_pullback_diagram_of_diagram_over CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver
+-/
+#print CategoryTheory.Over.ConstructProducts.conesEquivInverseObj /-
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simps]
def conesEquivInverseObj (B : C) {J : Type w} (F : Discrete J ⥤ Over B) (c : Cone F) :
@@ -62,7 +65,9 @@ def conesEquivInverseObj (B : C) {J : Type w} (F : Discrete J ⥤ Over B) (c : C
· rw [over.w, category.id_comp]
· rw [category.id_comp, category.comp_id] }
#align category_theory.over.construct_products.cones_equiv_inverse_obj CategoryTheory.Over.ConstructProducts.conesEquivInverseObj
+-/
+#print CategoryTheory.Over.ConstructProducts.conesEquivInverse /-
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simps]
def conesEquivInverse (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
@@ -78,9 +83,11 @@ def conesEquivInverse (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
rw [← f.w ⟨j⟩]
rfl }
#align category_theory.over.construct_products.cones_equiv_inverse CategoryTheory.Over.ConstructProducts.conesEquivInverse
+-/
attribute [local tidy] tactic.discrete_cases
+#print CategoryTheory.Over.ConstructProducts.conesEquivFunctor /-
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simps]
def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
@@ -94,9 +101,11 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
Over.homMk (c.π.app (some j)) (by apply c.w (wide_pullback_shape.hom.term j)) } }
map c₁ c₂ f := { Hom := Over.homMk f.Hom }
#align category_theory.over.construct_products.cones_equiv_functor CategoryTheory.Over.ConstructProducts.conesEquivFunctor
+-/
attribute [local tidy] tactic.case_bash
+#print CategoryTheory.Over.ConstructProducts.conesEquivUnitIso /-
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simp]
def conesEquivUnitIso (B : C) (F : Discrete J ⥤ Over B) :
@@ -109,7 +118,9 @@ def conesEquivUnitIso (B : C) (F : Discrete J ⥤ Over B) :
inv := 𝟙 _ } (by tidy))
(by tidy)
#align category_theory.over.construct_products.cones_equiv_unit_iso CategoryTheory.Over.ConstructProducts.conesEquivUnitIso
+-/
+#print CategoryTheory.Over.ConstructProducts.conesEquivCounitIso /-
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simp]
def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
@@ -121,7 +132,14 @@ def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
inv := Over.homMk (𝟙 _) } (by tidy))
(by tidy)
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
+-/
+/- warning: category_theory.over.construct_products.cones_equiv -> CategoryTheory.Over.ConstructProducts.conesEquiv is a dubious translation:
+lean 3 declaration is
+ forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (B : C) (F : CategoryTheory.Functor.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B)), CategoryTheory.Equivalence.{u2, u2, max u1 u3 u2, max u1 u3 u2} (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B) F) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.Over.category.{u3, u2} C _inst_1 B) F)
+but is expected to have type
+ forall {J : Type.{u1}} {C : Type.{u3}} [_inst_1 : CategoryTheory.Category.{u2, u3} C] (B : C) (F : CategoryTheory.Functor.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B)), CategoryTheory.Equivalence.{u2, u2, max (max u3 u1) u2, max (max (max u3 u2) u1) u2} (CategoryTheory.Limits.Cone.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B) F) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, u3} (CategoryTheory.Limits.WidePullbackShape.{u1} J) (CategoryTheory.Limits.WidePullbackShape.category.{u1} J) C _inst_1 (CategoryTheory.Over.ConstructProducts.widePullbackDiagramOfDiagramOver.{u1, u2, u3} C _inst_1 B J F)) (CategoryTheory.Limits.Cone.category.{u1, u2, u1, max u3 u2} (CategoryTheory.Discrete.{u1} J) (CategoryTheory.discreteCategory.{u1} J) (CategoryTheory.Over.{u2, u3} C _inst_1 B) (CategoryTheory.instCategoryOver.{u2, u3} C _inst_1 B) F)
+Case conversion may be inaccurate. Consider using '#align category_theory.over.construct_products.cones_equiv CategoryTheory.Over.ConstructProducts.conesEquivₓ'. -/
-- TODO: Can we add `. obviously` to the second arguments of `nat_iso.of_components` and
-- `cones.ext`?
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
@@ -136,42 +154,53 @@ def conesEquiv (B : C) (F : Discrete J ⥤ Over B) :
counitIso := conesEquivCounitIso B F
#align category_theory.over.construct_products.cones_equiv CategoryTheory.Over.ConstructProducts.conesEquiv
+#print CategoryTheory.Over.ConstructProducts.has_over_limit_discrete_of_widePullback_limit /-
/-- Use the above equivalence to prove we have a limit. -/
-theorem has_over_limit_discrete_of_wide_pullback_limit {B : C} (F : Discrete J ⥤ Over B)
+theorem has_over_limit_discrete_of_widePullback_limit {B : C} (F : Discrete J ⥤ Over B)
[HasLimit (widePullbackDiagramOfDiagramOver B F)] : HasLimit F :=
HasLimit.mk
{ Cone := _
IsLimit :=
IsLimit.ofRightAdjoint (conesEquiv B F).Functor
(limit.isLimit (widePullbackDiagramOfDiagramOver B F)) }
-#align category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit CategoryTheory.Over.ConstructProducts.has_over_limit_discrete_of_wide_pullback_limit
+#align category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit CategoryTheory.Over.ConstructProducts.has_over_limit_discrete_of_widePullback_limit
+-/
+#print CategoryTheory.Over.ConstructProducts.over_product_of_widePullback /-
/-- Given a wide pullback in `C`, construct a product in `C/B`. -/
-theorem over_product_of_wide_pullback [HasLimitsOfShape (WidePullbackShape J) C] {B : C} :
+theorem over_product_of_widePullback [HasLimitsOfShape (WidePullbackShape J) C] {B : C} :
HasLimitsOfShape (Discrete J) (Over B) :=
- { HasLimit := fun F => has_over_limit_discrete_of_wide_pullback_limit F }
-#align category_theory.over.construct_products.over_product_of_wide_pullback CategoryTheory.Over.ConstructProducts.over_product_of_wide_pullback
+ { HasLimit := fun F => has_over_limit_discrete_of_widePullback_limit F }
+#align category_theory.over.construct_products.over_product_of_wide_pullback CategoryTheory.Over.ConstructProducts.over_product_of_widePullback
+-/
+#print CategoryTheory.Over.ConstructProducts.over_binaryProduct_of_pullback /-
/-- Given a pullback in `C`, construct a binary product in `C/B`. -/
-theorem over_binary_product_of_pullback [HasPullbacks C] {B : C} : HasBinaryProducts (Over B) :=
- over_product_of_wide_pullback
-#align category_theory.over.construct_products.over_binary_product_of_pullback CategoryTheory.Over.ConstructProducts.over_binary_product_of_pullback
+theorem over_binaryProduct_of_pullback [HasPullbacks C] {B : C} : HasBinaryProducts (Over B) :=
+ over_product_of_widePullback
+#align category_theory.over.construct_products.over_binary_product_of_pullback CategoryTheory.Over.ConstructProducts.over_binaryProduct_of_pullback
+-/
+#print CategoryTheory.Over.ConstructProducts.over_products_of_widePullbacks /-
/-- Given all wide pullbacks in `C`, construct products in `C/B`. -/
-theorem over_products_of_wide_pullbacks [HasWidePullbacks.{w} C] {B : C} :
- HasProducts.{w} (Over B) := fun J => over_product_of_wide_pullback
-#align category_theory.over.construct_products.over_products_of_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_products_of_wide_pullbacks
+theorem over_products_of_widePullbacks [HasWidePullbacks.{w} C] {B : C} :
+ HasProducts.{w} (Over B) := fun J => over_product_of_widePullback
+#align category_theory.over.construct_products.over_products_of_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_products_of_widePullbacks
+-/
+#print CategoryTheory.Over.ConstructProducts.over_finiteProducts_of_finiteWidePullbacks /-
/-- Given all finite wide pullbacks in `C`, construct finite products in `C/B`. -/
-theorem over_finite_products_of_finite_wide_pullbacks [HasFiniteWidePullbacks C] {B : C} :
+theorem over_finiteProducts_of_finiteWidePullbacks [HasFiniteWidePullbacks C] {B : C} :
HasFiniteProducts (Over B) :=
- ⟨fun n => over_product_of_wide_pullback⟩
-#align category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_finite_products_of_finite_wide_pullbacks
+ ⟨fun n => over_product_of_widePullback⟩
+#align category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_finiteProducts_of_finiteWidePullbacks
+-/
end ConstructProducts
attribute [local tidy] tactic.discrete_cases
+#print CategoryTheory.Over.over_hasTerminal /-
/-- Construct terminal object in the over category. This isn't an instance as it's not typically the
way we want to define terminal objects.
(For instance, this gives a terminal object which is different from the generic one given by
@@ -194,6 +223,7 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) :=
dsimp at this
rwa [category.comp_id, category.comp_id] at this } } }
#align category_theory.over.over_has_terminal CategoryTheory.Over.over_hasTerminal
+-/
end CategoryTheory.Over
mathlib commit https://github.com/leanprover-community/mathlib/commit/9da1b3534b65d9661eb8f42443598a92bbb49211
@@ -52,9 +52,9 @@ def widePullbackDiagramOfDiagramOver (B : C) {J : Type w} (F : Discrete J ⥤ Ov
def conesEquivInverseObj (B : C) {J : Type w} (F : Discrete J ⥤ Over B) (c : Cone F) :
Cone (widePullbackDiagramOfDiagramOver B F)
where
- x := c.x.left
+ pt := c.pt.left
π :=
- { app := fun X => Option.casesOn X c.x.Hom fun j : J => (c.π.app ⟨j⟩).left
+ { app := fun X => Option.casesOn X c.pt.Hom fun j : J => (c.π.app ⟨j⟩).left
-- `tidy` can do this using `case_bash`, but let's try to be a good `-T50000` citizen:
naturality' := fun X Y f => by
dsimp; cases X <;> cases Y <;> cases f
@@ -87,7 +87,7 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
Cone (widePullbackDiagramOfDiagramOver B F) ⥤ Cone F
where
obj c :=
- { x := Over.mk (c.π.app none)
+ { pt := Over.mk (c.π.app none)
π :=
{
app := fun ⟨j⟩ =>
@@ -182,7 +182,7 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) :=
HasLimit := fun F =>
HasLimit.mk
{ Cone :=
- { x := Over.mk (𝟙 _)
+ { pt := Over.mk (𝟙 _)
π := { app := fun p => p.as.elim } }
IsLimit :=
{ lift := fun s => Over.homMk _
mathlib commit https://github.com/leanprover-community/mathlib/commit/eb0cb4511aaef0da2462207b67358a0e1fe1e2ee
@@ -137,36 +137,36 @@ def conesEquiv (B : C) (F : Discrete J ⥤ Over B) :
#align category_theory.over.construct_products.cones_equiv CategoryTheory.Over.ConstructProducts.conesEquiv
/-- Use the above equivalence to prove we have a limit. -/
-theorem hasOverLimitDiscreteOfWidePullbackLimit {B : C} (F : Discrete J ⥤ Over B)
+theorem has_over_limit_discrete_of_wide_pullback_limit {B : C} (F : Discrete J ⥤ Over B)
[HasLimit (widePullbackDiagramOfDiagramOver B F)] : HasLimit F :=
HasLimit.mk
{ Cone := _
IsLimit :=
IsLimit.ofRightAdjoint (conesEquiv B F).Functor
(limit.isLimit (widePullbackDiagramOfDiagramOver B F)) }
-#align category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit CategoryTheory.Over.ConstructProducts.hasOverLimitDiscreteOfWidePullbackLimit
+#align category_theory.over.construct_products.has_over_limit_discrete_of_wide_pullback_limit CategoryTheory.Over.ConstructProducts.has_over_limit_discrete_of_wide_pullback_limit
/-- Given a wide pullback in `C`, construct a product in `C/B`. -/
-theorem overProductOfWidePullback [HasLimitsOfShape (WidePullbackShape J) C] {B : C} :
+theorem over_product_of_wide_pullback [HasLimitsOfShape (WidePullbackShape J) C] {B : C} :
HasLimitsOfShape (Discrete J) (Over B) :=
- { HasLimit := fun F => hasOverLimitDiscreteOfWidePullbackLimit F }
-#align category_theory.over.construct_products.over_product_of_wide_pullback CategoryTheory.Over.ConstructProducts.overProductOfWidePullback
+ { HasLimit := fun F => has_over_limit_discrete_of_wide_pullback_limit F }
+#align category_theory.over.construct_products.over_product_of_wide_pullback CategoryTheory.Over.ConstructProducts.over_product_of_wide_pullback
/-- Given a pullback in `C`, construct a binary product in `C/B`. -/
theorem over_binary_product_of_pullback [HasPullbacks C] {B : C} : HasBinaryProducts (Over B) :=
- overProductOfWidePullback
+ over_product_of_wide_pullback
#align category_theory.over.construct_products.over_binary_product_of_pullback CategoryTheory.Over.ConstructProducts.over_binary_product_of_pullback
/-- Given all wide pullbacks in `C`, construct products in `C/B`. -/
theorem over_products_of_wide_pullbacks [HasWidePullbacks.{w} C] {B : C} :
- HasProducts.{w} (Over B) := fun J => overProductOfWidePullback
+ HasProducts.{w} (Over B) := fun J => over_product_of_wide_pullback
#align category_theory.over.construct_products.over_products_of_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_products_of_wide_pullbacks
/-- Given all finite wide pullbacks in `C`, construct finite products in `C/B`. -/
-theorem overFiniteProductsOfFiniteWidePullbacks [HasFiniteWidePullbacks C] {B : C} :
+theorem over_finite_products_of_finite_wide_pullbacks [HasFiniteWidePullbacks C] {B : C} :
HasFiniteProducts (Over B) :=
- ⟨fun n => overProductOfWidePullback⟩
-#align category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks CategoryTheory.Over.ConstructProducts.overFiniteProductsOfFiniteWidePullbacks
+ ⟨fun n => over_product_of_wide_pullback⟩
+#align category_theory.over.construct_products.over_finite_products_of_finite_wide_pullbacks CategoryTheory.Over.ConstructProducts.over_finite_products_of_finite_wide_pullbacks
end ConstructProducts
@@ -186,8 +186,8 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) :=
π := { app := fun p => p.as.elim } }
IsLimit :=
{ lift := fun s => Over.homMk _
- fac' := fun _ j => j.as.elim
- uniq' := fun s m _ => by
+ fac := fun _ j => j.as.elim
+ uniq := fun s m _ => by
ext
rw [over.hom_mk_left]
have := m.w
mathlib commit https://github.com/leanprover-community/mathlib/commit/bd9851ca476957ea4549eb19b40e7b5ade9428cc
Empty lines were removed by executing the following Python script twice
import os
import re
# Loop through each file in the repository
for dir_path, dirs, files in os.walk('.'):
for filename in files:
if filename.endswith('.lean'):
file_path = os.path.join(dir_path, filename)
# Open the file and read its contents
with open(file_path, 'r') as file:
content = file.read()
# Use a regular expression to replace sequences of "variable" lines separated by empty lines
# with sequences without empty lines
modified_content = re.sub(r'(variable.*\n)\n(variable(?! .* in))', r'\1\2', content)
# Write the modified content back to the file
with open(file_path, 'w') as file:
file.write(modified_content)
@@ -24,9 +24,7 @@ universe w v u -- morphism levels before object levels. See note [category_theor
open CategoryTheory CategoryTheory.Limits
variable {J : Type w}
-
variable {C : Type u} [Category.{v} C]
-
variable {X : C}
namespace CategoryTheory.Over
@@ -75,7 +75,7 @@ def conesEquivInverse (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
-- Porting note: this should help with the additional `naturality` proof we now have to give in
-- `conesEquivFunctor`, but doesn't.
--- attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
+-- attribute [local aesop safe cases (rule_sets := [CategoryTheory])] Discrete
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simps]
@@ -92,7 +92,7 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
-- Porting note: unfortunately `aesop` can't cope with a `cases` rule here for the type synonym
-- `WidePullbackShape`.
--- attribute [local aesop safe cases (rule_sets [CategoryTheory])] WidePullbackShape
+-- attribute [local aesop safe cases (rule_sets := [CategoryTheory])] WidePullbackShape
-- If this worked we could avoid the `rintro` in `conesEquivUnitIso`.
/-- (Impl) A preliminary definition to avoid timeouts. -/
@@ -85,7 +85,7 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
{ pt := Over.mk (c.π.app none)
π :=
{ app := fun ⟨j⟩ => Over.homMk (c.π.app (some j)) (c.w (WidePullbackShape.Hom.term j))
- -- Porting note: Added a proof for `naturality`
+ -- Porting note (#10888): added proof for `naturality`
naturality := fun ⟨X⟩ ⟨Y⟩ ⟨⟨f⟩⟩ => by dsimp at f ⊢; aesop_cat } }
map f := { hom := Over.homMk f.hom }
#align category_theory.over.construct_products.cones_equiv_functor CategoryTheory.Over.ConstructProducts.conesEquivFunctor
@@ -3,7 +3,7 @@ Copyright (c) 2018 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
-/
-import Mathlib.CategoryTheory.Over
+import Mathlib.CategoryTheory.Comma.Over
import Mathlib.CategoryTheory.Limits.Shapes.Pullbacks
import Mathlib.CategoryTheory.Limits.Shapes.WidePullbacks
import Mathlib.CategoryTheory.Limits.Shapes.FiniteProducts
@@ -64,7 +64,7 @@ def conesEquivInverse (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
Cone F ⥤ Cone (widePullbackDiagramOfDiagramOver B F) where
obj := conesEquivInverseObj B F
map f :=
- { Hom := f.Hom.left
+ { hom := f.hom.left
w := fun j => by
cases' j with j
· simp
@@ -87,7 +87,7 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
{ app := fun ⟨j⟩ => Over.homMk (c.π.app (some j)) (c.w (WidePullbackShape.Hom.term j))
-- Porting note: Added a proof for `naturality`
naturality := fun ⟨X⟩ ⟨Y⟩ ⟨⟨f⟩⟩ => by dsimp at f ⊢; aesop_cat } }
- map f := { Hom := Over.homMk f.Hom }
+ map f := { hom := Over.homMk f.hom }
#align category_theory.over.construct_products.cones_equiv_functor CategoryTheory.Over.ConstructProducts.conesEquivFunctor
-- Porting note: unfortunately `aesop` can't cope with a `cases` rule here for the type synonym
@@ -2,17 +2,14 @@
Copyright (c) 2018 Johan Commelin. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Johan Commelin, Reid Barton, Bhavik Mehta
-
-! This file was ported from Lean 3 source module category_theory.limits.constructions.over.products
-! leanprover-community/mathlib commit ac3ae212f394f508df43e37aa093722fa9b65d31
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
-/
import Mathlib.CategoryTheory.Over
import Mathlib.CategoryTheory.Limits.Shapes.Pullbacks
import Mathlib.CategoryTheory.Limits.Shapes.WidePullbacks
import Mathlib.CategoryTheory.Limits.Shapes.FiniteProducts
+#align_import category_theory.limits.constructions.over.products from "leanprover-community/mathlib"@"ac3ae212f394f508df43e37aa093722fa9b65d31"
+
/-!
# Products in the over category
Adds a global Aesop cases
rule for the Discrete
category. This rule was previously added locally in several places.
@@ -165,8 +165,6 @@ theorem over_finiteProducts_of_finiteWidePullbacks [HasFiniteWidePullbacks C] {B
end ConstructProducts
-attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
-
/-- Construct terminal object in the over category. This isn't an instance as it's not typically the
way we want to define terminal objects.
(For instance, this gives a terminal object which is different from the generic one given by
@@ -103,11 +103,10 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
def conesEquivUnitIso (B : C) (F : Discrete J ⥤ Over B) :
𝟭 (Cone (widePullbackDiagramOfDiagramOver B F)) ≅
conesEquivFunctor B F ⋙ conesEquivInverse B F :=
- NatIso.ofComponents
- (fun _ => Cones.ext
- { hom := 𝟙 _
- inv := 𝟙 _ } (by rintro (j | j) <;> aesop_cat))
- (by aesop_cat)
+ NatIso.ofComponents fun _ => Cones.ext
+ { hom := 𝟙 _
+ inv := 𝟙 _ }
+ (by rintro (j | j) <;> aesop_cat)
#align category_theory.over.construct_products.cones_equiv_unit_iso CategoryTheory.Over.ConstructProducts.conesEquivUnitIso
-- TODO: Can we add `:= by aesop` to the second arguments of `NatIso.ofComponents` and
@@ -116,11 +115,9 @@ def conesEquivUnitIso (B : C) (F : Discrete J ⥤ Over B) :
@[simp]
def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
conesEquivInverse B F ⋙ conesEquivFunctor B F ≅ 𝟭 (Cone F) :=
- NatIso.ofComponents
- (fun _ => Cones.ext
- { hom := Over.homMk (𝟙 _)
- inv := Over.homMk (𝟙 _) } (by aesop_cat))
- (by aesop_cat)
+ NatIso.ofComponents fun _ => Cones.ext
+ { hom := Over.homMk (𝟙 _)
+ inv := Over.homMk (𝟙 _) }
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
@@ -76,7 +76,9 @@ def conesEquivInverse (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
rfl }
#align category_theory.over.construct_products.cones_equiv_inverse CategoryTheory.Over.ConstructProducts.conesEquivInverse
---attribute [local tidy] tactic.discrete_cases -- Porting note: no tidy
+-- Porting note: this should help with the additional `naturality` proof we now have to give in
+-- `conesEquivFunctor`, but doesn't.
+-- attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simps]
@@ -91,7 +93,10 @@ def conesEquivFunctor (B : C) {J : Type w} (F : Discrete J ⥤ Over B) :
map f := { Hom := Over.homMk f.Hom }
#align category_theory.over.construct_products.cones_equiv_functor CategoryTheory.Over.ConstructProducts.conesEquivFunctor
---attribute [local tidy] tactic.case_bash -- Porting note: no tidy
+-- Porting note: unfortunately `aesop` can't cope with a `cases` rule here for the type synonym
+-- `WidePullbackShape`.
+-- attribute [local aesop safe cases (rule_sets [CategoryTheory])] WidePullbackShape
+-- If this worked we could avoid the `rintro` in `conesEquivUnitIso`.
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simp]
@@ -105,6 +110,8 @@ def conesEquivUnitIso (B : C) (F : Discrete J ⥤ Over B) :
(by aesop_cat)
#align category_theory.over.construct_products.cones_equiv_unit_iso CategoryTheory.Over.ConstructProducts.conesEquivUnitIso
+-- TODO: Can we add `:= by aesop` to the second arguments of `NatIso.ofComponents` and
+-- `Cones.ext`?
/-- (Impl) A preliminary definition to avoid timeouts. -/
@[simp]
def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
@@ -116,8 +123,6 @@ def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
(by aesop_cat)
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
--- TODO: Can we add `:= by aesop` to the second arguments of `NatIso.ofComponents` and
--- `Cones.ext`?
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
-/
@[simps]
@@ -163,7 +168,7 @@ theorem over_finiteProducts_of_finiteWidePullbacks [HasFiniteWidePullbacks C] {B
end ConstructProducts
---attribute [local tidy] tactic.discrete_cases -- Porting note: no tidy
+attribute [local aesop safe cases (rule_sets [CategoryTheory])] Discrete
/-- Construct terminal object in the over category. This isn't an instance as it's not typically the
way we want to define terminal objects.
@@ -175,17 +180,14 @@ theorem over_hasTerminal (B : C) : HasTerminal (Over B) where
{ cone :=
{ pt := Over.mk (𝟙 _)
π :=
- { app := fun p => p.as.elim
- -- Porting note: Added a proof for `naturality`
- naturality := fun X => X.as.elim } }
+ { app := fun p => p.as.elim } }
isLimit :=
{ lift := fun s => Over.homMk _
fac := fun _ j => j.as.elim
uniq := fun s m _ => by
simp only
ext
- -- Porting note: Added a proof to `Over.homMk_left`
- rw [Over.homMk_left _ (by dsimp; rw [Category.comp_id])]
+ rw [Over.homMk_left _]
have := m.w
dsimp at this
rwa [Category.comp_id, Category.comp_id] at this } }
@@ -116,8 +116,8 @@ def conesEquivCounitIso (B : C) (F : Discrete J ⥤ Over B) :
(by aesop_cat)
#align category_theory.over.construct_products.cones_equiv_counit_iso CategoryTheory.Over.ConstructProducts.conesEquivCounitIso
--- TODO: Can we add `. obviously` to the second arguments of `nat_iso.of_components` and
--- `cones.ext`?
+-- TODO: Can we add `:= by aesop` to the second arguments of `NatIso.ofComponents` and
+-- `Cones.ext`?
/-- (Impl) Establish an equivalence between the category of cones for `F` and for the "grown" `F`.
-/
@[simps]
The unported dependencies are