intros d a; elim a; simpl in |- *; auto.
intros d0 n m H'; rewrite H'; auto.
rewrite <- (minus_n_n n); auto.
Qed.
Let gb : forall d : nat, mon d * bool -> bool.
intros d H'; case H'; auto.
Defined.
Let gm : forall d : nat, mon d * bool -> mon d.
intros d H'; case H'; auto.
Defined.

(* Specifications: *)
Theorem minus_lt_0 : forall m n : nat, n < m -> n - m = 0.
intros m; elim m; simpl in |- *; auto.