Using this somewhat round-about way of constructing an isomorphism from
an equivalence has made typechecking slower in some situations.
E.g. if you're constructing an equivalence from gradLemma and later use
that constructed equivalence to recover the isomorphism, then you
might as well have kept using those functions.
By Andrea
The reason you cannot use cong in [1] is that §2-fromMonad result type
depends on the input, you need a dependent version of cong:
cong-d : ∀ {ℓ} {A : Set ℓ} {ℓ'} {B : A → Set ℓ'} {x y : A}
→ (f : (x : A) → B x)
→ (eq : x ≡ y)
→ PathP (\ i → B (eq i)) (f x) (f y)
cong-d f p = λ i → f (p i)
I attach a modified Voevodsky.agda.
Notice that the definition of "t" is still highlighted in yellow,
that's because it being a homogeneous path depends on the exact
definition of lem, see the comment with the two definitional equality
constraints.