combinatorics.quiver.symmetricMathlib.Combinatorics.Quiver.Symmetric

This file has been ported!

Changes since the initial port

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

Changes in mathlib3

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(no changes)

(last sync)

Changes in mathlib3port

mathlib3
mathlib3port
Diff
@@ -3,10 +3,10 @@ Copyright (c) 2021 David Wärn. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Wärn
 -/
-import Mathbin.Combinatorics.Quiver.Basic
-import Mathbin.Combinatorics.Quiver.Path
-import Mathbin.Combinatorics.Quiver.Push
-import Mathbin.Data.Sum.Basic
+import Combinatorics.Quiver.Basic
+import Combinatorics.Quiver.Path
+import Combinatorics.Quiver.Push
+import Data.Sum.Basic
 
 #align_import combinatorics.quiver.symmetric from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
 
Diff
@@ -251,6 +251,7 @@ theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V')
 #align quiver.symmetrify.lift_unique Quiver.Symmetrify.lift_unique
 -/
 
+#print Prefunctor.symmetrify /-
 /-- A prefunctor canonically defines a prefunctor of the symmetrifications. -/
 @[simps]
 def Prefunctor.symmetrify (φ : U ⥤q V) : Symmetrify U ⥤q Symmetrify V
@@ -258,10 +259,13 @@ def Prefunctor.symmetrify (φ : U ⥤q V) : Symmetrify U ⥤q Symmetrify V
   obj := φ.obj
   map X Y := Sum.map φ.map φ.map
 #align prefunctor.symmetrify Prefunctor.symmetrify
+-/
 
+#print Prefunctor.symmetrify_mapReverse /-
 instance Prefunctor.symmetrify_mapReverse (φ : U ⥤q V) : Prefunctor.MapReverse φ.Symmetrify :=
   ⟨fun u v e => by cases e <;> rfl⟩
 #align prefunctor.symmetrify_map_reverse Prefunctor.symmetrify_mapReverse
+-/
 
 end Symmetrify
 
Diff
@@ -259,9 +259,9 @@ def Prefunctor.symmetrify (φ : U ⥤q V) : Symmetrify U ⥤q Symmetrify V
   map X Y := Sum.map φ.map φ.map
 #align prefunctor.symmetrify Prefunctor.symmetrify
 
-instance Prefunctor.symmetrifyMapReverse (φ : U ⥤q V) : Prefunctor.MapReverse φ.Symmetrify :=
+instance Prefunctor.symmetrify_mapReverse (φ : U ⥤q V) : Prefunctor.MapReverse φ.Symmetrify :=
   ⟨fun u v e => by cases e <;> rfl⟩
-#align prefunctor.symmetrify_map_reverse Prefunctor.symmetrifyMapReverse
+#align prefunctor.symmetrify_map_reverse Prefunctor.symmetrify_mapReverse
 
 end Symmetrify
 
Diff
@@ -2,17 +2,14 @@
 Copyright (c) 2021 David Wärn. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Wärn
-
-! This file was ported from Lean 3 source module combinatorics.quiver.symmetric
-! leanprover-community/mathlib commit c3291da49cfa65f0d43b094750541c0731edc932
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathbin.Combinatorics.Quiver.Basic
 import Mathbin.Combinatorics.Quiver.Path
 import Mathbin.Combinatorics.Quiver.Push
 import Mathbin.Data.Sum.Basic
 
+#align_import combinatorics.quiver.symmetric from "leanprover-community/mathlib"@"c3291da49cfa65f0d43b094750541c0731edc932"
+
 /-!
 ## Symmetric quivers and arrow reversal
 
Diff
@@ -76,12 +76,15 @@ class HasInvolutiveReverse extends HasReverse V where
 
 variable {U V W}
 
+#print Quiver.reverse_reverse /-
 @[simp]
 theorem reverse_reverse [h : HasInvolutiveReverse V] {a b : V} (f : a ⟶ b) :
     reverse (reverse f) = f :=
   h.inv' f
 #align quiver.reverse_reverse Quiver.reverse_reverse
+-/
 
+#print Quiver.reverse_inj /-
 @[simp]
 theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
     reverse f = reverse g ↔ f = g := by
@@ -89,10 +92,13 @@ theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
   · rintro h; simpa using congr_arg Quiver.reverse h
   · rintro h; congr; assumption
 #align quiver.reverse_inj Quiver.reverse_inj
+-/
 
+#print Quiver.eq_reverse_iff /-
 theorem eq_reverse_iff [HasInvolutiveReverse V] {a b : V} (f : a ⟶ b) (g : b ⟶ a) :
     f = reverse g ↔ reverse f = g := by rw [← reverse_inj, reverse_reverse]
 #align quiver.eq_reverse_iff Quiver.eq_reverse_iff
+-/
 
 section MapReverse
 
@@ -105,11 +111,13 @@ class Prefunctor.MapReverse (φ : U ⥤q V) where
 #align prefunctor.map_reverse Prefunctor.MapReverse
 -/
 
+#print Prefunctor.map_reverse /-
 @[simp]
 theorem Prefunctor.map_reverse (φ : U ⥤q V) [φ.MapReverse] {u v : U} (e : u ⟶ v) :
     φ.map (reverse e) = reverse (φ.map e) :=
   Prefunctor.MapReverse.map_reverse' e
 #align prefunctor.map_reverse' Prefunctor.map_reverse
+-/
 
 #print Prefunctor.mapReverseComp /-
 instance Prefunctor.mapReverseComp (φ : U ⥤q V) (ψ : V ⥤q W) [φ.MapReverse] [ψ.MapReverse] :
@@ -133,10 +141,12 @@ instance : HasInvolutiveReverse (Symmetrify V)
   reverse' _ _ e := e.symm
   inv' _ _ e := congr_fun Sum.swap_swap_eq e
 
+#print Quiver.symmetrify_reverse /-
 @[simp]
 theorem symmetrify_reverse {a b : Symmetrify V} (e : a ⟶ b) : reverse e = e.symm :=
   rfl
 #align quiver.symmetrify_reverse Quiver.symmetrify_reverse
+-/
 
 #print Quiver.Hom.toPos /-
 /-- Shorthand for the "forward" arrow corresponding to `f` in `symmetrify V` -/
@@ -161,17 +171,22 @@ def Path.reverse [HasReverse V] {a : V} : ∀ {b}, Path a b → Path b a
 #align quiver.path.reverse Quiver.Path.reverse
 -/
 
+#print Quiver.Path.reverse_toPath /-
 @[simp]
 theorem Path.reverse_toPath [HasReverse V] {a b : V} (f : a ⟶ b) :
     f.toPath.reverse = (reverse f).toPath :=
   rfl
 #align quiver.path.reverse_to_path Quiver.Path.reverse_toPath
+-/
 
+#print Quiver.Path.reverse_comp /-
 @[simp]
 theorem Path.reverse_comp [HasReverse V] {a b c : V} (p : Path a b) (q : Path b c) :
     (p.comp q).reverse = q.reverse.comp p.reverse := by induction q; · simp; · simp [q_ih]
 #align quiver.path.reverse_comp Quiver.Path.reverse_comp
