diff --git a/theories/vector.v b/theories/vector.v index 9d5b583d8e8403a69b25578a00c266a4119312f8..7c7bb3674f665b6c794f7566b9fe2588f17db479 100644 --- a/theories/vector.v +++ b/theories/vector.v @@ -359,12 +359,12 @@ Qed. Lemma vlookup_insert_self {A n} i (v : vec A n) : vinsert i (v !!! i) v = v. Proof. by induction v; inv_fin i; intros; f_equal/=. Qed. -(* Vectors can be inhabited. *) -Global Instance vec_nil_inh T : Inhabited (vec T 0) := populate [#]. +(** The function [vreplicate n x] generates a vector with length [n] of elements +with value [x]. *) +Fixpoint vreplicate {A} (n : nat) (x : A) : vec A n := + match n with 0 => [#] | S n => x ::: vreplicate n x end. -Global Instance vec_inh T n : Inhabited T → Inhabited (vec T n). -Proof. - intros HT. induction n; [apply _|]. - destruct IHn as [v]. destruct HT as [x]. - exact (populate (x:::v)). -Qed. +(* Vectors can be inhabited. *) +Global Instance vec_0_inhabited T : Inhabited (vec T 0) := populate [#]. +Global Instance vec_inhabited `{Inhabited T} n : Inhabited (vec T n) := + populate (vreplicate n inhabitant).