(****************************************************************)

Definition full_adder_sum (a b c : bool) :=
  half_adder_sum (half_adder_sum a b) c.Definition full_adder_carry (a b c : bool) :=
  half_adder_carry a b || half_adder_carry (half_adder_sum a b) c.

Lemma full_adder_carry_neg : forall a b : bool, full_adder_carry a (negb a) b = b.