rendered paste bodycolor(card(Color, Num, Shade, Shape), Color).
num(card(Color, Num, Shade, Shape), Num).
shade(card(Color, Num, Shade, Shape), Shade).
shape(card(Color, Num, Shade, Shape), Shape).
color_same(C1, C2, C3) :- color(C1, C), color(C2, C), color(C3, C).
num_same(C1, C2, C3) :- num(C1, N), num(C2, N), num(C3, N).
shade_same(C1, C2, C3) :- shade(C1, N), shade(C2, N), shade(C3, N).
shape_same(C1, C2, C3) :- shape(C1, N), shape(C2, N), shape(C3, N).
color_ok(C1, C2, C3) :- color_same(C1, C2, C3).
num_ok(C1, C2, C3) :- num_same(C1, C2, C3).
shade_ok(C1, C2, C3) :- shade_same(C1, C2, C3).
shape_ok(C1, C2, C3) :- shape_same(C1, C2, C3).
set(Ca, Cb, Cc) :- color_ok(Ca, Cb, Cc), num_ok(Ca, Cb, Cc), shade_ok(Ca, Cb, Cc), shape_ok(Ca, Cb, Cc).