unfold lengthbv, BV_null in |- *. rewrite (length_list_const bool). trivial with arith.
unfold lengthbv in |- *. intros. rewrite R2_eq2.
rewrite (length_app bool). unfold Mux, consbv.
rewrite (F_If BV BV _ _ _ highs).
rewrite (F_If BV nat _ _ _ (@length bool)).
rewrite highs_is_strip. rewrite (length_strip bool).
rewrite length_BV_full_adder_sum. unfold lengthbv in |- *.
rewrite H. rewrite highs_is_strip. rewrite (length_strip bool).
rewrite H. rewrite If_eq. rewrite (F_If BV nat _ _ _ (@length bool)). simpl in |- *.
rewrite If_eq. symmetry  in |- *. rewrite plus_comm. apply le_plus_minus. auto with arith.
auto with arith. rewrite H. auto with arith.
apply le_Sn_le; exact H0. apply le_Sn_le; exact H0.
unfold lengthbv in |- *. rewrite H. auto with arith. apply le_Sn_le; exact H0.
rewrite length_BV_full_adder_sum.
unfold lengthbv in |- *. rewrite H. auto with arith. apply le_Sn_le; exact H0.
unfold lengthbv in |- *. rewrite H. auto with arith. apply le_Sn_le; exact H0.
Qed. Hint Resolve length_R2.

(* Specifications: *)
Lemma R1_never_nil : forall t : nat, t <= size -> R1 t <> nilbv.
intros. apply (not_nil bool). rewrite length_R1. auto with arith. exact H.