+-/
 
+#print Quiver.Path.reverse_reverse /-
 @[simp]
 theorem Path.reverse_reverse [HasInvolutiveReverse V] {a b : V} (p : Path a b) :
     p.reverse.reverse = p := by
@@ -180,6 +195,7 @@ theorem Path.reverse_reverse [HasInvolutiveReverse V] {a b : V} (p : Path a b) :
   · simp only [path.reverse, path.reverse_comp, path.reverse_to_path, reverse_reverse, p_ih]
     rfl
 #align quiver.path.reverse_reverse Quiver.Path.reverse_reverse
+-/
 
 namespace Symmetrify
 
@@ -204,13 +220,16 @@ def lift [HasReverse V'] (φ : V ⥤q V') : Symmetrify V ⥤q V'
 #align quiver.symmetrify.lift Quiver.Symmetrify.lift
 -/
 
+#print Quiver.Symmetrify.lift_spec /-
 theorem lift_spec [HasReverse V'] (φ : V ⥤q V') : of ⋙q lift φ = φ :=
   by
   fapply Prefunctor.ext
   · rintro X; rfl
   · rintro X Y f; rfl
 #align quiver.symmetrify.lift_spec Quiver.Symmetrify.lift_spec
+-/
 
+#print Quiver.Symmetrify.lift_reverse /-
 theorem lift_reverse [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symmetrify V} (f : X ⟶ Y) :
     (lift φ).map (Quiver.reverse f) = Quiver.reverse ((lift φ).map f) :=
   by
@@ -218,7 +237,9 @@ theorem lift_reverse [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symme
   · simp only; rfl
   · simp only [reverse_reverse]; rfl
 #align quiver.symmetrify.lift_reverse Quiver.Symmetrify.lift_reverse
+-/
 
+#print Quiver.Symmetrify.lift_unique /-
 /-- `lift φ` is the only prefunctor extending `φ` and preserving reverses. -/
 theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V') (hΦ : of ⋙q Φ = φ)
     [hΦrev : Φ.MapReverse] : Φ = lift φ := by
@@ -231,6 +252,7 @@ theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V')
     · dsimp [lift, of]
       simp only [← Prefunctor.map_reverse, symmetrify_reverse, Sum.swap_inl]
 #align quiver.symmetrify.lift_unique Quiver.Symmetrify.lift_unique
+-/
 
 /-- A prefunctor canonically defines a prefunctor of the symmetrifications. -/
 @[simps]
@@ -258,10 +280,12 @@ instance [HasInvolutiveReverse V] : HasInvolutiveReverse (Push σ)
   reverse' a b F := by cases F; constructor; apply reverse; exact F_f
   inv' a b F := by cases F; dsimp [reverse]; congr; apply reverse_reverse
 
+#print Quiver.Push.of_reverse /-
 theorem of_reverse [h : HasInvolutiveReverse V] (X Y : V) (f : X ⟶ Y) :
     (reverse <| (Push.of σ).map f) = (Push.of σ).map (reverse f) :=
   rfl
 #align quiver.push.of_reverse Quiver.Push.of_reverse
+-/
 
 #print Quiver.Push.ofMapReverse /-
 instance ofMapReverse [h : HasInvolutiveReverse V] : (Push.of σ).MapReverse :=
Diff
@@ -87,7 +87,7 @@ theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
     reverse f = reverse g ↔ f = g := by
   constructor
   · rintro h; simpa using congr_arg Quiver.reverse h
-  · rintro h; congr ; assumption
+  · rintro h; congr; assumption
 #align quiver.reverse_inj Quiver.reverse_inj
 
 theorem eq_reverse_iff [HasInvolutiveReverse V] {a b : V} (f : a ⟶ b) (g : b ⟶ a) :
@@ -256,7 +256,7 @@ instance [HasReverse V] : HasReverse (Push σ)
 instance [HasInvolutiveReverse V] : HasInvolutiveReverse (Push σ)
     where
   reverse' a b F := by cases F; constructor; apply reverse; exact F_f
-  inv' a b F := by cases F; dsimp [reverse]; congr ; apply reverse_reverse
+  inv' a b F := by cases F; dsimp [reverse]; congr; apply reverse_reverse
 
 theorem of_reverse [h : HasInvolutiveReverse V] (X Y : V) (f : X ⟶ Y) :
     (reverse <| (Push.of σ).map f) = (Push.of σ).map (reverse f) :=
Diff
@@ -76,24 +76,12 @@ class HasInvolutiveReverse extends HasReverse V where
 
 variable {U V W}
 
-/- warning: quiver.reverse_reverse -> Quiver.reverse_reverse is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [h : Quiver.HasInvolutiveReverse.{u1, u2} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u1, u2} V _inst_2 a b), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V _inst_2 a b) (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 h) b a (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 h) a b f)) f
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [h : Quiver.HasInvolutiveReverse.{u2, u1} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u2, u1} V _inst_2 a b), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V _inst_2 a b) (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 h) b a (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 h) a b f)) f
-Case conversion may be inaccurate. Consider using '#align quiver.reverse_reverse Quiver.reverse_reverseₓ'. -/
 @[simp]
 theorem reverse_reverse [h : HasInvolutiveReverse V] {a b : V} (f : a ⟶ b) :
     reverse (reverse f) = f :=
   h.inv' f
 #align quiver.reverse_reverse Quiver.reverse_reverse
 
-/- warning: quiver.reverse_inj -> Quiver.reverse_inj is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u1, u2} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u1, u2} V _inst_2 a b) (g : Quiver.Hom.{succ u1, u2} V _inst_2 a b), Iff (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V _inst_2 b a) (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) a b f) (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) a b g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V _inst_2 a b) f g)
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u2, u1} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u2, u1} V _inst_2 a b) (g : Quiver.Hom.{succ u2, u1} V _inst_2 a b), Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V _inst_2 b a) (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) a b f) (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) a b g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V _inst_2 a b) f g)
-Case conversion may be inaccurate. Consider using '#align quiver.reverse_inj Quiver.reverse_injₓ'. -/
 @[simp]
 theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
     reverse f = reverse g ↔ f = g := by
@@ -102,12 +90,6 @@ theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
   · rintro h; congr ; assumption
 #align quiver.reverse_inj Quiver.reverse_inj
 
-/- warning: quiver.eq_reverse_iff -> Quiver.eq_reverse_iff is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u1, u2} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u1, u2} V _inst_2 a b) (g : Quiver.Hom.{succ u1, u2} V _inst_2 b a), Iff (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V _inst_2 a b) f (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) b a g)) (Eq.{succ u1} (Quiver.Hom.{succ u1, u2} V _inst_2 b a) (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) a b f) g)
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u2, u1} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u2, u1} V _inst_2 a b) (g : Quiver.Hom.{succ u2, u1} V _inst_2 b a), Iff (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V _inst_2 a b) f (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) b a g)) (Eq.{succ u2} (Quiver.Hom.{succ u2, u1} V _inst_2 b a) (Quiver.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) a b f) g)
-Case conversion may be inaccurate. Consider using '#align quiver.eq_reverse_iff Quiver.eq_reverse_iffₓ'. -/
 theorem eq_reverse_iff [HasInvolutiveReverse V] {a b : V} (f : a ⟶ b) (g : b ⟶ a) :
     f = reverse g ↔ reverse f = g := by rw [← reverse_inj, reverse_reverse]
 #align quiver.eq_reverse_iff Quiver.eq_reverse_iff
