combinatorics.quiver.pushMathlib.Combinatorics.Quiver.Push

This file has been ported!

Changes since the initial port

The following section lists changes to this file in mathlib3 and mathlib4 that occured after the initial port. Most recent changes are shown first. Hovering over a commit will show all commits associated with the same mathlib3 commit.

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

feat(combinatorics/quiver/*): More edge reversal constructions (#17665)

Move

  • quiver.symmetrify,
  • quiver.has_reverse,
  • quiver.has_involutive_reverse,
  • quiver.reverse,
  • quiver.path.reverse,
  • quiver.symmetrify.of,
  • quiver.lift,
  • associated lemmas,

from combinatorics/quiver/connected_component.lean to combinatorics/quiver/symmetrify.lean.

Add

  • the class prefunctor.map_reverse witnessing that a prefunctor maps reverses to reverses, and change the lemmas taking this property as an explicit argument.
  • prefunctor.symmetrify mapping a prefunctor to the prefunctor between symmetrifications,
  • associated lemmas,

to combinatorics/quiver/symmetrify.lean.

Move quiver.hom.to_pos and quiver.hom.to_neg from category_theory/groupoid/free_groupoid.lean to combinatorics/quiver/symmetrify.lean.

Add map_reverse instance for functors between groupoids.

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

Diff
@@ -21,6 +21,8 @@ universes v v₁ v₂ u u₁ u₂
 
 variables {V : Type*} [quiver V] {W : Type*} (σ : V → W)
 
+namespace quiver
+
 /-- The `quiver` instance obtained by pushing arrows of `V` along the map `σ : V → W` -/
 @[nolint unused_arguments]
 def push (σ : V → W) := W
@@ -80,3 +82,5 @@ begin
 end
 
 end push
+
+end quiver

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(first ported)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,7 +3,7 @@ Copyright (c) 2022 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
 -/
-import Mathbin.Combinatorics.Quiver.Basic
+import Combinatorics.Quiver.Basic
 
 #align_import combinatorics.quiver.push from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
 
Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
-
-! This file was ported from Lean 3 source module combinatorics.quiver.push
-! leanprover-community/mathlib commit 448144f7ae193a8990cb7473c9e9a01990f64ac7
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Combinatorics.Quiver.Basic
 
+#align_import combinatorics.quiver.push from "leanprover-community/mathlib"@"448144f7ae193a8990cb7473c9e9a01990f64ac7"
+
 /-!
 
 # Pushing a quiver structure along a map
Diff
@@ -29,11 +29,13 @@ variable {V : Type _} [Quiver V] {W : Type _} (σ : V → W)
 
 namespace Quiver
 
+#print Quiver.Push /-
 /-- The `quiver` instance obtained by pushing arrows of `V` along the map `σ : V → W` -/
 @[nolint unused_arguments]
 def Push (σ : V → W) :=
   W
 #align quiver.push Quiver.Push
+-/
 
 instance [h : Nonempty W] : Nonempty (Push σ) :=
   h
@@ -59,15 +61,15 @@ def of : V ⥤q Push σ where
 #align quiver.push.of Quiver.Push.of
 -/
 
+#print Quiver.Push.of_obj /-
 @[simp]
 theorem of_obj : (of σ).obj = σ :=
   rfl
 #align quiver.push.of_obj Quiver.Push.of_obj
+-/
 
 variable {W' : Type _} [Quiver W'] (φ : V ⥤q W') (τ : W → W') (h : ∀ x, φ.obj x = τ (σ x))
 
-include φ h
-
 #print Quiver.Push.lift /-
 /-- Given a function `τ : W → W'` and a prefunctor `φ : V ⥤q W'`, one can extend `τ` to be
 a prefunctor `W ⥤q W'` if `τ` and `σ` factorize `φ` at the level of objects, where `W` is given
@@ -80,10 +82,13 @@ def lift : Push σ ⥤q W' where
 #align quiver.push.lift Quiver.Push.lift
 -/
 
+#print Quiver.Push.lift_obj /-
 theorem lift_obj : (lift σ φ τ h).obj = τ :=
   rfl
 #align quiver.push.lift_obj Quiver.Push.lift_obj
+-/
 
+#print Quiver.Push.lift_comp /-
 theorem lift_comp : of σ ⋙q lift σ φ τ h = φ :=
   by
   fapply Prefunctor.ext
@@ -95,7 +100,9 @@ theorem lift_comp : of σ ⋙q lift σ φ τ h = φ :=
     iterate 2 apply (eq_rec_hEq _ _).trans
     rfl
 #align quiver.push.lift_comp Quiver.Push.lift_comp
+-/
 
+#print Quiver.Push.lift_unique /-
 theorem lift_unique (Φ : Push σ ⥤q W') (Φ₀ : Φ.obj = τ) (Φcomp : of σ ⋙q Φ = φ) :
     Φ = lift σ φ τ h := by
   dsimp only [of, lift]
@@ -103,6 +110,7 @@ theorem lift_unique (Φ : Push σ ⥤q W') (Φ₀ : Φ.obj = τ) (Φcomp : of σ
   · rintro; simp_rw [← Φ₀]
   · rintro _ _ ⟨⟩; subst_vars; simp only [Prefunctor.comp_map, cast_eq]; rfl
 #align quiver.push.lift_unique Quiver.Push.lift_unique
+-/
 
 end Push
 
Diff
@@ -29,12 +29,6 @@ variable {V : Type _} [Quiver V] {W : Type _} (σ : V → W)
 
 namespace Quiver
 
-/- warning: quiver.push -> Quiver.Push is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u_1}} [_inst_1 : Quiver.{u_2, u_1} V] {W : Type.{u_3}}, (V -> W) -> Type.{u_3}
-but is expected to have type
-  forall {V : Type.{u_1}} {_inst_1 : Type.{u_2}}, (V -> _inst_1) -> Type.{u_2}
-Case conversion may be inaccurate. Consider using '#align quiver.push Quiver.Pushₓ'. -/
 /-- The `quiver` instance obtained by pushing arrows of `V` along the map `σ : V → W` -/
 @[nolint unused_arguments]
 def Push (σ : V → W) :=
@@ -65,12 +59,6 @@ def of : V ⥤q Push σ where
 #align quiver.push.of Quiver.Push.of
 -/
 
-/- warning: quiver.push.of_obj -> Quiver.Push.of_obj is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u1}} [_inst_1 : Quiver.{u2, u1} V] {W : Type.{u3}} (σ : V -> W), Eq.{max (succ u1) (succ u3)} (V -> (Quiver.Push.{u1, u2, u3} V _inst_1 W σ)) (Prefunctor.obj.{u2, succ (max u1 u3 u2), u1, u3} V _inst_1 (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.of.{u1, u2, u3} V _inst_1 W σ)) σ
-but is expected to have type
-  forall {V : Type.{u3}} [_inst_1 : Quiver.{u1, u3} V] {W : Type.{u2}} (σ : V -> W), Eq.{max (succ u3) (succ u2)} (V -> (Quiver.Push.{u3, u2} V W σ)) (Prefunctor.obj.{u1, max (max (succ u3) (succ u1)) (succ u2), u3, u2} V _inst_1 (Quiver.Push.{u3, u2} V W σ) (Quiver.instQuiverPush.{u3, u1, u2} V _inst_1 W σ) (Quiver.Push.of.{u3, u1, u2} V _inst_1 W σ)) σ
-Case conversion may be inaccurate. Consider using '#align quiver.push.of_obj Quiver.Push.of_objₓ'. -/
 @[simp]
 theorem of_obj : (of σ).obj = σ :=
   rfl
@@ -92,22 +80,10 @@ def lift : Push σ ⥤q W' where
 #align quiver.push.lift Quiver.Push.lift
 -/
 
-/- warning: quiver.push.lift_obj -> Quiver.Push.lift_obj is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u1}} [_inst_1 : Quiver.{u2, u1} V] {W : Type.{u3}} (σ : V -> W) {W' : Type.{u4}} [_inst_2 : Quiver.{u5, u4} W'] (φ : Prefunctor.{u2, u5, u1, u4} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u4} W' (Prefunctor.obj.{u2, u5, u1, u4} V _inst_1 W' _inst_2 φ x) (τ (σ x))), Eq.{max (succ u3) (succ u4)} ((Quiver.Push.{u1, u2, u3} V _inst_1 W σ) -> W') (Prefunctor.obj.{succ (max u1 u3 u2), u5, u3, u4} (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2 (Quiver.Push.lift.{u1, u2, u3, u4, u5} V _inst_1 W σ W' _inst_2 φ τ h)) τ
-but is expected to have type
-  forall {V : Type.{u3}} [_inst_1 : Quiver.{u2, u3} V] {W : Type.{u5}} (σ : V -> W) {W' : Type.{u4}} [_inst_2 : Quiver.{u1, u4} W'] (φ : Prefunctor.{u2, u1, u3, u4} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u4} W' (Prefunctor.obj.{u2, u1, u3, u4} V _inst_1 W' _inst_2 φ x) (τ (σ x))), Eq.{max (succ u5) (succ u4)} ((Quiver.Push.{u3, u5} V W σ) -> W') (Prefunctor.obj.{max (max (succ u3) (succ u2)) (succ u5), u1, u5, u4} (Quiver.Push.{u3, u5} V W σ) (Quiver.instQuiverPush.{u3, u2, u5} V _inst_1 W σ) W' _inst_2 (Quiver.Push.lift.{u3, u2, u5, u4, u1} V _inst_1 W σ W' _inst_2 φ τ h)) τ
-Case conversion may be inaccurate. Consider using '#align quiver.push.lift_obj Quiver.Push.lift_objₓ'. -/
 theorem lift_obj : (lift σ φ τ h).obj = τ :=
   rfl
 #align quiver.push.lift_obj Quiver.Push.lift_obj
 
-/- warning: quiver.push.lift_comp -> Quiver.Push.lift_comp is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u1}} [_inst_1 : Quiver.{u2, u1} V] {W : Type.{u3}} (σ : V -> W) {W' : Type.{u4}} [_inst_2 : Quiver.{u5, u4} W'] (φ : Prefunctor.{u2, u5, u1, u4} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u4} W' (Prefunctor.obj.{u2, u5, u1, u4} V _inst_1 W' _inst_2 φ x) (τ (σ x))), Eq.{max (imax (succ u1) (succ u1) u2 u5) (succ u1) (succ u4)} (Prefunctor.{u2, u5, u1, u4} V _inst_1 W' _inst_2) (Prefunctor.comp.{u1, u2, u3, succ (max u1 u3 u2), u4, u5} V _inst_1 (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2 (Quiver.Push.of.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.lift.{u1, u2, u3, u4, u5} V _inst_1 W σ W' _inst_2 φ τ h)) φ
-but is expected to have type
-  forall {V : Type.{u5}} [_inst_1 : Quiver.{u4, u5} V] {W : Type.{u1}} (σ : V -> W) {W' : Type.{u3}} [_inst_2 : Quiver.{u2, u3} W'] (φ : Prefunctor.{u4, u2, u5, u3} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u3} W' (Prefunctor.obj.{u4, u2, u5, u3} V _inst_1 W' _inst_2 φ x) (τ (σ x))), Eq.{max (max (max (succ u5) u4) (succ u3)) u2} (Prefunctor.{u4, u2, u5, u3} V _inst_1 W' _inst_2) (Prefunctor.comp.{u5, u4, u1, max (max (succ u5) (succ u4)) (succ u1), u3, u2} V _inst_1 (Quiver.Push.{u5, u1} V W σ) (Quiver.instQuiverPush.{u5, u4, u1} V _inst_1 W σ) W' _inst_2 (Quiver.Push.of.{u5, u4, u1} V _inst_1 W σ) (Quiver.Push.lift.{u5, u4, u1, u3, u2} V _inst_1 W σ W' _inst_2 φ τ h)) φ
-Case conversion may be inaccurate. Consider using '#align quiver.push.lift_comp Quiver.Push.lift_compₓ'. -/
 theorem lift_comp : of σ ⋙q lift σ φ τ h = φ :=
   by
   fapply Prefunctor.ext
@@ -120,12 +96,6 @@ theorem lift_comp : of σ ⋙q lift σ φ τ h = φ :=
     rfl
 #align quiver.push.lift_comp Quiver.Push.lift_comp
 
-/- warning: quiver.push.lift_unique -> Quiver.Push.lift_unique is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u1}} [_inst_1 : Quiver.{u2, u1} V] {W : Type.{u3}} (σ : V -> W) {W' : Type.{u4}} [_inst_2 : Quiver.{u5, u4} W'] (φ : Prefunctor.{u2, u5, u1, u4} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u4} W' (Prefunctor.obj.{u2, u5, u1, u4} V _inst_1 W' _inst_2 φ x) (τ (σ x))) (Φ : Prefunctor.{succ (max u1 u3 u2), u5, u3, u4} (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2), (Eq.{max (succ u3) (succ u4)} ((Quiver.Push.{u1, u2, u3} V _inst_1 W σ) -> W') (Prefunctor.obj.{succ (max u1 u3 u2), u5, u3, u4} (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2 Φ) τ) -> (Eq.{max (imax (succ u1) (succ u1) u2 u5) (succ u1) (succ u4)} (Prefunctor.{u2, u5, u1, u4} V _inst_1 W' _inst_2) (Prefunctor.comp.{u1, u2, u3, succ (max u1 u3 u2), u4, u5} V _inst_1 (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2 (Quiver.Push.of.{u1, u2, u3} V _inst_1 W σ) Φ) φ) -> (Eq.{max (imax (succ u3) (succ u3) (succ (max u1 u3 u2)) u5) (succ u3) (succ u4)} (Prefunctor.{succ (max u1 u3 u2), u5, u3, u4} (Quiver.Push.{u1, u2, u3} V _inst_1 W σ) (Quiver.Push.quiver.{u1, u2, u3} V _inst_1 W σ) W' _inst_2) Φ (Quiver.Push.lift.{u1, u2, u3, u4, u5} V _inst_1 W σ W' _inst_2 φ τ h))
-but is expected to have type
-  forall {V : Type.{u5}} [_inst_1 : Quiver.{u4, u5} V] {W : Type.{u3}} (σ : V -> W) {W' : Type.{u1}} [_inst_2 : Quiver.{u2, u1} W'] (φ : Prefunctor.{u4, u2, u5, u1} V _inst_1 W' _inst_2) (τ : W -> W') (h : forall (x : V), Eq.{succ u1} W' (Prefunctor.obj.{u4, u2, u5, u1} V _inst_1 W' _inst_2 φ x) (τ (σ x))) (Φ : Prefunctor.{max (max (succ u5) (succ u4)) (succ u3), u2, u3, u1} (Quiver.Push.{u5, u3} V W σ) (Quiver.instQuiverPush.{u5, u4, u3} V _inst_1 W σ) W' _inst_2), (Eq.{max (succ u3) (succ u1)} ((Quiver.Push.{u5, u3} V W σ) -> W') (Prefunctor.obj.{max (max (succ u5) (succ u4)) (succ u3), u2, u3, u1} (Quiver.Push.{u5, u3} V W σ) (Quiver.instQuiverPush.{u5, u4, u3} V _inst_1 W σ) W' _inst_2 Φ) τ) -> (Eq.{max (max (max (succ u5) u4) (succ u1)) u2} (Prefunctor.{u4, u2, u5, u1} V _inst_1 W' _inst_2) (Prefunctor.comp.{u5, u4, u3, max (max (succ u5) (succ u4)) (succ u3), u1, u2} V _inst_1 (Quiver.Push.{u5, u3} V W σ) (Quiver.instQuiverPush.{u5, u4, u3} V _inst_1 W σ) W' _inst_2 (Quiver.Push.of.{u5, u4, u3} V _inst_1 W σ) Φ) φ) -> (Eq.{max (max (max (max (succ u5) (succ u4)) (succ u3)) (succ u1)) u2} (Prefunctor.{max (max (succ u5) (succ u4)) (succ u3), u2, u3, u1} (Quiver.Push.{u5, u3} V W σ) (Quiver.instQuiverPush.{u5, u4, u3} V _inst_1 W σ) W' _inst_2) Φ (Quiver.Push.lift.{u5, u4, u3, u1, u2} V _inst_1 W σ W' _inst_2 φ τ h))
-Case conversion may be inaccurate. Consider using '#align quiver.push.lift_unique Quiver.Push.lift_uniqueₓ'. -/
 theorem lift_unique (Φ : Push σ ⥤q W') (Φ₀ : Φ.obj = τ) (Φcomp : of σ ⋙q Φ = φ) :
     Φ = lift σ φ τ h := by
   dsimp only [of, lift]
Diff
@@ -87,9 +87,7 @@ the pushforward quiver structure `push σ`. -/
 def lift : Push σ ⥤q W' where
   obj := τ
   map :=
-    @PushQuiver.rec V _ W σ (fun X Y f => τ X ⟶ τ Y) fun X Y f =>
-      by
-      rw [← h X, ← h Y]
+    @PushQuiver.rec V _ W σ (fun X Y f => τ X ⟶ τ Y) fun X Y f => by rw [← h X, ← h Y];
       exact φ.map f
 #align quiver.push.lift Quiver.Push.lift
 -/
@@ -113,12 +111,8 @@ Case conversion may be inaccurate. Consider using '#align quiver.push.lift_comp
 theorem lift_comp : of σ ⋙q lift σ φ τ h = φ :=
   by
   fapply Prefunctor.ext
-  · rintro
-    simp only [Prefunctor.comp_obj]
-    symm
-    exact h X
-  · rintro _ _ f
-    simp only [Prefunctor.comp_map]
+  · rintro; simp only [Prefunctor.comp_obj]; symm; exact h X
+  · rintro _ _ f; simp only [Prefunctor.comp_map]
     apply eq_of_hEq
     iterate 2 apply (cast_hEq _ _).trans
     symm
@@ -136,12 +130,8 @@ theorem lift_unique (Φ : Push σ ⥤q W') (Φ₀ : Φ.obj = τ) (Φcomp : of σ
     Φ = lift σ φ τ h := by
   dsimp only [of, lift]
   fapply Prefunctor.ext
-  · rintro
-    simp_rw [← Φ₀]
-  · rintro _ _ ⟨⟩
-    subst_vars
-    simp only [Prefunctor.comp_map, cast_eq]
-    rfl
+  · rintro; simp_rw [← Φ₀]
+  · rintro _ _ ⟨⟩; subst_vars; simp only [Prefunctor.comp_map, cast_eq]; rfl
 #align quiver.push.lift_unique Quiver.Push.lift_unique
 
 end Push

Changes in mathlib4

mathlib3
mathlib4
chore: banish Type _ and Sort _ (#6499)

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

This has nice performance benefits.

Diff
@@ -20,7 +20,7 @@ namespace Quiver
 
 universe v v₁ v₂ u u₁ u₂
 
-variable {V : Type _} [Quiver V] {W : Type _} (σ : V → W)
+variable {V : Type*} [Quiver V] {W : Type*} (σ : V → W)
 
 /-- The `Quiver` instance obtained by pushing arrows of `V` along the map `σ : V → W` -/
 @[nolint unusedArguments]
@@ -52,7 +52,7 @@ theorem of_obj : (of σ).obj = σ :=
   rfl
 #align quiver.push.of_obj Quiver.Push.of_obj
 
-variable {W' : Type _} [Quiver W'] (φ : V ⥤q W') (τ : W → W') (h : ∀ x, φ.obj x = τ (σ x))
+variable {W' : Type*} [Quiver W'] (φ : V ⥤q W') (τ : W → W') (h : ∀ x, φ.obj x = τ (σ x))
 
 /-- Given a function `τ : W → W'` and a prefunctor `φ : V ⥤q W'`, one can extend `τ` to be
 a prefunctor `W ⥤q W'` if `τ` and `σ` factorize `φ` at the level of objects, where `W` is given
chore: script to replace headers with #align_import statements (#5979)

Open in Gitpod

Co-authored-by: Eric Wieser <wieser.eric@gmail.com> Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,14 +2,11 @@
 Copyright (c) 2022 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
-
-! This file was ported from Lean 3 source module combinatorics.quiver.push
-! leanprover-community/mathlib commit 2258b40dacd2942571c8ce136215350c702dc78f
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Combinatorics.Quiver.Basic
 
+#align_import combinatorics.quiver.push from "leanprover-community/mathlib"@"2258b40dacd2942571c8ce136215350c702dc78f"
+
 /-!
 
 # Pushing a quiver structure along a map
chore: fix upper/lowercase in comments (#4360)
  • Run a non-interactive version of fix-comments.py on all files.
  • Go through the diff and manually add/discard/edit chunks.
Diff
@@ -14,7 +14,7 @@ import Mathlib.Combinatorics.Quiver.Basic
 
 # Pushing a quiver structure along a map
 
-Given a map `σ : V → W` and a `Quiver` instance on `V`, this files defines a `quiver` instance
+Given a map `σ : V → W` and a `Quiver` instance on `V`, this files defines a `Quiver` instance
 on `W` by associating to each arrow `v ⟶ v'` in `V` an arrow `σ v ⟶ σ v'` in `W`.
 
 -/
chore: update SHA in porting header (#1306)

These files correspond to files flagged "The following files have been modified since the commit at which they were verified." by port_status.py but are in sync with mathlib3, so we can update the hash.

I only updated the easy ones, the others need a closer inspection.

Co-authored-by: Reid Barton <rwbarton@gmail.com>

Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
 
 ! This file was ported from Lean 3 source module combinatorics.quiver.push
-! leanprover-community/mathlib commit 9b2660e1b25419042c8da10bf411aa3c67f14383
+! leanprover-community/mathlib commit 2258b40dacd2942571c8ce136215350c702dc78f
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.
 -/
chore: add source headers to ported theory files (#1094)

The script used to do this is included. The yaml file was obtained from https://raw.githubusercontent.com/wiki/leanprover-community/mathlib/mathlib4-port-status.md

Diff
@@ -2,6 +2,11 @@
 Copyright (c) 2022 Rémi Bottinelli. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: Rémi Bottinelli
+
+! This file was ported from Lean 3 source module combinatorics.quiver.push
+! leanprover-community/mathlib commit 9b2660e1b25419042c8da10bf411aa3c67f14383
+! Please do not edit these lines, except to modify the commit id
+! if you have ported upstream changes.
 -/
 import Mathlib.Combinatorics.Quiver.Basic
 

Dependencies 12

13 files ported (100.0%)
4935 lines ported (100.0%)

All dependencies are ported!