module aux. type split list A -> list A -> list A -> o. split nil nil nil. split (X::L) (X::K) M :- split L K M. split (X::L) K (X::M) :- split L K M. type membNrest A -> list A -> list A -> o. membNrest X (X::Rest) Rest. membNrest X (Y::Tail) (Y::Rest) :- membNrest X Tail Rest. type memb A -> list A -> o. memb X (X::Rest). memb X (Y::Tail) :- memb X Tail.