Definition LBLOCK : nat := Z.to_nat LBLOCKz.Definition CBLOCK : nat := Z.to_nat CBLOCKz.

(* Specifications: *)
Lemma LBLOCK_zeq: Z.of_nat LBLOCK = 16%Z.
Lemma CBLOCK_zeq: (Z.of_nat CBLOCK = 64%Z).
Lemma LBLOCKz_nonneg: (0 <= LBLOCKz)%Z.
Lemma LBLOCKz_pos: (0 < LBLOCKz)%Z.
Lemma CBLOCKz_nonneg: (0 <= CBLOCKz)%Z.
Lemma CBLOCKz_pos: (0 < CBLOCKz)%Z.
Lemma hash_blocks_equation' : forall (r : registers) (msg : list int), hash_blocks r msg = match msg with | [] => r | _ :: _ => hash_blocks (hash_block r (firstn LBLOCK msg)) (skipn LBLOCK msg) end.
Lemma CBLOCK_eq: CBLOCK=64%nat.
Lemma LBLOCK_eq: LBLOCK=16%nat.
Theorem Zmod_mod_mult : forall n a b, (0 < a)%Z -> (0 <= b)%Z -> Zmod (Zmod n (a * b)) b = Zmod n b.