Set Implicit Arguments.
Unset Automatic Introduction.
Fixpoint nats (b: nat) (w: nat) {struct w}: list nat :=
match w with
| 0 => nil
| S w' => b :: nats (S b) w'
end.

(* Specifications: *)
Lemma nats_length (w b: nat): length (nats b w) = w.
Proof with auto.