Global Instance Proper_equiv_hlist_gen : forall A (F : A -> Type) R,
Proper (forall_relation R ==> forall_relation (@equiv_hlist _ _ R))
(@hlist_gen A F).
Fixpoint hlist_erase {A B} {ls : list A} (hs : hlist (fun _ => B) ls) : list B :=
match hs with
| Hnil => nil
| Hcons _ _ x hs' => cons x (hlist_erase hs')
end.

(* Specifications: *)
Lemma hlist_erase_hlist_gen : forall A B ls (f : A -> B),
hlist_erase (hlist_gen f ls) = map f ls.