Program Instance elementsUnsized {A} {def : A} (l : list A) :
Unsized (elements def l).
Next Obligation.
rewrite ! semElementsSize. by case: l.
Qed.
(* A rather long frequency proof, probably we can do better *)

Lemma pickDrop_In_strong :
forall {A} (l: list (nat * G (option A))) k x,
List.In (k,x) l /\ k <> 0 ->
exists n l',
pickDrop l n = (k,x,l') /\
n < sum_fst l /\
length l = length l' + 1.