@@ -123,12 +105,6 @@ class Prefunctor.MapReverse (φ : U ⥤q V) where
 #align prefunctor.map_reverse Prefunctor.MapReverse
 -/
 
-/- warning: prefunctor.map_reverse' -> Prefunctor.map_reverse is a dubious translation:
-lean 3 declaration is
-  forall {U : Type.{u3}} {V : Type.{u4}} [_inst_1 : Quiver.{succ u2, u3} U] [_inst_2 : Quiver.{succ u1, u4} V] [_inst_4 : Quiver.HasReverse.{u2, u3} U _inst_1] [_inst_5 : Quiver.HasReverse.{u1, u4} V _inst_2] (φ : Prefunctor.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2) [_inst_7 : Prefunctor.MapReverse.{u1, u2, u3, u4} U V _inst_1 _inst_2 _inst_4 _inst_5 φ] {u : U} {v : U} (e : Quiver.Hom.{succ u2, u3} U _inst_1 u v), Eq.{succ u1} (Quiver.Hom.{succ u1, u4} V _inst_2 (Prefunctor.obj.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ v) (Prefunctor.obj.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ u)) (Prefunctor.map.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ v u (Quiver.reverse.{u2, u3} U _inst_1 _inst_4 u v e)) (Quiver.reverse.{u1, u4} V _inst_2 _inst_5 (Prefunctor.obj.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ u) (Prefunctor.obj.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ v) (Prefunctor.map.{succ u2, succ u1, u3, u4} U _inst_1 V _inst_2 φ u v e))
-but is expected to have type
-  forall {U : Type.{u2}} {V : Type.{u1}} [_inst_1 : Quiver.{succ u4, u2} U] [_inst_2 : Quiver.{succ u3, u1} V] [_inst_4 : Quiver.HasReverse.{u4, u2} U _inst_1] [_inst_5 : Quiver.HasReverse.{u3, u1} V _inst_2] (φ : Prefunctor.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2) [_inst_7 : Prefunctor.MapReverse.{u3, u4, u2, u1} U V _inst_1 _inst_2 _inst_4 _inst_5 φ] {u : U} {v : U} (e : Quiver.Hom.{succ u4, u2} U _inst_1 u v), Eq.{succ u3} (Quiver.Hom.{succ u3, u1} V _inst_2 (Prefunctor.obj.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ v) (Prefunctor.obj.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ u)) (Prefunctor.map.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ v u (Quiver.reverse.{u4, u2} U _inst_1 _inst_4 u v e)) (Quiver.reverse.{u3, u1} V _inst_2 _inst_5 (Prefunctor.obj.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ u) (Prefunctor.obj.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ v) (Prefunctor.map.{succ u4, succ u3, u2, u1} U _inst_1 V _inst_2 φ u v e))
-Case conversion may be inaccurate. Consider using '#align prefunctor.map_reverse' Prefunctor.map_reverseₓ'. -/
 @[simp]
 theorem Prefunctor.map_reverse (φ : U ⥤q V) [φ.MapReverse] {u v : U} (e : u ⟶ v) :
     φ.map (reverse e) = reverse (φ.map e) :=
@@ -157,12 +133,6 @@ instance : HasInvolutiveReverse (Symmetrify V)
   reverse' _ _ e := e.symm
   inv' _ _ e := congr_fun Sum.swap_swap_eq e
 
-/- warning: quiver.symmetrify_reverse -> Quiver.symmetrify_reverse is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] {a : Quiver.Symmetrify.{u2} V} {b : Quiver.Symmetrify.{u2} V} (e : Quiver.Hom.{succ u1, u2} (Quiver.Symmetrify.{u2} V) (Quiver.symmetrifyQuiver.{u2, u1} V _inst_2) a b), Eq.{succ u1} (Quiver.Hom.{succ u1, u2} (Quiver.Symmetrify.{u2} V) (Quiver.symmetrifyQuiver.{u2, u1} V _inst_2) b a) (Quiver.reverse.{u1, u2} (Quiver.Symmetrify.{u2} V) (Quiver.symmetrifyQuiver.{u2, u1} V _inst_2) (Quiver.Symmetrify.hasReverse.{u1, u2} V _inst_2) a b e) (Sum.swap.{u1, u1} (Quiver.Hom.{succ u1, u2} V _inst_2 a b) (Quiver.Hom.{succ u1, u2} V _inst_2 b a) e)
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] {a : Quiver.Symmetrify.{u1} V} {b : Quiver.Symmetrify.{u1} V} (e : Quiver.Hom.{succ u2, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u2} V _inst_2) a b), Eq.{succ u2} (Quiver.Hom.{succ u2, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u2} V _inst_2) b a) (Quiver.reverse.{u2, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u2} V _inst_2) (Quiver.instHasReverseSymmetrifySymmetrifyQuiver.{u2, u1} V _inst_2) a b e) (Sum.swap.{u2, u2} (Quiver.Hom.{succ u2, u1} V _inst_2 a b) (Quiver.Hom.{succ u2, u1} V _inst_2 b a) e)
-Case conversion may be inaccurate. Consider using '#align quiver.symmetrify_reverse Quiver.symmetrify_reverseₓ'. -/
 @[simp]
 theorem symmetrify_reverse {a b : Symmetrify V} (e : a ⟶ b) : reverse e = e.symm :=
   rfl
@@ -191,35 +161,17 @@ def Path.reverse [HasReverse V] {a : V} : ∀ {b}, Path a b → Path b a
 #align quiver.path.reverse Quiver.Path.reverse
 -/
 
-/- warning: quiver.path.reverse_to_path -> Quiver.Path.reverse_toPath is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [_inst_4 : Quiver.HasReverse.{u1, u2} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u1, u2} V _inst_2 a b), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u1, u2} V _inst_2 b a) (Quiver.Path.reverse.{u1, u2} V _inst_2 _inst_4 a b (Quiver.Hom.toPath.{u2, succ u1} V _inst_2 a b f)) (Quiver.Hom.toPath.{u2, succ u1} V _inst_2 b a (Quiver.reverse.{u1, u2} V _inst_2 _inst_4 a b f))
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [_inst_4 : Quiver.HasReverse.{u2, u1} V _inst_2] {a : V} {b : V} (f : Quiver.Hom.{succ u2, u1} V _inst_2 a b), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u2, u1} V _inst_2 b a) (Quiver.Path.reverse.{u2, u1} V _inst_2 _inst_4 a b (Quiver.Hom.toPath.{u1, succ u2} V _inst_2 a b f)) (Quiver.Hom.toPath.{u1, succ u2} V _inst_2 b a (Quiver.reverse.{u2, u1} V _inst_2 _inst_4 a b f))
-Case conversion may be inaccurate. Consider using '#align quiver.path.reverse_to_path Quiver.Path.reverse_toPathₓ'. -/
 @[simp]
 theorem Path.reverse_toPath [HasReverse V] {a b : V} (f : a ⟶ b) :
     f.toPath.reverse = (reverse f).toPath :=
   rfl
 #align quiver.path.reverse_to_path Quiver.Path.reverse_toPath
 
