Definition eq_dec(A : Set) := forall (a1 a2 : A), {a1 = a2} + {a1 <> a2}.Class EqDec (A : Set) := {
  eqb : A -> A -> bool ;
  eqb_leibniz : forall x y, eqb x y = true <-> x = y 
}.Class EqDec (A : Set) := {
  eqb : A -> A -> bool ;
  eqb_leibniz : forall x y, eqb x y = true <-> x = y 
}.Class EqDec (A : Set) := {
  eqb : A -> A -> bool ;
  eqb_leibniz : forall x y, eqb x y = true <-> x = y 
}.Infix "!=" := (fun x y => negb (eqb x y)) (at level 70) : eq_scope.

(* Specifications: *)
Theorem eqb_refl : forall (A : Set)(pf : EqDec A)(a : A), eqb a a = true.
Theorem eqb_symm : forall (A : Set){eqd : EqDec A}(x y : A), eqb x y = eqb y x.
Theorem EqDec_dec : forall A, EqDec A -> forall (a b : A), {a = b} + {a <> b}.
Theorem dec_EqDec : forall (A : Set)(eqd : eq_dec A), EqDec A.
Lemma vector_0 : forall (A : Set)(v : Vector.t A 0), v = Vector.nil A.
Lemma vector_S : forall (A : Set)(n : nat)(v : Vector.t A (S n)), exists a : _, exists v' : _, v = Vector.cons _ a _ v'.