Definition fun_consaw_a (w : Word) : Elt :=
  match w return Elt with
  | nil =>
      (* nil  *)  zero
      (* cons *) 
  | cons a w' => a
  end.Definition fun_consaw_w (w : Word) : Word :=
  match w return Word with
  | nil =>
      (* nil  *)  nil
      (* cons *) 
  | cons a w' => w'
  end.

(* Specifications: *)
Lemma cons_cons_inv : forall (x1 x2 : Elt) (w1 w2 : Word), cons x1 w1 = cons x2 w2 -> x1 = x2 /\ w1 = w2.
Lemma cons_cons_inv1 : forall (x1 x2 : Elt) (w1 w2 : Word), cons x1 w1 = cons x2 w2 :>Word -> x1 = x2 :>Elt.
Lemma cons_cons_inv2 : forall (x1 x2 : Elt) (w1 w2 : Word), cons x1 w1 = cons x2 w2 -> w1 = w2.
Lemma nil_or_cons : forall w : Word, w = nil \/ (exists x : Elt, (exists w0 : Word, w = cons x w0)).