(** Linking Heterogeneous Lists and Lists **)
Section hlist_gen.
Variable A : Type.
Variable F : A -> Type.
Variable f : forall a, F a.
Fixpoint hlist_gen ls : hlist F ls :=
match ls with
| nil => Hnil
| cons x ls' => Hcons (f x) (hlist_gen ls')
end.

Lemma hlist_get_hlist_gen : forall ls t (m : member t ls),
hlist_get m (hlist_gen ls) = f t.