(*Specialization of HMAC256_DRBG_generate_algorithm: no additional input*)
Definition FunGenerate RI (WS: DRBG_functions.DRBG_working_state) n: DRBG_functions.DRBG_generate_algorithm_result :=
           HMAC256_DRBG_functional_prog.HMAC256_DRBG_generate_algorithm RI
                                           WS
                                           n
                                           nil.

Lemma Generate_ok' RI k v z n (Z: (z<=RI)%Z) l kk vv zz (N:(0<n)%nat) (KL: Datatypes.length (bytesToBits k) = 256%nat) (VL:Datatypes.length (bytesToBits v) = 256%nat): FunGenerate RI (v, k, z) (Z.of_nat ((32 * n)%nat)) = generate_algorithm_success l (kk,vv, zz) -> match GenUpdate_original_core (of_list_length _ KL, of_list_length _ VL) n with (blocks, kv) => zz=z+1 /\ bitsToBytes (@Vector.to_list _ 256 (fst kv)) = vv /\ bitsToBytes (@Vector.to_list _ 256 (snd kv)) = kk /\ l = firstn (32 * n) (bitsToBytes (flatten (map (@Vector.to_list _ 256) blocks))) end.