auto with arith. Qed.

(* Specifications: *)
Lemma R2_eq1 : R2 0 = BV_null size. auto with arith. Qed.
Lemma R2_eq2 :
forall t : nat,
R2 (S t) =
appbv
(highs (Mux (lowbit (R1 t)) (BV_full_adder_sum (R2 t) V2 false) (R2 t)))
(Mux (lowbit (R1 t)) (consbv (BV_full_adder_carry (R2 t) V2 false) nilbv)
(consbv false nilbv)).
(****************************************************************)
Lemma length_R1 : forall t : nat, t <= size -> lengthbv (R1 t) = size.
simple induction t. auto with arith.
Lemma app_eq1 : forall l' : list A, nil ++ l' = l'.
auto with arith. Qed.
Lemma app_eq2 : forall (x : A) (l l' : list A), (x :: l) ++ l' = x :: l ++ l'.
auto with arith. Qed.
Lemma len_list_const : forall (n : nat) (x : A), len (list_const n x) n.
simple induction n. auto with arith. intros. simpl in |- *. auto with arith.
Lemma rev_eq : forall l n : list A, l = n -> rev l = rev n.
intros; replace l with n; auto with arith.