proposition: Lemma Church_Foo : forall a b, Foo a b ≅ (forall r, (a -> b -> r) -> (a -> a -> r -> r) -> r -> r).
proof: Proof. intros. rewrite Foo_Fix_FooF; unfold Fix. apply iso_ext; intros. rewrite Coyoneda_alg_iso, FooF_Algebra, exp_add_iso, exp_one_iso, exp_exp_sym_iso, exp_add_iso, !exp_mul_iso, exp_exp_sym_iso. apply f_exp_iso. rewrite exp_exp_sym_iso. reflexivity. 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