induction y; intuition; simpl in *.
rewrite plus_0_r in *.
assert (S (y + S y + 3)  =
(y + y + 3) + 2).
omega.
rewrite H1.
destruct (eq_nat_dec y 3).
subst.
assert (x >= Nat.pow 2 4).
rewrite H.
eapply Nat.log2_spec.
destruct (eq_nat_dec x 0).
subst.
rewrite log2_0 in H.
omega.
omega.
eapply le_trans.
2:{
eapply H2.
}
simpl.
omega.
assert ( y + y + 3 <= div2 x).
eapply IHy.
symmetry.
apply log2_div2.
trivial.
omega.
assert (2 <= div2 x).
assert (2 = div2 4).
trivial.
rewrite H3.
eapply div2_le_mono.
eapply le_trans.
2:{
eapply Nat.log2_le_lin.
destruct (eq_nat_dec 0 x); subst.
rewrite log2_0 in H.
omega.
omega.
}
omega.
eapply le_trans.
eapply plus_le_compat.
eapply H2.
eapply H3.
eapply div2_ge_double.
Qed.

(* Specifications: *)
Theorem S_log_square_lt_h :
forall y x,
y = Nat.log2 x ->
6 <= Nat.log2 x->
S y * S y <= x.