intros i j Hi Hj Hij. elim (Zle_lt_or_eq i j). trivial. intro H. rewrite H in Hij.
absurd (2 ^ j < 2 ^ j). omega. assumption. elim (Zle_or_lt i j). trivial. intro H. cut (2 ^ j < 2 ^ i).
intro H0. absurd (2 ^ j < 2 ^ i); omega. apply Zlt_pow_lt; omega. Qed.
Definition Zlog_sup (M : Z) :=
match M with
| Zpos p => log_sup p
| _ => 0
end.

(* Specifications: *)
Lemma Zlog_sup_pow : forall i : Z, 0 <= i -> Zlog_sup (2 ^ i) = i.
intros i H. replace (2 ^ i) with (Zpos (shift_nat (Zabs_nat i) 1)). simpl. rewrite log_sup_shift_nat.