Instance fmapUnsized {A B} (f : A -> B) (g : G A) `{Unsized _ g} :
Unsized (fmap f g).
Instance fmapMonotonic
{A B} (f : A -> B) (g : G A) `{SizeMonotonic _ g} :
SizeMonotonic (fmap f g).

Lemma promoteVariant :
forall {A B : Type} (a : A) (f : A -> SplitPath) (g : G B) size
(r r1 r2 : RandomSeed),
randomSplit r = (r1, r2) ->
run (reallyUnsafePromote (fun a => variant (f a) g)) size r a =
run g size (varySeed (f a) r1).