(*Require Import FCF.HMAC_DRBG_definitions_only.*)

(* Specifications: *)
Lemma false_zgt z a: false = (z >? a) -> z<=a.
Lemma false_zge z a: false = (z >=? a) -> z<a.
Lemma false_zge' z a (A:z<a): false = (z >=? a).
Lemma bytesToBits_InBlocks l: InBlocks 8 (bytesToBits l).
Lemma flatten_bytes_bits: forall m,
flatten m = bitsToBytes (flatten (map bytesToBits m)).
Lemma Forall_rev {A} P: forall (l:list A), Forall P l -> Forall P (rev l).
Lemma to_list_eq (A : Type) (n : nat) l: to_list l = @Vector.to_list A n l.
Lemma HMAC_DRBG_generate_helper_Z_equation':
forall (HMAC : list byte -> list byte -> list byte) (key v : list byte) (requested_number_of_bytes : Z),
0 < requested_number_of_bytes ->
HMAC_DRBG_generate_helper_Z HMAC key v requested_number_of_bytes =
let (v0, rest) := HMAC_DRBG_generate_helper_Z HMAC key v (requested_number_of_bytes - Z.of_nat 32) in
(HMAC v0 key, rest ++ HMAC v0 key).
Lemma HMAC_DRBG_generate_helper_Z_equation0:
forall (HMAC : list byte -> list byte -> list byte) (key v : list byte),
HMAC_DRBG_generate_helper_Z HMAC key v 0 = (v, nil).