Section rincl_fin.
(* Strict reverse inclusion between lists is well founded over a finite domain *)
(* M the upper-bound/finiteness of the domain *)
Variable (X : Type) (M : list X).
(* l cap M strictly contains in m cap M *)
Definition rincl_fin l m := (forall x, In x m -> In x M -> In x l)
/\ exists x, ~ In x m /\ In x l /\ In x M.
(* Any n-chain m ~~> l contains a duplication-free subset of M of size n *)

Lemma rincl_fin_chains n m l :   chain rincl_fin n m l
-> exists ll, ~ list_has_dup ll
/\ incl ll M
/\ length ll = n
/\ incl ll m.