-/- warning: quiver.path.reverse_comp -> Quiver.Path.reverse_comp is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [_inst_4 : Quiver.HasReverse.{u1, u2} V _inst_2] {a : V} {b : V} {c : V} (p : Quiver.Path.{succ u1, u2} V _inst_2 a b) (q : Quiver.Path.{succ u1, u2} V _inst_2 b c), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u1, u2} V _inst_2 c a) (Quiver.Path.reverse.{u1, u2} V _inst_2 _inst_4 a c (Quiver.Path.comp.{u2, succ u1} V _inst_2 a b c p q)) (Quiver.Path.comp.{u2, succ u1} V _inst_2 c b a (Quiver.Path.reverse.{u1, u2} V _inst_2 _inst_4 b c q) (Quiver.Path.reverse.{u1, u2} V _inst_2 _inst_4 a b p))
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [_inst_4 : Quiver.HasReverse.{u2, u1} V _inst_2] {a : V} {b : V} {c : V} (p : Quiver.Path.{succ u2, u1} V _inst_2 a b) (q : Quiver.Path.{succ u2, u1} V _inst_2 b c), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u2, u1} V _inst_2 c a) (Quiver.Path.reverse.{u2, u1} V _inst_2 _inst_4 a c (Quiver.Path.comp.{u1, succ u2} V _inst_2 a b c p q)) (Quiver.Path.comp.{u1, succ u2} V _inst_2 c b a (Quiver.Path.reverse.{u2, u1} V _inst_2 _inst_4 b c q) (Quiver.Path.reverse.{u2, u1} V _inst_2 _inst_4 a b p))
-Case conversion may be inaccurate. Consider using '#align quiver.path.reverse_comp Quiver.Path.reverse_compₓ'. -/
 @[simp]
 theorem Path.reverse_comp [HasReverse V] {a b c : V} (p : Path a b) (q : Path b c) :
     (p.comp q).reverse = q.reverse.comp p.reverse := by induction q; · simp; · simp [q_ih]
 #align quiver.path.reverse_comp Quiver.Path.reverse_comp
 
-/- warning: quiver.path.reverse_reverse -> Quiver.Path.reverse_reverse is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u1, u2} V _inst_2] {a : V} {b : V} (p : Quiver.Path.{succ u1, u2} V _inst_2 a b), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u1, u2} V _inst_2 a b) (Quiver.Path.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) b a (Quiver.Path.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 _inst_4) a b p)) p
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u2, u1} V] [_inst_4 : Quiver.HasInvolutiveReverse.{u2, u1} V _inst_2] {a : V} {b : V} (p : Quiver.Path.{succ u2, u1} V _inst_2 a b), Eq.{max (succ u2) (succ u1)} (Quiver.Path.{succ u2, u1} V _inst_2 a b) (Quiver.Path.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) b a (Quiver.Path.reverse.{u2, u1} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u1} V _inst_2 _inst_4) a b p)) p
-Case conversion may be inaccurate. Consider using '#align quiver.path.reverse_reverse Quiver.Path.reverse_reverseₓ'. -/
 @[simp]
 theorem Path.reverse_reverse [HasInvolutiveReverse V] {a b : V} (p : Path a b) :
     p.reverse.reverse = p := by
@@ -252,12 +204,6 @@ def lift [HasReverse V'] (φ : V ⥤q V') : Symmetrify V ⥤q V'
 #align quiver.symmetrify.lift Quiver.Symmetrify.lift
 -/
 
-/- warning: quiver.symmetrify.lift_spec -> Quiver.Symmetrify.lift_spec is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u3}} [_inst_2 : Quiver.{succ u1, u3} V] {V' : Type.{u4}} [_inst_4 : Quiver.{succ u2, u4} V'] [_inst_5 : Quiver.HasReverse.{u2, u4} V' _inst_4] (φ : Prefunctor.{succ u1, succ u2, u3, u4} V _inst_2 V' _inst_4), Eq.{max (max (succ u3) (succ u1) (succ u2)) (succ u3) (succ u4)} (Prefunctor.{succ u1, succ u2, u3, u4} V _inst_2 V' _inst_4) (Prefunctor.comp.{u3, succ u1, u3, succ u1, u4, succ u2} V _inst_2 (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.of.{u1, u3} V _inst_2) (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 _inst_5 φ)) φ
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u3, u1} V] {V' : Type.{u2}} [_inst_4 : Quiver.{succ u4, u2} V'] [_inst_5 : Quiver.HasReverse.{u4, u2} V' _inst_4] (φ : Prefunctor.{succ u3, succ u4, u1, u2} V _inst_2 V' _inst_4), Eq.{max (max (max (succ u3) (succ u4)) (succ u1)) (succ u2)} (Prefunctor.{succ u3, succ u4, u1, u2} V _inst_2 V' _inst_4) (Prefunctor.comp.{u1, succ u3, u1, succ u3, u2, succ u4} V _inst_2 (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.of.{u3, u1} V _inst_2) (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 _inst_5 φ)) φ
-Case conversion may be inaccurate. Consider using '#align quiver.symmetrify.lift_spec Quiver.Symmetrify.lift_specₓ'. -/
 theorem lift_spec [HasReverse V'] (φ : V ⥤q V') : of ⋙q lift φ = φ :=
   by
   fapply Prefunctor.ext
@@ -265,12 +211,6 @@ theorem lift_spec [HasReverse V'] (φ : V ⥤q V') : of ⋙q lift φ = φ :=
   · rintro X Y f; rfl
 #align quiver.symmetrify.lift_spec Quiver.Symmetrify.lift_spec
 
-/- warning: quiver.symmetrify.lift_reverse -> Quiver.Symmetrify.lift_reverse is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u3}} [_inst_2 : Quiver.{succ u1, u3} V] {V' : Type.{u4}} [_inst_4 : Quiver.{succ u2, u4} V'] [h : Quiver.HasInvolutiveReverse.{u2, u4} V' _inst_4] (φ : Prefunctor.{succ u1, succ u2, u3, u4} V _inst_2 V' _inst_4) {X : Quiver.Symmetrify.{u3} V} {Y : Quiver.Symmetrify.{u3} V} (f : Quiver.Hom.{succ u1, u3} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) X Y), Eq.{succ u2} (Quiver.Hom.{succ u2, u4} V' _inst_4 (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) Y) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) X)) (Prefunctor.map.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) Y X (Quiver.reverse.{u1, u3} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) (Quiver.Symmetrify.hasReverse.{u1, u3} V _inst_2) X Y f)) (Quiver.reverse.{u2, u4} V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) X) (Prefunctor.obj.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) Y) (Prefunctor.map.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u2, u4} V' _inst_4 h) φ) X Y f))
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u3, u1} V] {V' : Type.{u2}} [_inst_4 : Quiver.{succ u4, u2} V'] [h : Quiver.HasInvolutiveReverse.{u4, u2} V' _inst_4] (φ : Prefunctor.{succ u3, succ u4, u1, u2} V _inst_2 V' _inst_4) {X : Quiver.Symmetrify.{u1} V} {Y : Quiver.Symmetrify.{u1} V} (f : Quiver.Hom.{succ u3, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) X Y), Eq.{succ u4} (Quiver.Hom.{succ u4, u2} V' _inst_4 (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) Y) (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) X)) (Prefunctor.map.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) Y X (Quiver.reverse.{u3, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) (Quiver.instHasReverseSymmetrifySymmetrifyQuiver.{u3, u1} V _inst_2) X Y f)) (Quiver.reverse.{u4, u2} V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) X) (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) Y) (Prefunctor.map.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 (Quiver.HasInvolutiveReverse.toHasReverse.{u4, u2} V' _inst_4 h) φ) X Y f))
-Case conversion may be inaccurate. Consider using '#align quiver.symmetrify.lift_reverse Quiver.Symmetrify.lift_reverseₓ'. -/
 theorem lift_reverse [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symmetrify V} (f : X ⟶ Y) :
     (lift φ).map (Quiver.reverse f) = Quiver.reverse ((lift φ).map f) :=
   by
