% siblings(Gal, Guy)
siblings(1, 1).
siblings(1, 2).
siblings(2, 3).
siblings(2, 4).
 
% couples(Gals, Guys, Couples)
couples([],[],[]).
couples([Gal|RestGals], Guys, [[Gal,Guy]|RestCouples]) :- 
        select(Guy, Guys, RestGuys), 
        not(siblings(Gal, Guy)), 
        couples(RestGals, RestGuys, RestCouples).
 
dance(Couples) :- couples([1,2,3,4,5], [1,2,3,4,5], Couples).
 
:- forall(dance(C), writeln(C)).
:- aggregate_all(count, dance(C), N), write('Total '), writeln(N).