import nat
using nat

inductive list (T : Type) : Type :=
| nil {} : list T
| cons : T → list T → list T

definition length {T : Type} : list T → nat := list_rec 0 (fun x l m, succ m)
theorem length_nil {T : Type} : length (@nil T) = 0
:= refl _

