fact: Fixpoint mult_step_k_h (a b: list carry) (c: carry) (k: Z) : list carry := match a, b with | nil, _ => [] | ai :: a', bi :: b' => if (k - 1 <? 0)%Z then let carry_out := Cor (Cand ai bi) (Cand (Cxor ai bi) c) in let curr := Cxor (Cxor ai bi) c in curr :: mult_step_k_h a' b' carry_out (k - 1) else ai :: mult_step_k_h a' b c (k - 1) | ai :: a', nil => ai :: mult_step_k_h a' b c k end.
imports: Int63 PArray SMT_classes ZArith Misc State SMT_terms BVList Psatz Bool List BoolEq NZParity Nnat BinPos BinNat Pnat Init.Peano ProofIrrelevance