intro application_f.
intro is_epi_f.
split.
auto.
simple induction x; clear x.
exists nil; auto.
intros x w Hyp inmonoid_F_cons.
cut (exists2 y : Word, w = wef y & inmonoid E y). (*1*)
intro temp; elim temp; clear temp.
intros y1 y1_egal inmonoid_y1.
cut (exists2 x_ant : Elt, x = f x_ant & dans x_ant E). (*2*)
intro temp; elim temp; clear temp.
intros x_ant x_egal dans_x_ant.
exists (cons x_ant y1).
unfold wef, Word_ext in |- *.
auto.
auto. (* inmonoid_cons *)
(*Cut2*)
prolog [ inmonoid_cons_inv2 ] 3.     (*Apply is_epi_f.
Apply inmonoid_cons_inv2 with w; Assumption.*)
(*Cut1*)
prolog [ inmonoid_cons_inv ] 3. (*Apply Hyp;
Apply inmonoid_cons_inv with x; Assumption.*)
Qed.
Hint Resolve is_epi_f_imp_is_epi_words.

(* Specifications: *)
Lemma is_iso_f_imp_is_iso_words : is_iso E F f -> is_iso_words E F wef.
intro is_iso_f.