(* *********************************************************************** *)
(** ** Vectors *)

(** [uniqueness] can show that the only vector of length zero is the
    empty vector.  This shows that the tactic is not restricted to
    working only on [Prop]s. *)

Inductive vector (A : Type) : nat -> Type :=
  | vnil : vector A 0
  | vcons : forall (n : nat) (a : A), vector A n -> vector A (S n).(* *********************************************************************** *)
(** ** Vectors *)

(** [uniqueness] can show that the only vector of length zero is the
    empty vector.  This shows that the tactic is not restricted to
    working only on [Prop]s. *)

Inductive vector (A : Type) : nat -> Type :=
  | vnil : vector A 0
  | vcons : forall (n : nat) (a : A), vector A n -> vector A (S n).(* *********************************************************************** *)
(** ** Vectors *)

(** [uniqueness] can show that the only vector of length zero is the
    empty vector.  This shows that the tactic is not restricted to
    working only on [Prop]s. *)

Inductive vector (A : Type) : nat -> Type :=
  | vnil : vector A 0
  | vcons : forall (n : nat) (a : A), vector A n -> vector A (S n).

(* Specifications: *)
Theorem vector_O_eq : forall (A : Type) (v : vector A 0), v = vnil _.