如何避免在PROLOG中重复回答

如何避免在PROLOG中重复回答,prolog,Prolog,我的问题是: ?- rule7(X,Y,t3). X = s10, Y = s11 ; X = s12, Y = s10 ; X = s12, Y = s10 ; X = s12, Y = s11 ; X = s12, Y = s11 ; X = s12, Y = s13 ; X = s12, Y = s13 ..... 它会重复很多次。我怎样才能减少这些重复 守则: 规则7(X,Y,T):- 课程(C,X), 课程(C1,Y), 课程(C1,T),, 课程(C,T),, 复制记录(Y,X)

我的问题是:

?- rule7(X,Y,t3).

X = s10,
Y = s11 ;
X = s12,
Y = s10 ;
X = s12,
Y = s10 ;
X = s12,
Y = s11 ;
X = s12,
Y = s11 ;
X = s12,
Y = s13 ;
X = s12,
Y = s13 .....
它会重复很多次。我怎样才能减少这些重复

守则:

规则7(X,Y,T):-
课程(C,X),
课程(C1,Y),
课程(C1,T),,
课程(C,T),,
复制记录(Y,X)。

您能提供课程、课程选择和复制记录的代码吗?问题越完整越容易解决。例如:课程(c1,s1)。课程(c1、s2)。。etc课程(c1、t1)。课程(c2,t1)。。etc副本记录(Y,X):-副本记录(Y,X)。复制记录(Y,X):-复制记录(Y,Z),复制记录(Z,X)。
setof(t,rule7(X,Y,t3),。
但可能
copy记录/2
不会终止。您需要显示整个代码。请在您的问题(使用)中添加任何代码更新/添加,而不是在注释中,因为它们很难找到和阅读。如何定义
copy\u stu/2
rule7/3
是什么意思(用简单的语言来说,它是做什么的)?有时,消除重复项就是更精确地定义规则。