Require Recdef.
Require Coq.Strings.String.
Require Coq.Strings.Ascii.
(* LINEAR-TIME FUNCTIONAL VERSION OF SHA256 *)
Function zeros (n : Z) {measure Z.to_nat n} : list Int.int :=
if Z.gtb n 0 then Int.zero :: zeros (n-1) else nil.
Hint Rewrite length_zeros : norm.
Local Open Scope Z.

Lemma Zlength_padlen:
forall n,
n>=0 ->
Zlength (padlen n) = roundup (n/4+3) 16 - n/4 - 1.