Session 17: Some uses of graphs
1. Paths
In the exercises that follow for this Session, we implement the free category π(G) on each graph G using mathlib's CategoryTheory.Paths V, where V is a quiver (i.e., a directed graph). In particular, we make extensive use of the inductive datatype Quiver.Path, the type of paths through the arrows of the quiver, which we print below for reference.
#print Quiver.Path
Danilo noticed that from a graph G we can build a category π(G), the free category on the graph G. An object is a dot of G, and a map is a path in G. For which of the following graphs does Danilo's category have a terminal object?
Solution: Exercise 1
An object S is terminal in a category if for each object X in the category there is exactly one map from X to S. Only the free category π(G_b) on the graph (b) and the free category π(G_c) on the graph (c) have objects that meet this criterion.
(a) π(G_a) has infinitely many maps from the object to itself (each map corresponding to the path formed by going around the arrow/loop a different number of times).
inductive Dot
| xβ
inductive Arrow : Dot β Dot β Type
| fβ : Arrow .xβ .xβ
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : Β¬(HasTerminal (Paths Dot)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)β’ False
h:HasTerminal (Paths Dot)h_uniq:Unique (Quiver.Path Dot.xβ Dot.xβ) := uniqueToTerminal Dot.xββ’ False
h:HasTerminal (Paths Dot)h_uniq:Unique (Quiver.Path Dot.xβ Dot.xβ) := uniqueToTerminal Dot.xβh_sub:Subsingleton (Quiver.Path Dot.xβ Dot.xβ) := inferInstanceβ’ False
have h_nontriv : Nontrivial (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_uniq:Unique (Quiver.Path Dot.xβ Dot.xβ) := uniqueToTerminal Dot.xβh_sub:Subsingleton (Quiver.Path Dot.xβ Dot.xβ) := inferInstanceβ’ β x y, x β y
h:HasTerminal (Paths Dot)h_uniq:Unique (Quiver.Path Dot.xβ Dot.xβ) := uniqueToTerminal Dot.xβh_sub:Subsingleton (Quiver.Path Dot.xβ Dot.xβ) := inferInstanceβ’ Quiver.Path.nil β Quiver.Hom.toPath Arrow.fβ
h:HasTerminal (Paths Dot)h_uniq:Unique (Quiver.Path Dot.xβ Dot.xβ) := uniqueToTerminal Dot.xβh_sub:Subsingleton (Quiver.Path Dot.xβ Dot.xβ) := inferInstanceaβ:Quiver.Path.nil = Quiver.Hom.toPath Arrow.fββ’ False
All goals completed! π
All goals completed! π
(b) The only object in π(G_b) is terminal, since there is exactly one map from that object to itself, namely the identity map.
inductive Dot
| xβ
inductive Arrow : Dot β Dot β Type
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : HasTerminal (Paths Dot) := β’ HasTerminal (Paths Dot)
have h_all_sub
: β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) := β’ HasTerminal (Paths Dot)
x:Paths Dotβ’ Subsingleton (x βΆ Dot.xβ)
x:Paths Dotβ’ β (a b : x βΆ Dot.xβ), a = b
intro f x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xββ’ f = g
x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilβ’ f = g
have h_all_eq_id : β {x : Paths Dot} (p : x βΆ Dot.xβ), P p := β’ HasTerminal (Paths Dot)
x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xββ’ P pβ
x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xββ’ P (π Dot.xβ)x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xββ’ β {u v : Dot} (p : (Paths.of Dot).obj v βΆ Dot.xβ) (q : u βΆ v), P p β P (p β (Paths.of Dot).map q)
x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xββ’ P (π Dot.xβ) All goals completed! π
x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xββ’ β {u v : Dot} (p : (Paths.of Dot).obj v βΆ Dot.xβ) (q : u βΆ v), P p β P (p β (Paths.of Dot).map q) intro _ x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths Dotpβ:xβ βΆ Dot.xβuβ:Dotvβ:Dotβ’ β (p : (Paths.of Dot).obj vβ βΆ Dot.xβ) (q : uβ βΆ vβ), P p β P (p β (Paths.of Dot).map q) x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths DotpβΒΉ:xβ βΆ Dot.xβuβ:Dotvβ:Dotpβ:(Paths.of Dot).obj vβ βΆ Dot.xββ’ β (q : uβ βΆ vβ), P pβ β P (pβ β (Paths.of Dot).map q) x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths DotpβΒΉ:xβ βΆ Dot.xβuβ:Dotvβ:Dotpβ:(Paths.of Dot).obj vβ βΆ Dot.xβe:uβ βΆ vββ’ P pβ β P (pβ β (Paths.of Dot).map e) x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xβP:{x : Paths Dot} β (x βΆ Dot.xβ) β Prop := fun {x} p β¦ p = Quiver.Path.nilxβ:Paths DotpβΒΉ:xβ βΆ Dot.xβuβ:Dotvβ:Dotpβ:(Paths.of Dot).obj vβ βΆ Dot.xβe:uβ βΆ vβaβ:P pββ’ P (pβ β (Paths.of Dot).map e)
All goals completed! π
All goals completed! π
have h_all_nonempty
: β (x : Paths Dot), Nonempty (x βΆ Dot.xβ) := β’ HasTerminal (Paths Dot)
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
let P := fun {x} p β¦ p = Quiver.Path.nil;
have h_all_eq_id := fun {x} p β¦
Paths.induction_fixed_target P (Eq.refl (π Dot.xβ)) (fun {u v} p e a β¦ nomatch e) p;
Eq.mpr (id (congrArg (fun _a β¦ _a = g) (h_all_eq_id f)))
(Eq.mpr (id (congrArg (fun _a β¦ Quiver.Path.nil = _a) (h_all_eq_id g))) (Eq.refl Quiver.Path.nil)) }x:Paths Dotβ’ Nonempty (x βΆ Dot.xβ)
All goals completed! π
All goals completed! π
(c) In π(G_c), the second dot from the right corresponds to a terminal object, since there is exactly one map (path) to that object from every object in π(G_c). We label the dots from left to right, with x_1 being the upper left dot and x_2 the lower left dot (so x_4 is terminal).
inductive Dot
| xβ | xβ | xβ | xβ | xβ
inductive Arrow : Dot β Dot β Type
| fβ : Arrow .xβ .xβ
| fβ : Arrow .xβ .xβ
| fβ : Arrow .xβ .xβ
| fβ
: Arrow .xβ
.xβ
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : HasTerminal (Paths Dot) := β’ HasTerminal (Paths Dot)
have h_all_sub
: β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) := β’ HasTerminal (Paths Dot)
x:Paths Dotβ’ Subsingleton (x βΆ Dot.xβ)
x:Paths Dotβ’ β (a b : x βΆ Dot.xβ), a = b
intro f x:Paths Dotf:x βΆ Dot.xβg:x βΆ Dot.xββ’ f = g
f:Dot.xβ βΆ Dot.xβg:Dot.xβ βΆ Dot.xββ’ f = gf:Dot.xβ βΆ Dot.xβg:Dot.xβ βΆ Dot.xββ’ f = gf:Dot.xβ βΆ Dot.xβg:Dot.xβ βΆ Dot.xββ’ f = gf:Dot.xβ βΆ Dot.xβg:Dot.xβ βΆ Dot.xββ’ f = gf:Dot.xβ
βΆ Dot.xβg:Dot.xβ
βΆ Dot.xββ’ f = g
all_goals
repeat first
| (All goals completed! π) -- deconstruct f
| (All goals completed! π) -- deconstruct g
| β’ Quiver.Path.nil.cons Arrow.fβ
= Quiver.Path.nil.cons Arrow.fβ
| All goals completed! π
have h_all_nonempty
: β (x : Paths Dot), Nonempty (x βΆ Dot.xβ) := β’ HasTerminal (Paths Dot)
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }x:Paths Dotβ’ Nonempty (x βΆ Dot.xβ)
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ
βΆ Dot.xβ)
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ) All goals completed! π
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ) All goals completed! π
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ) All goals completed! π
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ βΆ Dot.xβ) All goals completed! π
h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ) :=
fun x β¦
{
allEq := fun f g β¦
Dot.casesOn (motive := fun t β¦ x = t β f = g) x
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_1.cons a β
(Quiver.Path.nil.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h h_5 β¦
Eq.symm
(eq_of_heq h_5) βΈ
Quiver.Path.casesOn
(motive := β―) g β―
β― (Eq.refl Dot.xβ)
(HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
(Quiver.Path.nil.cons Arrow.fβ).cons
Arrow.fβ =
g.cons a)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
(Quiver.Path.nil.cons
Arrow.fβ).cons
Arrow.fβ =
(g_2.cons a).cons
Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ
), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ
β f.cons a = g)
(fun f a h h_1 β¦
Eq.symm (eq_of_heq h_1) βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ
= a β f β x β f.cons Arrow.fβ
= g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ
= g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ
= a_2 β a β x β (f_2.cons a).cons Arrow.fβ
= g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β a β Arrow.fβ
β (f.cons a).cons Arrow.fβ
= g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl f))
(Eq.symm h) f_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f g)
(fun h β¦
Eq.ndrec (motive := fun x β¦ β (f g : x βΆ Dot.xβ), f = g)
(fun f g β¦
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_1 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_1.cons a β f = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦ b = a_1 β Dot.xβ = a_2 β a β x β f_1.cons a = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h)) (Eq.symm h) f_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β f.cons a = g)
(fun f a h h_1 β¦
β― βΈ
Quiver.Path.casesOn (motive := fun a x β¦ Dot.xβ = a β f β x β f.cons Arrow.fβ = g) f
(fun h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β g β x β Quiver.Path.nil.cons Arrow.fβ = g) g
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_1 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c), g β g_1.cons a β Quiver.Path.nil.cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β a β x β Quiver.Path.nil.cons Arrow.fβ = g_1.cons a)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
g
(fun h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Eq.refl (Quiver.Path.nil.cons Arrow.fβ))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h h_4 β¦
Eq.symm (eq_of_heq h_4) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β
g β x β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons Arrow.fβ).cons Arrow.fβ)
g
(fun h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx
h))
(fun {b c} g_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_3.cons a β
Quiver.Path.nil.cons
Arrow.fβ =
(g.cons Arrow.fβ).cons
Arrow.fβ)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive :=
fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
Quiver.Path.nil.cons
Arrow.fβ =
((g_3.cons a).cons
Arrow.fβ).cons
Arrow.fβ)
a
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(fun h β¦
Eq.ndrec (motive :=
fun {b} β¦
β
(g :
Quiver.Path Dot.xβ
b)
(a : b βΆ Dot.xβ), β―)
(fun g a h β¦
False.elim
(noConfusion_of_Nat
Dot.ctorIdx h))
(Eq.symm h) g_3 a)
(Eq.refl b) (Eq.refl Dot.xβ)
(HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(Eq.symm h) g_1 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β Quiver.Path.nil.cons Arrow.fβ = g.cons a)
(fun g a h h_3 β¦
Eq.symm (eq_of_heq h_3) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ
= a β
g β x β Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
g (fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} g_2 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
g β g_2.cons a β
Quiver.Path.nil.cons Arrow.fβ = g.cons Arrow.fβ
)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ
= a_2 β
a β x β
Quiver.Path.nil.cons Arrow.fβ =
(g_2.cons a).cons Arrow.fβ
)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (g : Quiver.Path Dot.xβ b)
(a : b βΆ Dot.xβ
),
Dot.xβ
= Dot.xβ β
a β Arrow.fβ
β
Quiver.Path.nil.cons Arrow.fβ =
(g.cons a).cons Arrow.fβ
)
(fun g a h β¦
False.elim
(noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) g_2 a)
(Eq.refl b) (Eq.refl Dot.xβ
) (HEq.refl a))
h a)
(Eq.refl Dot.xβ
) (HEq.refl g))
(Eq.symm h) g_1 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl g))
(fun {b c} f_2 a h β¦
Eq.ndrec (motive := fun {c} β¦ β (a : b βΆ c), f β f_2.cons a β f.cons Arrow.fβ = g)
(fun a h β¦
β― βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β Dot.xβ = a_2 β a β x β (f_2.cons a).cons Arrow.fβ = g) a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
Quiver.Path.casesOn (motive := fun a x β¦
Dot.xβ = a β f β x β (f.cons Arrow.fβ).cons Arrow.fβ = g) f
(fun h β¦ False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(fun {b c} f_3 a h β¦
Eq.ndrec (motive := fun {c} β¦
β (a : b βΆ c),
f β f_3.cons a β (f.cons Arrow.fβ).cons Arrow.fβ = g)
(fun a h β¦
Eq.symm (eq_of_heq h) βΈ
Arrow.casesOn (motive := fun a_1 a_2 x β¦
b = a_1 β
Dot.xβ = a_2 β
a β x β
((f_3.cons a).cons Arrow.fβ).cons Arrow.fβ = g)
a
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β
a β Arrow.fβ
β
((f.cons a).cons Arrow.fβ).cons Arrow.fβ =
g)
(fun f a h β¦
False.elim (noConfusion_of_Nat Dot.ctorIdx h))
(Eq.symm h) f_3 a)
(Eq.refl b) (Eq.refl Dot.xβ) (HEq.refl a))
h a)
(Eq.refl Dot.xβ) (HEq.refl f))
(Eq.symm h) f_2 a)
(fun h β¦
Eq.ndrec (motive := fun {b} β¦
β (f : Quiver.Path Dot.xβ b) (a : b βΆ Dot.xβ),
Dot.xβ = Dot.xβ β a β Arrow.fβ β (f.cons a).cons Arrow.fβ = g)
(fun f a h h_2 β¦ β― βΈ Quiver.Path.casesOn (motive := β―) β― β― β― β― β―) β― β―
β―)
β― β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― β―)
β― β―)
β― β―)
β― β― β―)
β― β― β― }β’ Nonempty (Dot.xβ
βΆ Dot.xβ) All goals completed! π
All goals completed! π
(d) π(G_d) is similar to π(G_a) in that each object of π(G_d) has infinitely many maps from itself to itself and from the other object to itself (each map corresponding to the path formed by going a different number of times around the closed loop of arrows between the two objects).
inductive Dot
| xβ | xβ
inductive Arrow : Dot β Dot β Type
| fβ : Arrow .xβ .xβ
| fβ : Arrow .xβ .xβ
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : Β¬(HasTerminal (Paths Dot)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)β’ False
have h_all_uniq
: β (x : Paths Dot), Unique (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)x:Paths Dotβ’ Unique (x βΆ β€_ Paths Dot)
All goals completed! π
have h_all_sub
: β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xx:Paths Dotβ’ Subsingleton (x βΆ β€_ Paths Dot)
All goals completed! π
have h_nontrivβ : Nontrivial (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceβ’ β x y, x β y
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceβ’ Quiver.Path.nil β (Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceaβ:Quiver.Path.nil = (Quiver.Hom.toPath Arrow.fβ).cons Arrow.fββ’ False
All goals completed! π
have h_nontrivβ : Nontrivial (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))β’ β x y, x β y
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))β’ Quiver.Path.nil β (Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))aβ:Quiver.Path.nil = (Quiver.Hom.toPath Arrow.fβ).cons Arrow.fββ’ False
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))hx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))hx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro Quiver.Path.nil
(Exists.intro ((Quiver.Hom.toPath Arrow.fβ).cons Arrow.fβ) fun a β¦
False.elim (noConfusion_of_Nat Quiver.Path.ctorIdx a)))hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False All goals completed! π
(e) In π(G_e), the left-hand object has no map from the right-hand object, while the right-hand object has two maps from the left-hand object. We label the dots from left to right.
inductive Dot
| xβ | xβ
inductive Arrow : Dot β Dot β Type
| fβ : Arrow .xβ .xβ
| fβ : Arrow .xβ .xβ
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : Β¬(HasTerminal (Paths Dot)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)β’ False
have h_all_uniq
: β (x : Paths Dot), Unique (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)x:Paths Dotβ’ Unique (x βΆ β€_ Paths Dot)
All goals completed! π
have h_all_sub
: β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xx:Paths Dotβ’ Subsingleton (x βΆ β€_ Paths Dot)
All goals completed! π
have h_emptyβ : Β¬(Nonempty (Quiver.Path Dot.xβ Dot.xβ)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_empty:Nonempty (Quiver.Path Dot.xβ Dot.xβ)β’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstancep:Quiver.Path Dot.xβ Dot.xββ’ False
All goals completed! π
have h_nontrivβ : Nontrivial (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch pβ’ β x y, x β y
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch pβ’ Quiver.Hom.toPath Arrow.fβ β Quiver.Hom.toPath Arrow.fβ
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch pH:Quiver.Hom.toPath Arrow.fβ = Quiver.Hom.toPath Arrow.fββ’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch pb_eqβ:Dot.xβ = Dot.xβh_arrow:Dot.xβ = Dot.xβa_eqβΒΉ:Quiver.Path.nil = Quiver.Path.nila_eqβ:Arrow.fβ = Arrow.fββ’ False
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro (Quiver.Hom.toPath Arrow.fβ)
(Exists.intro (Quiver.Hom.toPath Arrow.fβ) fun H β¦
Quiver.Path.cons.noConfusion (Eq.refl Dot.xβ) (heq_of_eq H) fun b_eq h_arrow a_eq a_eq_1 β¦
False.elim (noConfusion_of_Nat Arrow.ctorIdx (eq_of_heq a_eq_1))))hx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro (Quiver.Hom.toPath Arrow.fβ)
(Exists.intro (Quiver.Hom.toPath Arrow.fβ) fun H β¦
Quiver.Path.cons.noConfusion (Eq.refl Dot.xβ) (heq_of_eq H) fun b_eq h_arrow a_eq a_eq_1 β¦
False.elim (noConfusion_of_Nat Arrow.ctorIdx (eq_of_heq a_eq_1))))hx:(β€_ Paths Dot) = Dot.xββ’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro (Quiver.Hom.toPath Arrow.fβ)
(Exists.intro (Quiver.Hom.toPath Arrow.fβ) fun H β¦
Quiver.Path.cons.noConfusion (Eq.refl Dot.xβ) (heq_of_eq H) fun b_eq h_arrow a_eq a_eq_1 β¦
False.elim (noConfusion_of_Nat Arrow.ctorIdx (eq_of_heq a_eq_1))))hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xβh_uniqβ:Unique (Quiver.Path Dot.xβ Dot.xβ) := h_all_uniq Dot.xββ’ False
have h_nonemptyβ : Nonempty (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
All goals completed! π
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ) :=
nontrivial_iff.mpr
(Exists.intro (Quiver.Hom.toPath Arrow.fβ)
(Exists.intro (Quiver.Hom.toPath Arrow.fβ) fun H β¦
Quiver.Path.cons.noConfusion (Eq.refl Dot.xβ) (heq_of_eq H) fun b_eq h_arrow a_eq a_eq_1 β¦
False.elim (noConfusion_of_Nat Arrow.ctorIdx (eq_of_heq a_eq_1))))hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_nontrivβ:Nontrivial (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False
All goals completed! π
(f) In π(G_f), neither the leftmost object nor the centre object has a map from the rightmost object, while the rightmost object has no map from either the leftmost object nor the centre object. We label the dots from left to right again.
inductive Dot
| xβ | xβ | xβ
inductive Arrow : Dot β Dot β Type
| fβ : Arrow .xβ .xβ
instance : Quiver Dot where
Hom := Arrow
open Limits in
example : Β¬(HasTerminal (Paths Dot)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)β’ False
have h_all_uniq
: β (x : Paths Dot), Unique (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)x:Paths Dotβ’ Unique (x βΆ β€_ Paths Dot)
All goals completed! π
have h_all_sub
: β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xx:Paths Dotβ’ Subsingleton (x βΆ β€_ Paths Dot)
All goals completed! π
have h_emptyβ : Β¬(Nonempty (Quiver.Path Dot.xβ Dot.xβ)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_empty:Nonempty (Quiver.Path Dot.xβ Dot.xβ)β’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstancep:Quiver.Path Dot.xβ Dot.xββ’ False
match p with
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstancep:Quiver.Path Dot.xβ Dot.xβbβ:Dotp':Quiver.Path Dot.xβ bβq:bβ βΆ Dot.xββ’ False
match p' with
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstancep:Quiver.Path Dot.xβ Dot.xβbβ:Dotp':Quiver.Path Dot.xβ bβq:Dot.xβ βΆ Dot.xββ’ False
All goals completed! π
have h_emptyβ : Β¬(Nonempty (Quiver.Path Dot.xβ Dot.xβ)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_empty:Nonempty (Quiver.Path Dot.xβ Dot.xβ)β’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qp:Quiver.Path Dot.xβ Dot.xββ’ False
All goals completed! π
have h_emptyβ : Β¬(Nonempty (Quiver.Path Dot.xβ Dot.xβ)) := β’ Β¬HasTerminal (Paths Dot)
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_empty:Nonempty (Quiver.Path Dot.xβ Dot.xβ)β’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch pp:Quiver.Path Dot.xβ Dot.xββ’ False
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ Falseh:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ β€_ Paths Dot) := fun x β¦ uniqueToTerminal xh_all_sub:β (x : Paths Dot), Subsingleton (x βΆ β€_ Paths Dot) := fun x β¦ inferInstanceh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) :=
id fun h_empty β¦
Nonempty.casesOn h_empty fun p β¦
match p with
| p'.cons q =>
match b, p', q with
| .(Dot.xβ), Quiver.Path.nil, q => nomatch qh_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch ph_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ) := id fun h_empty β¦ Nonempty.casesOn h_empty fun p β¦ nomatch phx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xβh_uniqβ:Unique (Quiver.Path Dot.xβ Dot.xβ) := h_all_uniq Dot.xββ’ False
have h_nonemptyβ : Nonempty (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
All goals completed! π
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xβh_uniqβ:Unique (Quiver.Path Dot.xβ Dot.xβ) := h_all_uniq Dot.xββ’ False
have h_nonemptyβ : Nonempty (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
All goals completed! π
All goals completed! π
h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xββ’ False h:HasTerminal (Paths Dot)h_all_uniq:(x : Paths Dot) β Unique (x βΆ Dot.xβ)h_all_sub:β (x : Paths Dot), Subsingleton (x βΆ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)h_emptyβ:Β¬Nonempty (Quiver.Path Dot.xβ Dot.xβ)hx:(β€_ Paths Dot) = Dot.xβh_uniqβ:Unique (Quiver.Path Dot.xβ Dot.xβ) := h_all_uniq Dot.xββ’ False
have h_nonemptyβ : Nonempty (Quiver.Path Dot.xβ Dot.xβ) := β’ Β¬HasTerminal (Paths Dot)
All goals completed! π
All goals completed! π
3. Commuting diagrams
We say that a diagram of shape G in π commutes if for each pair p, q of dots in G, all paths in G from p to q are interpreted as the same map in π.
The "interpretation" of dots in G as objects of π and paths in G as maps of π is performed by a functor from the free category π(G) to π, written in Lean as CategoryTheory.Paths Dot β₯€ π, where p q : Dot.
Show that a diagram of shape
inductive Dot
| xβ | xβ
inductive Arrow : Dot β Dot β Type
| f : Arrow .xβ .xβ
| g : Arrow .xβ .xβ
instance : Quiver Dot where
Hom := Arrow
commutes if and only if the maps assigned to the two arrows are inverse.
Solution: Exercise 2
We need to show that under a functor from the free category π(G) to π, all paths between each pair of dots in π(G) correspond to the same map in π if and only if the two arrows in the graph correspond to inverse maps in π. Since there are four possible pairings of dots, the proof of the backward ("if") direction contains four parts.
example {π : Type u} [Category.{v, u} π] (F : Paths Dot β₯€ π) :
-- Let xβ' be the object in π associated with Dot.xβ in πΉ(G)
let xβ' : π := F.obj Dot.xβ
-- Let xβ' be the object in π associated with Dot.xβ in πΉ(G)
let xβ' : π := F.obj Dot.xβ
-- Let f' be the morphism in π associated with Arrow.f in πΉ(G)
let f' : xβ' βΆ xβ' := F.map (Quiver.Hom.toPath Arrow.f)
-- Let g' be the morphism in π associated with Arrow.g in πΉ(G)
let g' : xβ' βΆ xβ' := F.map (Quiver.Hom.toPath Arrow.g)
-- Dot.xβ βΆ Dot.xβ is interpreted as the identity on xβ' in π
(β pβ : Quiver.Path Dot.xβ Dot.xβ, F.map pβ = π xβ') β§
-- Dot.xβ βΆ Dot.xβ is interpreted as the identity on xβ' in π
(β pβ : Quiver.Path Dot.xβ Dot.xβ, F.map pβ = π xβ') β§
-- Dot.xβ βΆ Dot.xβ is interpreted as f' in π
(β pββ : Quiver.Path Dot.xβ Dot.xβ, F.map pββ = f') β§
-- Dot.xβ βΆ Dot.xβ is interpreted as g' in π
(β pββ : Quiver.Path Dot.xβ Dot.xβ, F.map pββ = g') β
-- The maps assigned to the two arrows in G are inverse
g' β f' = π xβ' β§ f' β g' = π xβ' := π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ let xβ' := F.obj Dot.xβ;
let xβ' := F.obj Dot.xβ;
let f' := F.map (Quiver.Hom.toPath Arrow.f);
let g' := F.map (Quiver.Hom.toPath Arrow.g);
((β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π xβ') β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π xβ') β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = f') β§ β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = g') β
g' β f' = π xβ' β§ f' β g' = π xβ'
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ ((β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)) β
F.map (Quiver.Hom.toPath Arrow.g) β F.map (Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f) β F.map (Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ F.map (Quiver.Hom.toPath Arrow.g) β F.map (Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f) β F.map (Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ) β
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)
-- Proof of the forward ("only if") direction
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ ((β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)) β
F.map (Quiver.Hom.toPath Arrow.g) β F.map (Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f) β F.map (Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ) repeat π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ ((β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)) β
F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)β’ F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)β’ F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)β’ F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)β’ F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hβ:β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)hββ:β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)β’ F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ) All goals completed! π
-- Proof of the backward ("if") direction
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ F.map (Quiver.Hom.toPath Arrow.g) β F.map (Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f) β F.map (Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ) β
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g) repeat π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πβ’ F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ) β§
F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ) β
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ (β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)) β§
(β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)) β§
β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ)π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f)π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g)
-- β pβ : Quiver.Path Dot.xβ Dot.xβ, F.map pβ = π xβ'
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ) let rec auxβ (p : Quiver.Path Dot.xβ Dot.xβ)
: F.map p = π (F.obj Dot.xβ) := π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = π (F.obj Dot.xβ)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map Quiver.Path.nil = π (F.obj Dot.xβ)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (tail.cons Arrow.g) = π (F.obj Dot.xβ)
match tail with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((tail'.cons Arrow.f).cons Arrow.g) = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) β tail') = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map tail' = π (F.obj Dot.xβ)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = π (F.obj Dot.xβ)
All goals completed! π
-- β pβ : Quiver.Path Dot.xβ Dot.xβ, F.map pβ = π xβ'
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pβ : Quiver.Path Dot.xβ Dot.xβ), F.map pβ = π (F.obj Dot.xβ) let rec auxβ (p : Quiver.Path Dot.xβ Dot.xβ)
: F.map p = π (F.obj Dot.xβ) := π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = π (F.obj Dot.xβ)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map Quiver.Path.nil = π (F.obj Dot.xβ)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (tail.cons Arrow.f) = π (F.obj Dot.xβ)
match tail with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((tail'.cons Arrow.g).cons Arrow.f) = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) β tail') = π (F.obj Dot.xβ)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map tail' = π (F.obj Dot.xβ)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = π (F.obj Dot.xβ)
All goals completed! π
-- β pββ : Quiver.Path Dot.xβ Dot.xβ, F.map pββ = f'
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.f) let rec auxββ (p : Quiver.Path Dot.xβ Dot.xβ)
: F.map p = F.map (Quiver.Hom.toPath Arrow.f) := π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = F.map (Quiver.Hom.toPath Arrow.f)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (tail.cons Arrow.f) = F.map (Quiver.Hom.toPath Arrow.f)
match tail with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (Quiver.Path.nil.cons Arrow.f) = F.map (Quiver.Hom.toPath Arrow.f)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((tail'.cons Arrow.g).cons Arrow.f) = F.map (Quiver.Hom.toPath Arrow.f)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) β tail') = F.map (Quiver.Hom.toPath Arrow.f)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map tail' = F.map (Quiver.Hom.toPath Arrow.f)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = F.map (Quiver.Hom.toPath Arrow.f)
All goals completed! π
-- β pββ : Quiver.Path Dot.xβ Dot.xβ, F.map pββ = g'
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)β’ β (pββ : Quiver.Path Dot.xβ Dot.xβ), F.map pββ = F.map (Quiver.Hom.toPath Arrow.g) let rec auxββ (p : Quiver.Path Dot.xβ Dot.xβ)
: F.map p = F.map (Quiver.Hom.toPath Arrow.g) := π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = F.map (Quiver.Hom.toPath Arrow.g)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (tail.cons Arrow.g) = F.map (Quiver.Hom.toPath Arrow.g)
match tail with
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xββ’ F.map (Quiver.Path.nil.cons Arrow.g) = F.map (Quiver.Hom.toPath Arrow.g)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((tail'.cons Arrow.f).cons Arrow.g) = F.map (Quiver.Hom.toPath Arrow.g)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map ((Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) β tail') = F.map (Quiver.Hom.toPath Arrow.g)
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xβtail:Quiver.Path Dot.xβ Dot.xβtail':Quiver.Path Dot.xβ Dot.xββ’ F.map tail' = F.map (Quiver.Hom.toPath Arrow.g)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Dot β₯€ πhβ:F.map (Quiver.Hom.toPath Arrow.g β Quiver.Hom.toPath Arrow.f) = π (F.obj Dot.xβ)hβ:F.map (Quiver.Hom.toPath Arrow.f β Quiver.Hom.toPath Arrow.g) = π (F.obj Dot.xβ)p:Quiver.Path Dot.xβ Dot.xββ’ F.map p = F.map (Quiver.Hom.toPath Arrow.g)
All goals completed! π
In the diagram
inductive Vertex
| A | B | C | D | E | F | G | H
inductive Edge : Vertex β Vertex β Type
| f : Edge .A .B
| g : Edge .B .C
| h : Edge .C .D
| i : Edge .A .E
| j : Edge .B .F
| k : Edge .C .G
| l : Edge .D .H
| m : Edge .E .F
| n : Edge .F .G
| p : Edge .G .H
instance : Quiver Vertex where
Hom := Edge
the three equations (1) {jf = mi}, (2) {kg = nj}, (3) {lh = pk} actually force the diagram to commute; but you are just asked to prove that
pnmi = lhgf
Solution: Exercise 3
We can prove this directly in the free category on the graph using only the associative property of path composition.
open Edge Quiver Quiver.Hom Quiver.Path Vertex in
example
(hβ : (toPath f |>.comp (toPath j)) =
(toPath i |>.comp (toPath m) : Path A F))
(hβ : (toPath g |>.comp (toPath k)) =
(toPath j |>.comp (toPath n) : Path B G))
(hβ : (toPath h |>.comp (toPath l)) =
(toPath k |>.comp (toPath p) : Path C H))
: (toPath i
|>.comp (toPath m)
|>.comp (toPath n)
|>.comp (toPath p)) =
(toPath f
|>.comp (toPath g)
|>.comp (toPath h)
|>.comp (Hom.toPath l) : Path A H) := hβ:(toPath f).comp (toPath j) = (toPath i).comp (toPath m)hβ:(toPath g).comp (toPath k) = (toPath j).comp (toPath n)hβ:(toPath h).comp (toPath l) = (toPath k).comp (toPath p)β’ (((toPath i).comp (toPath m)).comp (toPath n)).comp (toPath p) =
(((toPath f).comp (toPath g)).comp (toPath h)).comp (toPath l)
hβ:(toPath f).comp (toPath j) = (toPath i).comp (toPath m)hβ:(toPath g).comp (toPath k) = (toPath j).comp (toPath n)hβ:(toPath h).comp (toPath l) = (toPath k).comp (toPath p)β’ ((toPath f).comp (toPath j)).comp ((toPath n).comp (toPath p)) =
(((toPath f).comp (toPath g)).comp (toPath h)).comp (toPath l)
hβ:(toPath f).comp (toPath j) = (toPath i).comp (toPath m)hβ:(toPath g).comp (toPath k) = (toPath j).comp (toPath n)hβ:(toPath h).comp (toPath l) = (toPath k).comp (toPath p)β’ ((toPath f).comp ((toPath g).comp (toPath k))).comp (toPath p) =
(((toPath f).comp (toPath g)).comp (toPath h)).comp (toPath l)
hβ:(toPath f).comp (toPath j) = (toPath i).comp (toPath m)hβ:(toPath g).comp (toPath k) = (toPath j).comp (toPath n)hβ:(toPath h).comp (toPath l) = (toPath k).comp (toPath p)β’ (toPath f).comp ((toPath g).comp ((toPath h).comp (toPath l))) =
(((toPath f).comp (toPath g)).comp (toPath h)).comp (toPath l)
repeat All goals completed! π
For each of these diagrams, find a shortest list of equations that will make it commute.
...
After you have found the answers try to explain clearly how you know, from the equations you chose, that all possible paths give equal composites.
Solution: Exercise 4
(a) A shortest list of equations that will make diagram (a) commute is:
gf = 1_A, \quad fg = 1_B, \quad g = h
(cf. Exercise 2 above.)
inductive Vertex
| A | B
inductive Edge : Vertex β Vertex β Type
| f : Edge .A .B
| g : Edge .B .A
| h : Edge .B .A
instance : Quiver Vertex where
Hom := Edge
example {π : Type u} [Category.{v, u} π] (F : Paths Vertex β₯€ π) :
-- Let A' be the object in π associated with Vertex.A in πΉ(G)
let A' : π := F.obj Vertex.A
-- Let B' be the object in π associated with Vertex.B in πΉ(G)
let B' : π := F.obj Vertex.B
-- Let f' be the morphism in π associated with Edge.f in πΉ(G)
let f' : A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)
-- Let g' be the morphism in π associated with Edge.g in πΉ(G)
let g' : B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)
-- Let h' be the morphism in π associated with Edge.h in πΉ(G)
let h' : B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)
-- The 3 equations required to make the diagram commute
g' β f' = π A' β§
f' β g' = π B' β§
g' = h' β
-- .A βΆ .A is interpreted as the identity on A' in π
(β p : Quiver.Path Vertex.A Vertex.A, F.map p = π A') β§
-- .B βΆ .B is interpreted as the identity on B' in π
(β p : Quiver.Path Vertex.B Vertex.B, F.map p = π B') β§
-- .A βΆ .B is interpreted as f' in π
(β p : Quiver.Path Vertex.A Vertex.B, F.map p = f') β§
-- .B βΆ .A is interpreted as g' in π
(β p : Quiver.Path Vertex.B Vertex.A, F.map p = g') := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πβ’ let A' := F.obj Vertex.A;
let B' := F.obj Vertex.B;
let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
g' β f' = π A' β§ f' β g' = π B' β§ g' = h' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g'
intro A' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bβ’ let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
g' β f' = π A' β§ f' β g' = π B' β§ g' = h' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)β’ let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
g' β f' = π A' β§ f' β g' = π B' β§ g' = h' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)β’ let h' := F.map (Quiver.Hom.toPath Edge.h);
g' β f' = π A' β§ f' β g' = π B' β§ g' = h' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)β’ g' β f' = π A' β§ f' β g' = π B' β§ g' = h' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:g' β f' = π A'hβ:f' β g' = π B'hβ:g' = h'β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g'
-- β p : Quiver.Path Vertex.A Vertex.A, F.map p = π A'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A' let rec auxAA (p : Quiver.Path Vertex.A Vertex.A)
: F.map p = π (F.obj Vertex.A) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Aβ’ F.map p = π (F.obj Vertex.A)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Aβ’ F.map Quiver.Path.nil = π (F.obj Vertex.A)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Ae:Vertex.B βΆ Vertex.Aβ’ F.map ((tail.cons Edge.f).cons e) = π (F.obj Vertex.A)
have : F.map ((tail.cons Edge.f).cons e) =
F.map ((Quiver.Hom.toPath Edge.g β
Quiver.Hom.toPath Edge.f) β tail) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Aβ’ F.map p = π (F.obj Vertex.A)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.g) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.h) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.g) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.h) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Aβ’ F.map (Quiver.Hom.toPath Edge.h β Quiver.Hom.toPath Edge.f β tail) =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Ae:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.f).cons Edge.g)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.f β tail) (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
_a β F.map (Quiver.Hom.toPath Edge.f β tail) =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.f β tail) (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ F.map _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Category.assoc tail (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.g))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) = π (F.obj Vertex.A)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Atail:Quiver.Path Vertex.A Vertex.Ae:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.f).cons Edge.g)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.f β tail) (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
_a β F.map (Quiver.Hom.toPath Edge.f β tail) =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.f β tail) (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ F.map _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Category.assoc tail (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.g))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map tail = π (F.obj Vertex.A)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Aβ’ F.map p = π A'
All goals completed! π
-- β p : Quiver.Path Vertex.B Vertex.B, F.map p = π B'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B' let rec auxBB (p : Quiver.Path Vertex.B Vertex.B)
: F.map p = π (F.obj Vertex.B) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Bβ’ F.map p = π (F.obj Vertex.B)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Bβ’ F.map Quiver.Path.nil = π (F.obj Vertex.B)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Be:Vertex.B βΆ Vertex.Aβ’ F.map ((tail.cons e).cons Edge.f) = π (F.obj Vertex.B)
have : F.map ((tail.cons e).cons Edge.f) =
F.map ((Quiver.Hom.toPath Edge.f β
Quiver.Hom.toPath Edge.g) β tail) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Bβ’ F.map p = π (F.obj Vertex.B)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Bβ’ F.map ((tail.cons Edge.g).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Bβ’ F.map ((tail.cons Edge.h).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Bβ’ F.map ((tail.cons Edge.g).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Bβ’ F.map ((tail.cons Edge.h).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Bβ’ F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.h β tail) =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Be:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.g).cons Edge.f)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.h β tail) (Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a β F.map tail =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.g β tail) (Quiver.Hom.toPath Edge.f)))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ F.map _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Category.assoc tail (Quiver.Hom.toPath Edge.g) (Quiver.Hom.toPath Edge.f))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) = π (F.obj Vertex.B)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Btail:Quiver.Path Vertex.B Vertex.Be:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.g).cons Edge.f)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.h β tail) (Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a β F.map tail =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦
F.map (Quiver.Hom.toPath Edge.f) β _a =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.g β tail) (Quiver.Hom.toPath Edge.f)))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ F.map _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Category.assoc tail (Quiver.Hom.toPath Edge.g) (Quiver.Hom.toPath Edge.f))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map tail = π (F.obj Vertex.B)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Bβ’ F.map p = π B'
All goals completed! π
-- β p : Quiver.Path Vertex.A Vertex.B, F.map p = f'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f' let rec auxAB (p : Quiver.Path Vertex.A Vertex.B)
: F.map p = F.map (Quiver.Hom.toPath Edge.f) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Bβ’ F.map p = F.map (Quiver.Hom.toPath Edge.f)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Bβ’ F.map (Quiver.Path.nil.cons Edge.f) = F.map (Quiver.Hom.toPath Edge.f)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Be:Vertex.B βΆ Vertex.Aβ’ F.map ((tail.cons e).cons Edge.f) = F.map (Quiver.Hom.toPath Edge.f)
have : F.map ((tail.cons e).cons Edge.f) =
F.map ((Quiver.Hom.toPath Edge.f β
Quiver.Hom.toPath Edge.g) β tail) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Bβ’ F.map p = F.map (Quiver.Hom.toPath Edge.f)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Bβ’ F.map ((tail.cons Edge.g).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Bβ’ F.map ((tail.cons Edge.h).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Bβ’ F.map ((tail.cons Edge.g).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Bβ’ F.map ((tail.cons Edge.h).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Bβ’ F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.h) β tail) =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Be:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.g).cons Edge.f)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.h) (Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
(F.map (Quiver.Hom.toPath Edge.f) β _a) β F.map tail =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.g) (Quiver.Hom.toPath Edge.f)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g)))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) = F.map (Quiver.Hom.toPath Edge.f)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Btail:Quiver.Path Vertex.A Vertex.Be:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons e).cons Edge.f) = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.g).cons Edge.f)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.h) (Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
(F.map (Quiver.Hom.toPath Edge.f) β _a) β F.map tail =
F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.g) (Quiver.Hom.toPath Edge.f)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g)))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) β tail)))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map tail = F.map (Quiver.Hom.toPath Edge.f)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.A Vertex.Bβ’ F.map p = f'
All goals completed! π
-- β p : Quiver.Path Vertex.B Vertex.A, F.map p = g'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)β’ β (p : Quiver.Path Vertex.B Vertex.A), F.map p = g' let rec auxBA (p : Quiver.Path Vertex.B Vertex.A)
: F.map p = F.map (Quiver.Hom.toPath Edge.g) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map p = F.map (Quiver.Hom.toPath Edge.g)
match p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Ae:Vertex.B βΆ Vertex.Aβ’ F.map (Quiver.Path.nil.cons e) = F.map (Quiver.Hom.toPath Edge.g)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map (Quiver.Path.nil.cons Edge.g) = F.map (Quiver.Hom.toPath Edge.g)π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map (Quiver.Path.nil.cons Edge.h) = F.map (Quiver.Hom.toPath Edge.g)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map (Quiver.Path.nil.cons Edge.g) = F.map (Quiver.Hom.toPath Edge.g) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map (Quiver.Path.nil.cons Edge.h) = F.map (Quiver.Hom.toPath Edge.g) π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map (Quiver.Path.nil.cons Edge.h) = F.map (Quiver.Hom.toPath Edge.h)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Ae:Vertex.B βΆ Vertex.Aβ’ F.map ((tail.cons Edge.f).cons e) = F.map (Quiver.Hom.toPath Edge.g)
have : F.map ((tail.cons Edge.f).cons e) =
F.map ((Quiver.Hom.toPath Edge.g β
Quiver.Hom.toPath Edge.f) β tail) := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map p = F.map (Quiver.Hom.toPath Edge.g)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.g) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.h) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.g) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Aβ’ F.map ((tail.cons Edge.f).cons Edge.h) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Aβ’ F.map ((Quiver.Hom.toPath Edge.h β Quiver.Hom.toPath Edge.f) β tail) =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Ae:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.f).cons Edge.g)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.h β Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
(_a β F.map (Quiver.Hom.toPath Edge.f)) β F.map tail =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f)))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) = F.map (Quiver.Hom.toPath Edge.g)
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Atail:Quiver.Path Vertex.B Vertex.Ae:Vertex.B βΆ Vertex.Athis:F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail) :=
Edge.casesOn (motive := fun a a_1 x β¦
Vertex.B = a β
Vertex.A = a_1 β
e β x β F.map ((tail.cons Edge.f).cons e) = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
e (fun h β¦ False.elim (noConfusion_of_Nat Vertex.ctorIdx h))
(fun h h_1 h_2 β¦ Eq.symm (eq_of_heq h_2) βΈ Eq.refl (F.map ((tail.cons Edge.f).cons Edge.g)))
(fun h h_1 h_2 β¦
Eq.symm (eq_of_heq h_2) βΈ
id
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp tail (Quiver.Hom.toPath Edge.h β Quiver.Hom.toPath Edge.f))))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(F.map_comp (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.h))))
(Eq.mpr
(id
(congrArg
(fun _a β¦
(_a β F.map (Quiver.Hom.toPath Edge.f)) β F.map tail =
F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm hβ)))
(Eq.mpr
(id
(congrArg
(fun _a β¦ _a β F.map tail = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp (Quiver.Hom.toPath Edge.f) (Quiver.Hom.toPath Edge.g)))))
(Eq.mpr
(id
(congrArg (fun _a β¦ _a = F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail))
(Eq.symm (F.map_comp tail (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f)))))
(Eq.refl (F.map ((Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) β tail)))))))))
(Eq.refl Vertex.B) (Eq.refl Vertex.A) (HEq.refl e)β’ F.map tail = F.map (Quiver.Hom.toPath Edge.g)
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.g β Quiver.Hom.toPath Edge.f) = π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f β Quiver.Hom.toPath Edge.g) = π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) = F.map (Quiver.Hom.toPath Edge.h)p:Quiver.Path Vertex.B Vertex.Aβ’ F.map p = g'
All goals completed! π
(b) A shortest list of equations that will make diagram (b) commute is:
hgf = 1_A, \quad fhg = 1_B, \quad gfh = 1_C
Since there are now nine possible pairings of dots, we change our approach from Exercises 2 and 4(a) above and instead employ a more efficient proof by induction.
inductive Vertex
| A | B | C
inductive Edge : Vertex β Vertex β Type
| f : Edge .A .B
| g : Edge .B .C
| h : Edge .C .A
instance : Quiver Vertex where
Hom := Edge
example {π : Type u} [Category.{v, u} π] (F : Paths Vertex β₯€ π) :
-- Let A' be the object in π associated with Vertex.A in πΉ(G)
let A' : π := F.obj Vertex.A
-- Let B' be the object in π associated with Vertex.B in πΉ(G)
let B' : π := F.obj Vertex.B
-- Let C' be the object in π associated with Vertex.C in πΉ(G)
let C' : π := F.obj Vertex.C
-- Let f' be the morphism in π associated with Edge.f in πΉ(G)
let f' : A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)
-- Let g' be the morphism in π associated with Edge.g in πΉ(G)
let g' : B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)
-- Let h' be the morphism in π associated with Edge.h in πΉ(G)
let h' : C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)
-- The 3 equations required to make the diagram commute
h' β g' β f' = π A' β§
f' β h' β g' = π B' β§
g' β f' β h' = π C' β
-- .A βΆ .A is interpreted as the identity on A' in π
(β p : Quiver.Path Vertex.A Vertex.A, F.map p = π A') β§
-- .B βΆ .B is interpreted as the identity on B' in π
(β p : Quiver.Path Vertex.B Vertex.B, F.map p = π B') β§
-- .C βΆ .C is interpreted as the identity on C' in π
(β p : Quiver.Path Vertex.C Vertex.C, F.map p = π C') β§
-- .A βΆ .B is interpreted as f' in π
(β p : Quiver.Path Vertex.A Vertex.B, F.map p = f') β§
-- .B βΆ .C is interpreted as g' in π
(β p : Quiver.Path Vertex.B Vertex.C, F.map p = g') β§
-- .C βΆ .A is interpreted as h' in π
(β p : Quiver.Path Vertex.C Vertex.A, F.map p = h') β§
-- .A βΆ .C is interpreted as g' β f' in π
(β p : Quiver.Path Vertex.A Vertex.C, F.map p = g' β f') β§
-- .B βΆ .A is interpreted as h' β g' in π
(β p : Quiver.Path Vertex.B Vertex.A, F.map p = h' β g') β§
-- .C βΆ .B is interpreted as f' β h' in π
(β p : Quiver.Path Vertex.C Vertex.B, F.map p = f' β h') := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πβ’ let A' := F.obj Vertex.A;
let B' := F.obj Vertex.B;
let C' := F.obj Vertex.C;
let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h'
intro A' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bβ’ let C' := F.obj Vertex.C;
let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cβ’ let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)β’ let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)β’ let h' := F.map (Quiver.Hom.toPath Edge.h);
h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)β’ h' β g' β f' = π A' β§ f' β h' β g' = π B' β§ g' β f' β h' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:h' β g' β f' = π A'hβ:f' β h' β g' = π B'hβ:g' β f' β h' = π C'β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h'
suffices β {u v : Vertex} (p : Quiver.Path u v), F.map p =
match u, v with
| .A, .A => π A'
| .B, .B => π B'
| .C, .C => π C'
| .A, .B => f'
| .B, .C => g'
| .C, .A => h'
| .A, .C => g' β f'
| .B, .A => h' β g'
| .C, .B => f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:h' β g' β f' = π A'hβ:f' β h' β g' = π B'hβ:g' β f' β h' = π C'this:β {u v : Vertex} (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h' :=
?m.336β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = f') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = g') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = h') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = g' β f') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = h' β g') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = f' β h'
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)β’ β {u v : Vertex} (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
intro u π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexβ’ β (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexp:Quiver.Path u vβ’ F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
induction p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexβ’ F.map Quiver.Path.nil =
match u, u, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.A, Vertex.A, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.B, Vertex.B, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.C, Vertex.C, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
all_goals
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil = π C'
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ F.map (p.cons e) =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ F.map (e.toPath β p) =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.A bβih:F.map p =
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.A, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.B bβih:F.map p =
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.B, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.C bβih:F.map p =
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.C, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.A bβih:F.map p =
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.A, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.B bβih:F.map p =
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.B, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.C bβih:F.map p =
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map e.toPath β
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.C, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Aih:F.map p =
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map (Quiver.Hom.toPath Edge.f) β
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.C, Vertex.B, p.cons Edge.f with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Bih:F.map p =
match Vertex.C, Vertex.B, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map (Quiver.Hom.toPath Edge.g) β
match Vertex.C, Vertex.B, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.C, Vertex.C, p.cons Edge.g with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ (F.map (Quiver.Hom.toPath Edge.h) β
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h') =
match Vertex.C, Vertex.A, p.cons Edge.h with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'
all_goals
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.g)h':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.h)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.f) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => f'
| Vertex.B, Vertex.C, p => g'
| Vertex.C, Vertex.A, p => h'
| Vertex.A, Vertex.C, p => g' β f'
| Vertex.B, Vertex.A, p => h' β g'
| Vertex.C, Vertex.B, p => f' β h'β’ F.map (Quiver.Hom.toPath Edge.h) β π (F.obj Vertex.C) = F.map (Quiver.Hom.toPath Edge.h)
try All goals completed! π
try first | All goals completed! π | All goals completed! π | All goals completed! π
(c) A shortest list of equations that will make diagram (c) commute is:
jhg = 1_A, \quad gjh = 1_B, \quad hgj = 1_C, \quad f = g, \quad i = 1_C
inductive Vertex
| A | B | C
inductive Edge : Vertex β Vertex β Type
| f : Edge .A .B
| g : Edge .A .B
| h : Edge .B .C
| i : Edge .C .C
| j : Edge .C .A
instance : Quiver Vertex where
Hom := Edge
example {π : Type u} [Category.{v, u} π] (F : Paths Vertex β₯€ π) :
-- Let A' be the object in π associated with Vertex.A in πΉ(G)
let A' : π := F.obj Vertex.A
-- Let B' be the object in π associated with Vertex.B in πΉ(G)
let B' : π := F.obj Vertex.B
-- Let C' be the object in π associated with Vertex.C in πΉ(G)
let C' : π := F.obj Vertex.C
-- Let f' be the morphism in π associated with Edge.f in πΉ(G)
let f' : A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)
-- Let g' be the morphism in π associated with Edge.g in πΉ(G)
let g' : A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)
-- Let h' be the morphism in π associated with Edge.h in πΉ(G)
let h' : B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)
-- Let i' be the morphism in π associated with Edge.i in πΉ(G)
let i' : C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)
-- Let j' be the morphism in π associated with Edge.j in πΉ(G)
let j' : C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)
-- The 5 equations required to make the diagram commute
j' β h' β g' = π A' β§
g' β j' β h' = π B' β§
h' β g' β j' = π C' β§
f' = g' β§
i' = π C' β
-- .A βΆ .A is interpreted as the identity on A' in π
(β p : Quiver.Path Vertex.A Vertex.A, F.map p = π A') β§
-- .B βΆ .B is interpreted as the identity on B' in π
(β p : Quiver.Path Vertex.B Vertex.B, F.map p = π B') β§
-- .C βΆ .C is interpreted as the identity on C' in π
(β p : Quiver.Path Vertex.C Vertex.C, F.map p = π C') β§
-- .A βΆ .B is interpreted as g' in π
(β p : Quiver.Path Vertex.A Vertex.B, F.map p = g') β§
-- .B βΆ .C is interpreted as h' in π
(β p : Quiver.Path Vertex.B Vertex.C, F.map p = h') β§
-- .C βΆ .A is interpreted as j' in π
(β p : Quiver.Path Vertex.C Vertex.A, F.map p = j') β§
-- .A βΆ .C is interpreted as h' β g' in π
(β p : Quiver.Path Vertex.A Vertex.C, F.map p = h' β g') β§
-- .B βΆ .A is interpreted as j' β h' in π
(β p : Quiver.Path Vertex.B Vertex.A, F.map p = j' β h') β§
-- .C βΆ .B is interpreted as g' β j' in π
(β p : Quiver.Path Vertex.C Vertex.B, F.map p = g' β j') := π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πβ’ let A' := F.obj Vertex.A;
let B' := F.obj Vertex.B;
let C' := F.obj Vertex.C;
let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j'
intro A' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.Bβ’ let C' := F.obj Vertex.C;
let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cβ’ let f' := F.map (Quiver.Hom.toPath Edge.f);
let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)β’ let g' := F.map (Quiver.Hom.toPath Edge.g);
let h' := F.map (Quiver.Hom.toPath Edge.h);
let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)β’ let h' := F.map (Quiver.Hom.toPath Edge.h);
let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)β’ let i' := F.map (Quiver.Hom.toPath Edge.i);
let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)β’ let j' := F.map (Quiver.Hom.toPath Edge.j);
j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)β’ j' β h' β g' = π A' β§ g' β j' β h' = π B' β§ h' β g' β j' = π C' β§ f' = g' β§ i' = π C' β
(β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:j' β h' β g' = π A'hβ:g' β j' β h' = π B'hβ:h' β g' β j' = π C'hβ:f' = g'hβ
:i' = π C'β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j'
suffices β {u v : Vertex} (p : Quiver.Path u v), F.map p =
match u, v with
| .A, .A => π A'
| .B, .B => π B'
| .C, .C => π C'
| .A, .B => g'
| .B, .C => h'
| .C, .A => j'
| .A, .C => h' β g'
| .B, .A => j' β h'
| .C, .B => g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:j' β h' β g' = π A'hβ:g' β j' β h' = π B'hβ:h' β g' β j' = π C'hβ:f' = g'hβ
:i' = π C'this:β {u v : Vertex} (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j' :=
?m.388β’ (β (p : Quiver.Path Vertex.A Vertex.A), F.map p = π A') β§
(β (p : Quiver.Path Vertex.B Vertex.B), F.map p = π B') β§
(β (p : Quiver.Path Vertex.C Vertex.C), F.map p = π C') β§
(β (p : Quiver.Path Vertex.A Vertex.B), F.map p = g') β§
(β (p : Quiver.Path Vertex.B Vertex.C), F.map p = h') β§
(β (p : Quiver.Path Vertex.C Vertex.A), F.map p = j') β§
(β (p : Quiver.Path Vertex.A Vertex.C), F.map p = h' β g') β§
(β (p : Quiver.Path Vertex.B Vertex.A), F.map p = j' β h') β§
β (p : Quiver.Path Vertex.C Vertex.B), F.map p = g' β j'
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)β’ β {u v : Vertex} (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
intro u π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexβ’ β (p : Quiver.Path u v),
F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexp:Quiver.Path u vβ’ F.map p =
match u, v, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
induction p with
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexβ’ F.map Quiver.Path.nil =
match u, u, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.A, Vertex.A, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.B, Vertex.B, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil =
match Vertex.C, Vertex.C, Quiver.Path.nil with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
all_goals
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexβ’ F.map Quiver.Path.nil = π C'
All goals completed! π
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ F.map (p.cons e) =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ F.map (e.toPath β p) =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)u:Vertexv:Vertexbβ:Vertexcβ:Vertexp:Quiver.Path u bβe:bβ βΆ cβih:F.map p =
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match u, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match u, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.A bβih:F.map p =
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.A, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.B bβih:F.map p =
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.B, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.C bβih:F.map p =
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.A bβih:F.map p =
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.A, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.A, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.B bβih:F.map p =
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.B, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.B, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexbβ:Vertexcβ:Vertexe:bβ βΆ cβp:Quiver.Path Vertex.C bβih:F.map p =
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map e.toPath β
match Vertex.C, bβ, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, cβ, p.cons e with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j' π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Aih:F.map p =
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map (Quiver.Hom.toPath Edge.f) β
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, Vertex.B, p.cons Edge.f with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Aih:F.map p =
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map (Quiver.Hom.toPath Edge.g) β
match Vertex.C, Vertex.A, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, Vertex.B, p.cons Edge.g with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Bih:F.map p =
match Vertex.C, Vertex.B, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map (Quiver.Hom.toPath Edge.h) β
match Vertex.C, Vertex.B, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, Vertex.C, p.cons Edge.h with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map (Quiver.Hom.toPath Edge.i) β
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, Vertex.C, p.cons Edge.i with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ (F.map (Quiver.Hom.toPath Edge.j) β
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j') =
match Vertex.C, Vertex.A, p.cons Edge.j with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'
all_goals
π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ F.map (Quiver.Hom.toPath Edge.j) β π (F.obj Vertex.C) = F.map (Quiver.Hom.toPath Edge.j)
try All goals completed! π
try π:Type uinstβ:Category.{v, u} πF:Paths Vertex β₯€ πA':π := F.obj Vertex.AB':π := F.obj Vertex.BC':π := F.obj Vertex.Cf':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.f)g':A' βΆ B' := F.map (Quiver.Hom.toPath Edge.g)h':B' βΆ C' := F.map (Quiver.Hom.toPath Edge.h)i':C' βΆ C' := F.map (Quiver.Hom.toPath Edge.i)j':C' βΆ A' := F.map (Quiver.Hom.toPath Edge.j)hβ:F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) =
π (F.obj Vertex.A)hβ:F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) β F.map (Quiver.Hom.toPath Edge.h) =
π (F.obj Vertex.B)hβ:F.map (Quiver.Hom.toPath Edge.h) β F.map (Quiver.Hom.toPath Edge.g) β F.map (Quiver.Hom.toPath Edge.j) =
π (F.obj Vertex.C)hβ:F.map (Quiver.Hom.toPath Edge.f) = F.map (Quiver.Hom.toPath Edge.g)hβ
:F.map (Quiver.Hom.toPath Edge.i) = π (F.obj Vertex.C)v:Vertexp:Quiver.Path Vertex.C Vertex.Cih:F.map p =
match Vertex.C, Vertex.C, p with
| Vertex.A, Vertex.A, p => π A'
| Vertex.B, Vertex.B, p => π B'
| Vertex.C, Vertex.C, p => π C'
| Vertex.A, Vertex.B, p => g'
| Vertex.B, Vertex.C, p => h'
| Vertex.C, Vertex.A, p => j'
| Vertex.A, Vertex.C, p => h' β g'
| Vertex.B, Vertex.A, p => j' β h'
| Vertex.C, Vertex.B, p => g' β j'β’ π (F.obj Vertex.C) β π (F.obj Vertex.C) = π (F.obj Vertex.C)
try first | All goals completed! π | All goals completed! π
try first | All goals completed! π | All goals completed! π | All goals completed! π