@@ -279,12 +219,6 @@ theorem lift_reverse [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symme
   · simp only [reverse_reverse]; rfl
 #align quiver.symmetrify.lift_reverse Quiver.Symmetrify.lift_reverse
 
-/- warning: quiver.symmetrify.lift_unique -> Quiver.Symmetrify.lift_unique is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u3}} [_inst_2 : Quiver.{succ u1, u3} V] {V' : Type.{u4}} [_inst_4 : Quiver.{succ u2, u4} V'] [_inst_5 : Quiver.HasReverse.{u2, u4} V' _inst_4] (φ : Prefunctor.{succ u1, succ u2, u3, u4} V _inst_2 V' _inst_4) (Φ : Prefunctor.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4), (Eq.{max (max (succ u3) (succ u1) (succ u2)) (succ u3) (succ u4)} (Prefunctor.{succ u1, succ u2, u3, u4} V _inst_2 V' _inst_4) (Prefunctor.comp.{u3, succ u1, u3, succ u1, u4, succ u2} V _inst_2 (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4 (Quiver.Symmetrify.of.{u1, u3} V _inst_2) Φ) φ) -> (forall [hΦrev : Prefunctor.MapReverse.{u2, u1, u3, u4} (Quiver.Symmetrify.{u3} V) V' (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) _inst_4 (Quiver.Symmetrify.hasReverse.{u1, u3} V _inst_2) _inst_5 Φ], Eq.{max (max (succ u3) (succ u1) (succ u2)) (succ u3) (succ u4)} (Prefunctor.{succ u1, succ u2, u3, u4} (Quiver.Symmetrify.{u3} V) (Quiver.symmetrifyQuiver.{u3, u1} V _inst_2) V' _inst_4) Φ (Quiver.Symmetrify.lift.{u1, u2, u3, u4} V _inst_2 V' _inst_4 _inst_5 φ))
-but is expected to have type
-  forall {V : Type.{u1}} [_inst_2 : Quiver.{succ u3, u1} V] {V' : Type.{u2}} [_inst_4 : Quiver.{succ u4, u2} V'] [_inst_5 : Quiver.HasReverse.{u4, u2} V' _inst_4] (φ : Prefunctor.{succ u3, succ u4, u1, u2} V _inst_2 V' _inst_4) (Φ : Prefunctor.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4), (Eq.{max (max (max (succ u3) (succ u4)) (succ u1)) (succ u2)} (Prefunctor.{succ u3, succ u4, u1, u2} V _inst_2 V' _inst_4) (Prefunctor.comp.{u1, succ u3, u1, succ u3, u2, succ u4} V _inst_2 (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 (Quiver.Symmetrify.of.{u3, u1} V _inst_2) Φ) φ) -> (forall {X : Quiver.Symmetrify.{u1} V} {Y : Quiver.Symmetrify.{u1} V} (f : Quiver.Hom.{succ u3, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) X Y), Eq.{succ u4} (Quiver.Hom.{succ u4, u2} V' _inst_4 (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ Y) (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ X)) (Prefunctor.map.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ Y X (Quiver.reverse.{u3, u1} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) (Quiver.instHasReverseSymmetrifySymmetrifyQuiver.{u3, u1} V _inst_2) X Y f)) (Quiver.reverse.{u4, u2} V' _inst_4 _inst_5 (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ X) (Prefunctor.obj.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ Y) (Prefunctor.map.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4 Φ X Y f))) -> (Eq.{max (max (max (succ u3) (succ u4)) (succ u1)) (succ u2)} (Prefunctor.{succ u3, succ u4, u1, u2} (Quiver.Symmetrify.{u1} V) (Quiver.symmetrifyQuiver.{u1, u3} V _inst_2) V' _inst_4) Φ (Quiver.Symmetrify.lift.{u3, u4, u1, u2} V _inst_2 V' _inst_4 _inst_5 φ))
-Case conversion may be inaccurate. Consider using '#align quiver.symmetrify.lift_unique Quiver.Symmetrify.lift_uniqueₓ'. -/
 /-- `lift φ` is the only prefunctor extending `φ` and preserving reverses. -/
 theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V') (hΦ : of ⋙q Φ = φ)
     [hΦrev : Φ.MapReverse] : Φ = lift φ := by
@@ -324,12 +258,6 @@ instance [HasInvolutiveReverse V] : HasInvolutiveReverse (Push σ)
   reverse' a b F := by cases F; constructor; apply reverse; exact F_f
   inv' a b F := by cases F; dsimp [reverse]; congr ; apply reverse_reverse
 
-/- warning: quiver.push.of_reverse -> Quiver.Push.of_reverse is a dubious translation:
-lean 3 declaration is
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u1, u2} V] {V' : Type.{u3}} (σ : V -> V') [h : Quiver.HasInvolutiveReverse.{u1, u2} V _inst_2] (X : V) (Y : V) (f : Quiver.Hom.{succ u1, u2} V _inst_2 X Y), Eq.{succ (max u2 u3 (succ u1))} (Quiver.Hom.{succ (max u2 u3 (succ u1)), u3} (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Prefunctor.obj.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) Y) (Prefunctor.obj.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) X)) (Quiver.reverse.{max u2 u3 (succ u1), u3} (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.hasReverse.{u1, u2, u3} V _inst_2 V' σ (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 h)) (Prefunctor.obj.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) X) (Prefunctor.obj.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) Y) (Prefunctor.map.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) X Y f)) (Prefunctor.map.{succ u1, succ (max u2 u3 (succ u1)), u2, u3} V _inst_2 (Quiver.Push.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.quiver.{u2, succ u1, u3} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u1, u3} V _inst_2 V' σ) Y X (Quiver.reverse.{u1, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u1, u2} V _inst_2 h) X Y f))
-but is expected to have type
-  forall {V : Type.{u2}} [_inst_2 : Quiver.{succ u3, u2} V] {V' : Type.{u1}} (σ : V -> V') [h : Quiver.HasInvolutiveReverse.{u3, u2} V _inst_2] (X : V) (Y : V) (f : Quiver.Hom.{succ u3, u2} V _inst_2 X Y), Eq.{max (max (succ (succ u3)) (succ u2)) (succ u1)} (Quiver.Hom.{succ (max (max (succ u3) u2) u1), u1} (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Prefunctor.obj.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) Y) (Prefunctor.obj.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) X)) (Quiver.reverse.{max (max (succ u3) u2) u1, u1} (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.instHasReversePushInstQuiverPush.{u3, u2, u1} V _inst_2 V' σ (Quiver.HasInvolutiveReverse.toHasReverse.{u3, u2} V _inst_2 h)) (Prefunctor.obj.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) X) (Prefunctor.obj.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) Y) (Prefunctor.map.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) X Y f)) (Prefunctor.map.{succ u3, max (max (succ (succ u3)) (succ u2)) (succ u1), u2, u1} V _inst_2 (Quiver.Push.{u2, u1} V V' σ) (Quiver.instQuiverPush.{u2, succ u3, u1} V _inst_2 V' σ) (Quiver.Push.of.{u2, succ u3, u1} V _inst_2 V' σ) Y X (Quiver.reverse.{u3, u2} V _inst_2 (Quiver.HasInvolutiveReverse.toHasReverse.{u3, u2} V _inst_2 h) X Y f))
-Case conversion may be inaccurate. Consider using '#align quiver.push.of_reverse Quiver.Push.of_reverseₓ'. -/
 theorem of_reverse [h : HasInvolutiveReverse V] (X Y : V) (f : X ⟶ Y) :
     (reverse <| (Push.of σ).map f) = (Push.of σ).map (reverse f) :=
   rfl
