Set Implicit Arguments.
Fixpoint nats (b: nat) (w: nat) {struct w}: list nat :=
match w with
| 0 => nil
| S w' => b :: nats (S b) w'
end.
Proof with auto.
induction w in b |- * ...
simpl.
intros.
rewrite IHw...
Qed.
Proof with auto.
induction w in x, b |- *; intros H H0.
exfalso.
rewrite plus_0_r in H0.
apply (lt_not_le x b H0)...
simpl.
destruct (le_lt_eq_dec _ _ H); [right | left]...
apply IHw...
omega.
Qed.
Proof with auto.
induction w in x, b |- *; simpl; intros.
inversion H.
inversion H.
omega.
destruct (IHw x (S b) H0).
omega.
Qed.

Lemma NoDup_nats (w b: nat): NoDup (nats b w).