apply Z_to_inject_nat. assumption. rewrite shift_nat_correct. rewrite Zpower_nat_Zpower.
rewrite Z_to_inject_nat. ring. assumption. Qed.

(* Specifications: *)
Lemma two_p_pow : forall z : Z, 0 <= z -> two_p z = 2 ^ z.
intros z H. unfold two_p. case z. trivial. intro p. rewrite two_power_pos_correct. trivial. trivial. Qed.
Lemma Zlog_sup_correct1 : forall z : Z, 0 < z -> 0 <= Zlog_sup z.
intro z. case z. intro H. absurd (0 < 0); omega. simpl. intros p H. apply log_sup_correct1.