(****************************************************************)
(* Rend une liste de longueur n dont tous les elements sont x *)

Fixpoint list_const (n : nat) : A -> list A :=
  
 (*****************)
 fun x : A =>
 match n return (list A) with
 | O => nil
 | S n' => x :: list_const n' x
 end.

(* Specifications: *)
Lemma list_const_eq1 : forall x : A, list_const 0 x = nil.
Lemma list_const_eq2 : forall (n' : nat) (x : A), list_const (S n') x = x :: list_const n' x.
Lemma len_list_const : forall (n : nat) (x : A), len (list_const n x) n.
Lemma length_list_const : forall (n : nat) (x : A), length (list_const n x) = n.