End hlist_gen.
Arguments hlist_gen {A F} f ls.

(* Specifications: *)
Lemma hlist_gen_member_hlist_map : forall A (F G : A -> Type) (ff : forall t, F t -> G t) ls f,
hlist_map ff (hlist_gen_member F (ls := ls) f) = hlist_gen_member G (fun a M => ff _ (f _ M)).
Lemma hlist_gen_hlist_map : forall A (F G : A -> Type) (ff : forall t, F t -> G t) f ls,
hlist_map ff (hlist_gen f ls) = hlist_gen (fun a => ff _ (f a)) ls.
Lemma hlist_gen_ext : forall A F (f g : forall a, F a),
(forall x, f x = g x) ->
forall ls : list A, hlist_gen f ls = hlist_gen g ls.