Diff
@@ -98,11 +98,8 @@ Case conversion may be inaccurate. Consider using '#align quiver.reverse_inj Qui
 theorem reverse_inj [HasInvolutiveReverse V] {a b : V} (f g : a ⟶ b) :
     reverse f = reverse g ↔ f = g := by
   constructor
-  · rintro h
-    simpa using congr_arg Quiver.reverse h
-  · rintro h
-    congr
-    assumption
+  · rintro h; simpa using congr_arg Quiver.reverse h
+  · rintro h; congr ; assumption
 #align quiver.reverse_inj Quiver.reverse_inj
 
 /- warning: quiver.eq_reverse_iff -> Quiver.eq_reverse_iff is a dubious translation:
@@ -214,11 +211,7 @@ but is expected to have type
 Case conversion may be inaccurate. Consider using '#align quiver.path.reverse_comp Quiver.Path.reverse_compₓ'. -/
 @[simp]
 theorem Path.reverse_comp [HasReverse V] {a b c : V} (p : Path a b) (q : Path b c) :
-    (p.comp q).reverse = q.reverse.comp p.reverse :=
-  by
-  induction q
-  · simp
-  · simp [q_ih]
+    (p.comp q).reverse = q.reverse.comp p.reverse := by induction q; · simp; · simp [q_ih]
 #align quiver.path.reverse_comp Quiver.Path.reverse_comp
 
 /- warning: quiver.path.reverse_reverse -> Quiver.Path.reverse_reverse is a dubious translation:
@@ -268,10 +261,8 @@ Case conversion may be inaccurate. Consider using '#align quiver.symmetrify.lift
 theorem lift_spec [HasReverse V'] (φ : V ⥤q V') : of ⋙q lift φ = φ :=
   by
   fapply Prefunctor.ext
-  · rintro X
-    rfl
-  · rintro X Y f
-    rfl
+  · rintro X; rfl
+  · rintro X Y f; rfl
 #align quiver.symmetrify.lift_spec Quiver.Symmetrify.lift_spec
 
 /- warning: quiver.symmetrify.lift_reverse -> Quiver.Symmetrify.lift_reverse is a dubious translation:
