Definition Derive_inv (R : Ensf) (x y : Word) :=
  match x return Prop with
  | nil =>
      (* nil  *)  False
      (* cons *) 
  | cons A w =>
      ex2 (fun u : Word => dans (couple A (word u)) R)
        (fun u : Word =>
         ex2 (fun v : Word => cons A v = x :>Word)
           (fun v : Word => Append u v = y :>Word)) \/
      ex2 (fun v : Word => Derive R w v)
        (fun v : Word => cons A v = y :>Word)
  end.

Lemma Derive_inv2 : forall (R : Ensf) (x y : Word), Derive_inv R x y -> exists A : Elt, (exists2 w : Word, cons A w = x & (exists2 u : Word, dans (couple A (word u)) R & (exists2 v : Word, cons A v = x & Append u v = y)) \/ (exists2 v : Word, Derive R w v & cons A v = y)).