Program Instance liftGenUnsized {A B} (f : A -> B) (g : G A)
`{Unsized _ g} : Unsized (liftGen f g).
Next Obligation.
by rewrite ! semLiftGenSize (unsized s1 s2).
Qed.
Program Instance liftGenMonotonic {A B} (f : A -> B) (g : G A)
`{SizeMonotonic _ g} : SizeMonotonic (liftGen f g).
Next Obligation.
rewrite ! semLiftGenSize. apply imset_incl. by apply monotonic.
Qed.

Lemma semLiftGen2SizeMonotonic {A1 A2 B} (f: A1 -> A2 -> B)
(g1 : G A1) (g2 : G A2)
`{SizeMonotonic _ g1} `{SizeMonotonic _ g2} :
semGen (liftGen2 f g1 g2) <--> f @2: (semGen g1, semGen g2).