:- module(autobuild_general, 
    [
    pairs/2,
    triples/2
    ]).

/** <module> General : Automatic model building

@author Jochem Liem

 * Automatic model building algorithm
 * Inspired by Hylke Buisman's algorithm

*/

% Note: these are permutations not combinations!

%% pairs(+List, -Combinations)
%  Takes a list of entries and returns all possible pairs (permutations)
pairs(List, Combinations) :-
    findall([A,B],
	(
	    member(A, List),
	    member(B, List),
	    A \== B
	),
	Combinations).

%% triples(+List, -Triples)
%  Takes a list of entries and returns all possible triples (permutations)
triples(List, Triples) :-
    findall([A,B,C],
	(
	    member(A, List),
	    member(B, List),
	    member(C, List),
	    A \== B,
	    A \== C,
	    B \== C
	),
	Triples).
