intros. simpl in |- *.
rewrite BV_to_nat_app2. rewrite (trunc_O bool). rewrite <- length_V1_size.
rewrite (strip_all bool). rewrite length_V1_size.
simpl in |- *. elim plus_n_O. elim mult_n_O. rewrite BV_null_nat. trivial with arith.
Qed.
(****************************************************************)
(* Ensuite, lors de la preuve par induction pour t quelconque, on doit faire une preuve par cas selon R1[0]. On fait la preuve pour R1[0]=false:  (assez long) *)

Lemma inv_ind_false :
forall t n : nat,
(n <= size ->
BV_to_nat (appbv (stripbv (R1 n) (size - n)) (R2 n)) =
BV_to_nat V2 * BV_to_nat (truncbv V1 n)) ->
S n <= size ->
n <= size ->
BV_to_nat
(appbv
(stripbv
(appbv (highs (R1 n))
(Mux false (abit (BV_full_adder_sum (R2 n) V2 false) 0)
(consbv (lowbit (R2 n)) nilbv))) (size - S n))
(appbv (highs (Mux false (BV_full_adder_sum (R2 n) V2 false) (R2 n)))
(Mux false (consbv (BV_full_adder_carry (R2 n) V2 false) nilbv)
(consbv false nilbv)))) =
BV_to_nat V2 * BV_to_nat (appbv (truncbv V1 n) (consbv false nilbv)).