proposition: Lemma Forall2_vlookup {A B} (P : A → B → Prop) {n} (v1 : vec A n) (v2 : vec B n) : Forall2 P (vec_to_list v1) (vec_to_list v2) ↔ ∀ i, P (v1 !!! i) (v2 !!! i).
proof: Proof. split. - vec_double_ind v1 v2; [intros _ i; inv_fin i |]. intros n v1 v2 IH a b; simpl. inv 1. intros i. inv_fin i; simpl; auto. - vec_double_ind v1 v2; [constructor|]. intros ??? IH ?? H. constructor. + apply (H 0%fin). + apply IH, (λ i, H (FS i)). Qed.
imports: stdpp(countable) stdpp(options)