Definition extractIT i : IdiomaticTransformation (KSApplicative i i) IdApplicative.

(* Specifications: *)
Lemma duplicate_pure i j k a (x : a) : duplicate j (KSpure i k x) = KSpure i j (KSpure j k x).
Lemma duplicate_ap i j k a b (f : KleeneStore i k (a -> b)) (x : KleeneStore i k a): duplicate j (KSap f x) = ap (a:=ComposeApplicative (KSApplicative i j) (KSApplicative j k)) (duplicate j f) (duplicate j x).