Definition GenUpdate_original_Blist (state : Blist * Blist) (n : nat) :
  (list Blist * (Blist * Blist)) :=
  match state with (k, v) =>
    match Gen_loop_Blist k v n with (bits, v') => 
        let k' := HMAC_Blist k (v' ++ zeroes) in
        let v'' := HMAC_Blist k' v' in (bits, (k', v''))
    end
  end.

Lemma GenUpdate_original_Zlist_Blist k v n: match GenUpdate_original_Zlist (k,v) n with (blocks,(k',v')) => GenUpdate_original_Blist (bytesToBits k, bytesToBits v) n = (map bytesToBits blocks,(bytesToBits k', bytesToBits v')) end.