证明X在Y之前Prolog
我有以下事实:证明X在Y之前Prolog,prolog,Prolog,我有以下事实: before CS206 is CS121 before CS121 is CS120 before CS120 is CS101 before CS101 is CS100 我试图写一些Prolog代码来证明CS206是CS100之前的 这就是我所拥有的,但是我得到了一个堆栈溢出,因为我的递归被搞砸了 before(X,Y) :- before(X,Z), before(Z,Y). before(X,X). before(CS101,CS100). before(CS120,
before CS206 is CS121
before CS121 is CS120
before CS120 is CS101
before CS101 is CS100
我试图写一些Prolog代码来证明CS206是CS100之前的
这就是我所拥有的,但是我得到了一个堆栈溢出,因为我的递归被搞砸了
before(X,Y) :- before(X,Z), before(Z,Y).
before(X,X).
before(CS101,CS100).
before(CS120,CS101).
before(CS121,CS120).
before(CS206,CS121).
在Prolog中,以大写字母开头的原子是单引号,否则它们就是变量。因此,CS101
是一个变量,'CS101'
是和atom
所以你的事实应该写成
before('CS101', 'CS100').
before('CS120', 'CS101').
before('CS121', 'CS120').
before('CS206', 'CS121').
仅添加以下规则
before(X, Y) :- before(X, Z), before(Z, Y).
你应该能够证明这一点
before('CS206', 'CS100')
是真的。在(X,X)
是真的吗X
出现在X
之前?是的,你是对的,不应该出现在那里