Section more_about_words.
Variable f : Elt -> Elt.
Let wef := Word_ext f.
(* Lemma wef_cons : (a:Elt)(u:Word)(wef (cons a u))=(cons (f a) (wef u)). Proof [a:Elt][u:Word](refl_equal Word (wef (cons a u))). *)
intros u v.
elim u.
trivial.
unfold wef in |- *.
intros x w H.
simpl in |- *.
rewrite <- H.
reflexivity.
Qed.
intro a.
case a.
auto.
unfold wef in |- *; simpl in |- *; intros x w H; discriminate H.
Qed.

Lemma wef_cons :
forall (a b : Word) (e : Elt),
cons e a = wef b ->
exists x : Elt,
ex2 (fun w : Word => cons x w = b) (fun w : Word => f x = e /\ wef w = a).