Record IdiomaticTransformation (F G:Applicative) := idiomaticTransformation
{ transform :> forall a, F a -> G a
; _ : forall a (x:a), transform (pure F x) = pure G x
; _ : forall a b (f : F (a -> b)) x, transform (ap f x) = ap (transform f) (transform x)
}.
Section IdiomaticTransformation.
Variables (F G:Applicative).
Variable (eta : IdiomaticTransformation F G).

Lemma idiomaticTransform_sequenceVector n a (v : Vector.t (F a) n) :
eta _ (sequenceVector v) = sequenceVector (Vector.map (eta _) v).