proposition: Theorem coyo_from `{FunctorLaws f} : forall a (x : Coyoneda f a), liftCoyoneda (lowerCoyoneda x) = x.
proof: Proof. intros a [x g h]. unfold lowerCoyoneda. replace (liftCoyoneda ((fmap[f] g) h)) with ((liftCoyoneda \o (fmap[f] g)) h). rewrite <- coyo_lift_naturality. reflexivity. reflexivity. Qed.
imports: Hask.Prelude Hask.Ltac Hask.Data.Functor.Identity Hask.Data.Functor.Kan Hask.Control.Monad FunctionalExtensionality FunctionalExtensionality