module q2.
  memb X (X::L).
  memb X (Y::L) :- memb X L.
  
  join nil K K.
  join (X::L) K M :- memb X K, !, join L K M.
  join (X::L) K (X::M) :- join L K M.

  delete nil _ nil.
  delete (X::L) X Zs :- !, delete L X Zs.
  delete (X::L) Y (X::Zs) :- delete L Y Zs.

  member X (X::L) :- !.
  member X (Y::L) :- member X L.

  conjoin nil K K.
  conjoin (X::L) K M :- member X K, conjoin L K M.
  conjoin (X::L) K (X::M) :- conjoin L K M.
end 
