Definition BV_full_adder (v w : BV) (cin : bool) : BV :=
  appbv (BV_full_adder_sum v w cin)
    (consbv (BV_full_adder_carry v w cin) nilbv).

(* Specifications: *)
Lemma BV_full_adder_sum_v_nil_false : forall v : BV, BV_full_adder_sum v nilbv false = v.
Lemma BV_full_adder_carry_v_nil_false : forall v : BV, BV_full_adder_carry v nilbv false = false.
Lemma BV_full_adder_sum_sym : forall (v w : BV) (cin : bool), BV_full_adder_sum v w cin = BV_full_adder_sum w v cin.
Lemma length_BV_full_adder_sum : forall (v w : BV) (cin : bool), lengthbv v = lengthbv w -> lengthbv (BV_full_adder_sum v w cin) = lengthbv v.
Lemma BV_full_adder_carry_sym : forall (v w : BV) (cin : bool), BV_full_adder_carry v w cin = BV_full_adder_carry w v cin.
Lemma BV_full_adder_sym : forall (v w : BV) (cin : bool), BV_full_adder v w cin = BV_full_adder w v cin.