(* Test du sous-mot : la liste w1 peut-elle être obtenue en effaçant des éléments dans la liste w2 ? *) let rec subseq w1 w2 = match w1, w2 with | [], _ -> true | _, [] -> false | x1 :: r1, x2 :: r2 when x1 = x2 -> subseq r1 r2 | _, _ :: r2 -> subseq w1 r2