proposition: Theorem two_mul_iso : forall a, two * a ≅ a + a.
proof: Proof. intros; exists (fun (p : bool * a) => if fst p then inl (snd p) else inr (snd p)). exists (fun p => match p with | inl x => (true, x) | inr x => (false, x) end). extensionalize. 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