intros R x y Der_x_y.
unfold Derive_inv in |- *.
elim Der_x_y; prolog [ ex_intro2 refl_equal or_intror or_introl ] 8.
(* Intros u v A dans_couple. Left. Exists u; [Assumption | Exists v; Apply refl_equal].  Intros u v x0 Der_u_v Der_inv_u_v. Simpl; Right. Exists v; Trivial .*)
Qed.
Hint Resolve Derive_inv1.

(* Specifications: *)
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)).