simple induction v.
simpl in |- *. unfold BV_full_adder in |- *. unfold nilbv, consbv, appbv in |- *. simpl in |- *. trivial.
(* Induction a. Unfold consbv nilbv appbv . Simpl. Intros. Rewrite -> H.*)
simple induction a. intros. unfold consbv, nilbv, appbv in |- *. simpl in |- *.
unfold consbv, nilbv, appbv in H. rewrite H.
(* *)
unfold BV_full_adder in |- *. simpl in |- *. replace (half_adder_sum true true) with false.
trivial.
auto.
unfold BV_full_adder in |- *. unfold consbv, nilbv, appbv in |- *. intros. simpl in |- *.
replace (half_adder_sum false true) with true.
replace (BV_full_adder_sum l nil false) with l.
replace (BV_full_adder_carry l nil false) with false.
trivial.
auto. auto. auto.
Qed.

Lemma BV_increment_ok :
forall v : BV,
BV_to_nat (appbv (BV_increment v) (consbv (BV_increment_carry v) nilbv)) =
S (BV_to_nat v).