Definition cut (u : Word) :=
  let (a, s) := cut_spec u in (a, let (b, s2) := s in b).Definition cut1 (u : Word) := fst (cut u).Definition cut2 (u : Word) := snd (cut u).

Lemma cut_unicite : forall u a b a' b' : Word, inmonoid X a /\ Append a b = u /\ (b = nil \/ ex2 (fun x : Elt => ~ dans x X) (fun x : Elt => exists w : Word, b = cons x w)) -> inmonoid X a' /\ Append a' b' = u /\ (b' = nil \/ ex2 (fun x : Elt => ~ dans x X) (fun x : Elt => exists w : Word, b' = cons x w)) -> a = a'.