fact: Fixpoint split A B (l:list(A*B)) : (list A * list B) := match l with | nil => (nil,nil) | (a,b)::l' => let (la,lb) := split l' in (a::la, b::lb) end.
imports: Coq.Classes.Morphisms TLC(LibTactics LibLogic LibReflect LibOperation LibProd LibOption LibNat LibInt LibWf LibMonoid LibRelation)