Fixpoint pos_Rl (l:list R) (i:nat) : R :=
match l with
| nil => 0
| a :: l' => match i with
| O => a
| S i' => pos_Rl l' i'
end
end.

(* Specifications: *)
Lemma pos_Rl_P1 :
forall (l:list R) (a:R),
(0 < length l)%nat ->
pos_Rl (a :: l) (length l) = pos_Rl l (pred (length l)).
Lemma pos_Rl_P2 :
forall (l:list R) (x:R),
In x l <-> (exists i : nat, (i < length l)%nat /\ x = pos_Rl l i).
Lemma Rlist_P1 :
forall (l:list R) (P:R -> R -> Prop),
(forall x:R, In x l ->  exists y : R, P x y) ->
exists l' : list R,
length l = length l' /\
(forall i:nat, (i < length l)%nat -> P (pos_Rl l i) (pos_Rl l' i)).