fact: Fixpoint hlist_split ls ls' : hlist (ls ++ ls') -> hlist ls * hlist ls' := match ls as ls return hlist (ls ++ ls') -> hlist ls * hlist ls' with | nil => fun h => (Hnil, h) | l :: ls => fun h => let (a,b) := @hlist_split ls ls' (hlist_tl h) in (Hcons (hlist_hd h) a, b) end.
imports: Coq.Lists.List Coq.Arith.PeanoNat Relations RelationClasses ExtLib.Core.RelDec ExtLib.Data.SigT ExtLib.Data.Member ExtLib.Data.ListNth ExtLib.Data.Option ExtLib.Tactics Coq.Classes.Morphisms