Require Export bbv.Nomega.
Set Implicit Arguments.
Fixpoint mod2 (n : nat) : bool :=
match n with
| 0 => false
| 1 => true
| S (S n') => mod2 n'
end.
Ltac rethink :=
match goal with
| [ H : ?f ?n = _ |- ?f ?m = _ ] => replace m with n; simpl; auto
end.
induction n; simpl; intuition; rethink.
Qed.
induction n; simpl; intuition; rewrite <- plus_n_Sm; rethink.
Qed.
induction n; simpl; intuition; rewrite <- plus_n_Sm; f_equal; rethink.
Qed.

Theorem div2_S_double : forall n, div2 (S (2 * n)) = n.