fact: Fixpoint mult_bool_step_k_h (a b: list bool) (c: bool) (k: Z) : list bool := match a, b with | nil , _ => nil | ai :: a', bi :: b' => if (k - 1 <? 0)%Z then let carry_out := (ai && bi) || ((xorb ai bi) && c) in let curr := xorb (xorb ai bi) c in curr :: mult_bool_step_k_h a' b' carry_out (k - 1) else ai :: mult_bool_step_k_h a' b c (k - 1) | ai :: a' , nil => ai :: mult_bool_step_k_h a' b c k end.
imports: List Bool NArith Psatz Int63 Nnat ZArith Misc ProofIrrelevance