proposition: Lemma Yoneda_embedding_iso : forall a b : Type, (forall x : Type, (x -> a) -> (x -> b)) ≅ (a -> b).
proof: Proof. intros. unfold isomorphic. exists (fun (f : forall x : Type, (x -> a) -> x -> b) => f _ id). exists (fun (f : a -> b) x k x0 => f (k x0)). extensionalize. extensionality x0. apply Yoneda_embedding_parametricity. Qed.
imports: Hask.Ltac Hask.Prelude Hask.Control.Applicative Hask.Control.Monad Hask.Control.Monad.Cont Hask.Control.Monad.State Hask.Data.Functor.Contravariant Hask.Data.Functor.Identity Hask.Data.Functor.Kan Hask.Data.Functor.Yoneda Hask.Control.Lens Coq.Classes.Morphisms Coq.Setoids.Setoid Coq.Init.Datatypes Coq.Relations.Relation_Definitions FunctionalExtensionality Hask.Data.Functor.Fix Hask.Control.Monad.Freer