Section sincl.
(* Strict inclusion between lists is a well founded relation *)
Variable (X : Type).
Implicit Type (l m : list X).
(* sincl l m if incl l m and there is a witness in m \ l *)
Definition sincl l m := incl l m /\ exists x, ~ In x l /\ In x m.
(* Any n-chain m ~~> l contains a duplication-free subset of l of size n which does not intersect m  *)

Lemma sincl_chain n m l :
chain sincl n m l -> incl m l
/\ exists ll, ~ list_has_dup ll
/\ length ll = n
/\ incl ll l
/\ forall x, In x m -> In x ll -> False.