induction n1; intuition.
destruct n2.
omega.
destruct (Even.even_odd_dec n1).
destruct (Even.even_odd_dec n2).
repeat rewrite <- even_div2; trivial.
eapply IHn1.
omega.
rewrite <- even_div2; trivial.
rewrite <- odd_div2; trivial.
econstructor.
eapply IHn1.
omega.
destruct (Even.even_odd_dec n2).
destruct (lt_dec n1 n2).
assert (n1 <= (S n2))%nat.
omega.
destruct n2.
omega.
rewrite <- odd_div2; trivial.
rewrite <- even_div2.
rewrite <- odd_div2.
eapply le_n_S.
eapply IHn1.
omega.
inversion e.
trivial.
trivial.
assert (n1 = n2).
omega.
subst.
exfalso.
eapply Even.not_even_and_odd; eauto.
rewrite <- odd_div2; trivial.
rewrite <- odd_div2; trivial.
eapply le_n_S.
eapply IHn1.
omega.
Qed.

(* Specifications: *)
Lemma div2_ge : forall n n',
n >= n' ->
forall x,
(n' = 2 * x)%nat ->
div2 n >= x.