Definition KSApplicative (i j : Type) : Applicative.Definition Compose_pure (a:Type) (x:a) : FG a :=
  pure F (pure G x).Definition Compose_ap (a b:Type) (f:FG (a -> b)) (x:FG a) : FG b :=
 ap (ap (pure F (fun g x => ap g x)) f) x.

Lemma Compose_composition (a b c:Type) x y (z : FG a) : Compose_ap (Compose_ap (Compose_ap (Compose_pure (fun (f : b -> c) (g : a -> b) (w:a) => f (g w))) x) y) z = Compose_ap x (Compose_ap y z).