Proof with auto with real.
unfold ijs.
intros.
rewrite RsumOver_concat_map.
unfold RsumOver.
rewrite (map_ext (fun j => RsumOver (map (fun i => (i, j)) (nats 0 j)) f) (fun j => RsumOver (nats 0 j) (fun i => f (i, j))))...
intro.
unfold RsumOver.
rewrite map_map...
Qed.
Require harmonic.

(* Specifications: *)
Lemma sumOver_ijs_bound n:
RsumOver (ijs n) (fun ij => 2 / INR (S (snd ij - fst ij))) <= 2 * INR n * INR (S (log2ceil n)).