@@ -284,10 +275,8 @@ theorem lift_reverse [h : HasInvolutiveReverse V'] (φ : V ⥤q V') {X Y : Symme
     (lift φ).map (Quiver.reverse f) = Quiver.reverse ((lift φ).map f) :=
   by
   dsimp [lift]; cases f
-  · simp only
-    rfl
-  · simp only [reverse_reverse]
-    rfl
+  · simp only; rfl
+  · simp only [reverse_reverse]; rfl
 #align quiver.symmetrify.lift_reverse Quiver.Symmetrify.lift_reverse
 
 /- warning: quiver.symmetrify.lift_unique -> Quiver.Symmetrify.lift_unique is a dubious translation:
@@ -301,8 +290,7 @@ theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V')
     [hΦrev : Φ.MapReverse] : Φ = lift φ := by
   subst_vars
   fapply Prefunctor.ext
-  · rintro X
-    rfl
+  · rintro X; rfl
   · rintro X Y f
     cases f
     · rfl
@@ -329,24 +317,12 @@ namespace Push
 variable {V' : Type _} (σ : V → V')
 
 instance [HasReverse V] : HasReverse (Push σ)
-    where reverse' a b F := by
-    cases F
-    constructor
-    apply reverse
-    exact F_f
+    where reverse' a b F := by cases F; constructor; apply reverse; exact F_f
 
 instance [HasInvolutiveReverse V] : HasInvolutiveReverse (Push σ)
     where
-  reverse' a b F := by
-    cases F
-    constructor
-    apply reverse
-    exact F_f
-  inv' a b F := by
-    cases F
-    dsimp [reverse]
-    congr
-    apply reverse_reverse
+  reverse' a b F := by cases F; constructor; apply reverse; exact F_f
+  inv' a b F := by cases F; dsimp [reverse]; congr ; apply reverse_reverse
 
 /- warning: quiver.push.of_reverse -> Quiver.Push.of_reverse is a dubious translation:
 lean 3 declaration is

Changes in mathlib4

mathlib3
mathlib4
style: replace '.-/' by '. -/' (#11938)

Purely automatic replacement. If this is in any way controversial; I'm happy to just close this PR.

Diff
@@ -38,7 +38,7 @@ instance symmetrifyQuiver (V : Type u) [Quiver V] : Quiver (Symmetrify V) :=
 variable (U V W : Type*) [Quiver.{u + 1} U] [Quiver.{v + 1} V] [Quiver.{w + 1} W]
 
 /-- A quiver `HasReverse` if we can reverse an arrow `p` from `a` to `b` to get an arrow
-    `p.reverse` from `b` to `a`.-/
+    `p.reverse` from `b` to `a`. -/
 class HasReverse where
   /-- the map which sends an arrow to its reverse -/
   reverse' : ∀ {a b : V}, (a ⟶ b) → (b ⟶ a)
chore: reduce imports (#9830)

This uses the improved shake script from #9772 to reduce imports across mathlib. The corresponding noshake.json file has been added to #9772.

Co-authored-by: Mario Carneiro <di.gama@gmail.com>

Diff
@@ -5,7 +5,6 @@ Authors: David Wärn, Antoine Labelle, Rémi Bottinelli
 -/
 import Mathlib.Combinatorics.Quiver.Path
 import Mathlib.Combinatorics.Quiver.Push
-import Mathlib.Data.Sum.Basic
 
 #align_import combinatorics.quiver.symmetric from "leanprover-community/mathlib"@"706d88f2b8fdfeb0b22796433d7a6c1a010af9f2"
 
chore: space after (#8178)

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

Diff
@@ -75,7 +75,7 @@ theorem reverse_inj [h : HasInvolutiveReverse V] {a b : V}
 
 theorem eq_reverse_iff [h : HasInvolutiveReverse V] {a b : V} (f : a ⟶ b)
     (g : b ⟶ a) : f = reverse g ↔ reverse f = g := by
-  rw [←reverse_inj, reverse_reverse]
+  rw [← reverse_inj, reverse_reverse]
 #align quiver.eq_reverse_iff Quiver.eq_reverse_iff
 
 section MapReverse
feat: port Combinatorics.Quiver.Covering (#6383)
Diff
@@ -220,6 +220,19 @@ theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V')
     · exact hΦinv (Sum.inl _)
 #align quiver.symmetrify.lift_unique Quiver.Symmetrify.lift_unique
 
+/-- A prefunctor canonically defines a prefunctor of the symmetrifications. -/
+@[simps]
+def _root_.Prefunctor.symmetrify (φ : U ⥤q V) : Symmetrify U ⥤q Symmetrify V
+    where
+  obj := φ.obj
+  map := Sum.map φ.map φ.map
+#align prefunctor.symmetrify Prefunctor.symmetrify
+
+instance _root_.Prefunctor.symmetrify_mapReverse (φ : U ⥤q V) :
+    Prefunctor.MapReverse φ.symmetrify :=
+  ⟨fun e => by cases e <;> rfl⟩
+#align prefunctor.symmetrify_map_reverse Prefunctor.symmetrify_mapReverse
+
 end Symmetrify
 
 namespace Push
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
@@ -30,13 +30,13 @@ namespace Quiver
 /-- A type synonym for the symmetrized quiver (with an arrow both ways for each original arrow).
     NB: this does not work for `Prop`-valued quivers. It requires `[Quiver.{v+1} V]`. -/
 -- Porting note: no hasNonemptyInstance linter yet
-def Symmetrify (V : Type _) := V
+def Symmetrify (V : Type*) := V
 #align quiver.symmetrify Quiver.Symmetrify
 
 instance symmetrifyQuiver (V : Type u) [Quiver V] : Quiver (Symmetrify V) :=
   ⟨fun a b : V ↦ Sum (a ⟶ b) (b ⟶ a)⟩
 
-variable (U V W : Type _) [Quiver.{u + 1} U] [Quiver.{v + 1} V] [Quiver.{w + 1} W]
+variable (U V W : Type*) [Quiver.{u + 1} U] [Quiver.{v + 1} V] [Quiver.{w + 1} W]
 
 /-- A quiver `HasReverse` if we can reverse an arrow `p` from `a` to `b` to get an arrow
     `p.reverse` from `b` to `a`.-/
@@ -174,7 +174,7 @@ def of : Prefunctor V (Symmetrify V) where
   map := Sum.inl
 #align quiver.symmetrify.of Quiver.Symmetrify.of
 
-variable {V' : Type _} [Quiver.{v' + 1} V']
+variable {V' : Type*} [Quiver.{v' + 1} V']
 
 /-- Given a quiver `V'` with reversible arrows, a prefunctor to `V'` can be lifted to one from
     `Symmetrify V` to `V'` -/
@@ -224,7 +224,7 @@ end Symmetrify
 
 namespace Push
 
-variable {V' : Type _} (σ : V → V')
+variable {V' : Type*} (σ : V → V')
 
 instance [HasReverse V] : HasReverse (Quiver.Push σ) where
   reverse' := fun
feat: Linter that checks that Prop classes are Props (#6148)
Diff
@@ -83,7 +83,7 @@ section MapReverse
 variable [HasReverse U] [HasReverse V] [HasReverse W]
 
 /-- A prefunctor preserving reversal of arrows -/
-class _root_.Prefunctor.MapReverse (φ : U ⥤q V) where
+class _root_.Prefunctor.MapReverse (φ : U ⥤q V) : Prop where
   /-- The image of a reverse is the reverse of the image. -/
   map_reverse' : ∀ {u v : U} (e : u ⟶ v), φ.map (reverse e) = reverse (φ.map e)
 #align prefunctor.map_reverse Prefunctor.MapReverse
chore: remove 'Ported by' headers (#6018)

Briefly during the port we were adding "Ported by" headers, but only ~60 / 3000 files ended up with such a header.

I propose deleting them.

We could consider adding these uniformly via a script, as part of the great history rewrite...?

Co-authored-by: Scott Morrison <scott.morrison@gmail.com>

Diff
@@ -2,7 +2,6 @@
 Copyright (c) 2021 David Wärn. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Wärn, Antoine Labelle, Rémi Bottinelli
-Ported by: Joël Riou, Rémi Bottinelli
 -/
 import Mathlib.Combinatorics.Quiver.Path
 import Mathlib.Combinatorics.Quiver.Push
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
@@ -3,16 +3,13 @@ Copyright (c) 2021 David Wärn. All rights reserved.
 Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Wärn, Antoine Labelle, Rémi Bottinelli
 Ported by: Joël Riou, Rémi Bottinelli
-
-! This file was ported from Lean 3 source module combinatorics.quiver.symmetric
-! leanprover-community/mathlib commit 706d88f2b8fdfeb0b22796433d7a6c1a010af9f2
-! Please do not edit these lines, except to modify the commit id
-! if you have ported upstream changes.
 -/
 import Mathlib.Combinatorics.Quiver.Path
 import Mathlib.Combinatorics.Quiver.Push
 import Mathlib.Data.Sum.Basic
 
+#align_import combinatorics.quiver.symmetric from "leanprover-community/mathlib"@"706d88f2b8fdfeb0b22796433d7a6c1a010af9f2"
+
 /-!
 ## Symmetric quivers and arrow reversal
 
chore: fix backtick in docs (#5077)

I wrote a script to find lines that contain an odd number of backticks

Diff
@@ -54,7 +54,7 @@ def reverse {V} [Quiver.{v + 1} V] [HasReverse V] {a b : V} : (a ⟶ b) → (b 
   HasReverse.reverse'
 #align quiver.reverse Quiver.reverse
 
-/-- A quiver `HasInvolutiveReverse` if reversing twice is the identity.`-/
+/-- A quiver `HasInvolutiveReverse` if reversing twice is the identity. -/
 class HasInvolutiveReverse extends HasReverse V where
   /-- `reverse` is involutive -/
   inv' : ∀ {a b : V} (f : a ⟶ b), reverse (reverse f) = f
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
@@ -255,7 +255,7 @@ end Push
 /-- A quiver is preconnected iff there exists a path between any pair of
 vertices.
 Note that if `V` doesn't `HasReverse`, then the definition is stronger than
-simply having a preconnected underlying `simple_graph`, since a path in one
+simply having a preconnected underlying `SimpleGraph`, since a path in one
 direction doesn't induce one in the other.
 -/
 def IsPreconnected (V) [Quiver.{u + 1} V] :=
chore: fix #align lines (#3640)

This PR fixes two things:

  • Most align statements for definitions and theorems and instances that are separated by two newlines from the relevant declaration (s/\n\n#align/\n#align). This is often seen in the mathport output after ending calc blocks.
  • All remaining more-than-one-line #align statements. (This was needed for a script I wrote for #3630.)
Diff
@@ -80,7 +80,6 @@ theorem reverse_inj [h : HasInvolutiveReverse V] {a b : V}
 theorem eq_reverse_iff [h : HasInvolutiveReverse V] {a b : V} (f : a ⟶ b)
     (g : b ⟶ a) : f = reverse g ↔ reverse f = g := by
   rw [←reverse_inj, reverse_reverse]
-
 #align quiver.eq_reverse_iff Quiver.eq_reverse_iff
 
 section MapReverse
chore: add missing #align statements (#1902)

This PR is the result of a slight variant on the following "algorithm"

  • take all mathlib 3 names, remove _ and make all uppercase letters into lowercase
  • take all mathlib 4 names, remove _ and make all uppercase letters into lowercase
  • look for matches, and create pairs (original_lean3_name, OriginalLean4Name)
  • for pairs that do not have an align statement:
    • use Lean 4 to lookup the file + position of the Lean 4 name
    • add an #align statement just before the next empty line
  • manually fix some tiny mistakes (e.g., empty lines in proofs might cause the #align statement to have been inserted too early)
Diff
@@ -35,6 +35,7 @@ namespace Quiver
     NB: this does not work for `Prop`-valued quivers. It requires `[Quiver.{v+1} V]`. -/
 -- Porting note: no hasNonemptyInstance linter yet
 def Symmetrify (V : Type _) := V
+#align quiver.symmetrify Quiver.Symmetrify
 
 instance symmetrifyQuiver (V : Type u) [Quiver V] : Quiver (Symmetrify V) :=
   ⟨fun a b : V ↦ Sum (a ⟶ b) (b ⟶ a)⟩
@@ -46,15 +47,18 @@ variable (U V W : Type _) [Quiver.{u + 1} U] [Quiver.{v + 1} V] [Quiver.{w + 1}
 class HasReverse where
   /-- the map which sends an arrow to its reverse -/
   reverse' : ∀ {a b : V}, (a ⟶ b) → (b ⟶ a)
+#align quiver.has_reverse Quiver.HasReverse
 
 /-- Reverse the direction of an arrow. -/
 def reverse {V} [Quiver.{v + 1} V] [HasReverse V] {a b : V} : (a ⟶ b) → (b ⟶ a) :=
   HasReverse.reverse'
+#align quiver.reverse Quiver.reverse
 
 /-- A quiver `HasInvolutiveReverse` if reversing twice is the identity.`-/
 class HasInvolutiveReverse extends HasReverse V where
   /-- `reverse` is involutive -/
   inv' : ∀ {a b : V} (f : a ⟶ b), reverse (reverse f) = f
+#align quiver.has_involutive_reverse Quiver.HasInvolutiveReverse
 
 variable {U V W}
 
@@ -140,6 +144,7 @@ abbrev Hom.toNeg {X Y : V} (f : X ⟶ Y) : (Quiver.symmetrifyQuiver V).Hom Y X :
 def Path.reverse [HasReverse V] {a : V} : ∀ {b}, Path a b → Path b a
   | _, Path.nil => Path.nil
   | _, Path.cons p e => (Quiver.reverse e).toPath.comp p.reverse
+#align quiver.path.reverse Quiver.Path.reverse
 
 @[simp]
 theorem Path.reverse_toPath [HasReverse V] {a b : V} (f : a ⟶ b) :
@@ -153,6 +158,7 @@ theorem Path.reverse_comp [HasReverse V] {a b c : V} (p : Path a b) (q : Path b
   induction' q with _ _ _ _ h
   · simp
   · simp [h]
+#align quiver.path.reverse_comp Quiver.Path.reverse_comp
 
 @[simp]
 theorem Path.reverse_reverse [h : HasInvolutiveReverse V] {a b : V} (p : Path a b) :
@@ -161,6 +167,7 @@ theorem Path.reverse_reverse [h : HasInvolutiveReverse V] {a b : V} (p : Path a
   · simp
   · rw [Path.reverse, Path.reverse_comp, h, Path.reverse_toPath, Quiver.reverse_reverse]
     rfl
+#align quiver.path.reverse_reverse Quiver.Path.reverse_reverse
 
 end Paths
 
@@ -170,6 +177,7 @@ namespace Symmetrify
 def of : Prefunctor V (Symmetrify V) where
   obj := id
   map := Sum.inl
+#align quiver.symmetrify.of Quiver.Symmetrify.of
 
 variable {V' : Type _} [Quiver.{v' + 1} V']
 
@@ -181,6 +189,7 @@ def lift [HasReverse V'] (φ : Prefunctor V V') :
   map f := match f with
   | Sum.inl g => φ.map g
   | Sum.inr g => reverse (φ.map g)
+#align quiver.symmetrify.lift Quiver.Symmetrify.lift
 
 theorem lift_spec [HasReverse V'] (φ : Prefunctor V V') :
     Symmetrify.of.comp (Symmetrify.lift φ) = φ := by
@@ -189,6 +198,7 @@ theorem lift_spec [HasReverse V'] (φ : Prefunctor V V') :
     rfl
   · rintro X Y f
     rfl
+#align quiver.symmetrify.lift_spec Quiver.Symmetrify.lift_spec
 
 theorem lift_reverse [h : HasInvolutiveReverse V']
     (φ : Prefunctor V V') {X Y : Symmetrify V} (f : X ⟶ Y) :
@@ -198,6 +208,7 @@ theorem lift_reverse [h : HasInvolutiveReverse V']
     rfl
   · simp only [reverse_reverse]
     rfl
+#align quiver.symmetrify.lift_reverse Quiver.Symmetrify.lift_reverse
 
 /-- `lift φ` is the only prefunctor extending `φ` and preserving reverses. -/
 theorem lift_unique [HasReverse V'] (φ : V ⥤q V') (Φ : Symmetrify V ⥤q V') (hΦ : (of ⋙q Φ) = φ)
chore: fix typo in porting header for Combinatorics.Quiver.Symmetric (#1297)
Diff
@@ -4,7 +4,7 @@ Released under Apache 2.0 license as described in the file LICENSE.
 Authors: David Wärn, Antoine Labelle, Rémi Bottinelli
 Ported by: Joël Riou, Rémi Bottinelli
 
-! This file was ported from Lean 3 source module combinatorics.quiver.connected_component
+! This file was ported from Lean 3 source module combinatorics.quiver.symmetric
 ! leanprover-community/mathlib commit 706d88f2b8fdfeb0b22796433d7a6c1a010af9f2
 ! Please do not edit these lines, except to modify the commit id
 ! if you have ported upstream changes.

Dependencies 16

17 files ported (100.0%)
5879 lines ported (100.0%)

All dependencies are ported!