I am trying to match a subset of the facts that I am creating and my test file works fine!
x ([1,2,3,4], 'bleah').
x ([1,2,4], 'bleah2').
x ([1,2], 'bleah8').
x ([1,3,4], 'bleah3').
x ([5,6,7,8], 'bleah5').
x ([6,7,8,9], 'bleah6').
fuzzy (X, R): - x (Z, R), subset (X, Z).
remaining (X, Y, D, M): - x (Z, D), select (X, Z, N), select (Y, N, M).
pair (X, Y, R): - x ([X, Y], R); x ([Y, X], R).
Output:
? - x ([1,2 | REST], D).
REST = [3, 4],
D = bleah;
REST = [4],
D = bleah2;
REST = [],
D = bleah8;
false
? - pair (2,1, D).
D = bleah8;
false
? - fuzzy ([2,1], R).
R = bleah;
R = bleah2;
R = bleah8;
false
? - remaining (2,1, D, M).
D = bleah
M = [3, 4];
D = bleah2,
M = [4];
D = bleah8,
M = [];
false
, , . Prolog, , .
x([6,X,8,9],'woot') :- (X+0) > 7.
Output:
?- x([1,2|REST],D).
REST = [3, 4],
D = bleah ;
REST = [4],
D = bleah2 ;
REST = [],
D = bleah8 ;
false.
?- pair(2,1,D).
D = bleah8 ;
false.
?- fuzzy([2,1],R).
R = bleah ;
R = bleah2 ;
R = bleah8 ;
ERROR: >/2: Arguments are not sufficiently instantiated
^ Exception: (9) _G260+0>7 ? abort
% Execution Aborted
?- remaining(2,1,D,M).
D = bleah,
M = [3, 4] ;
D = bleah2,
M = [4] ;
D = bleah8,
M = [] ;
ERROR: >/2: Arguments are not sufficiently instantiated
^ Exception: (10) _G270+0>7 ? abort
% Execution Aborted
?- x([_,15,_,_],D).
D = woot.
.