transEquivDirect (A B:U) (p:Path U A B) : equiv A B = (f,p)
where
- f (x:A) : B = comp p x []
+ f (x:A) : B = trans A B p x
g (y:B) : A = comp (<i>p@-i) y []
lem1 (x:A) : PathP p x (f x) = <i>comp (<j>p@(i/\j)) x [(i=0) -> <j>x]
lem2 (y:B) : PathP p (g y) y = <i>comp (<j>p@(i\/-j)) y [(i=1) -> <j>y]
idEquiv (A:U) : equiv A A = (\ (x:A) -> x, lemSinglContr A)
-transEquiv (A X:U) (p:Path U A X) : equiv A X =
- subst U (equiv A) A X p (idEquiv A)
+transEquiv (A B : U) (p : Path U A B) : equiv A B =
+ subst U (equiv A) A B p (idEquiv A)
+
+compf (A B C : U) (f : B -> C) (g : A -> B) : A -> C =
+ \(a : A) -> f (g a)
+
+transEquivEq (A B : U) (p : Path U A B) :
+ Path (A -> B) (transEquiv A B p).1 (compf A A B (trans A B p) (trans A A (<_> A))) =
+ <_> (transEquiv A B p).1
transDelta (A:U) : equiv A A = transEquiv A A (<i>A)