Prolog两次检查相同的事实

时间:2018-03-04 23:26:53

标签: prolog

这是知识库

std_norm(df, 'left-x')

当运行isTaughtBy(jack,doe)时,它返回true(就像它应该的那样)和false(由于某种原因,可能是因为jack需要多个模块)。

这是追踪:

student(jack,100,21,m).

takes(100,cs01).
takes(100,cs02).
takes(100,cs03).

teaches(doe,cs01).

course(cs01,ai).
course(cs02,cpp).
course(cs03,java).

isTaughtBy(Sname,Lname) :-
    teaches(Lname,Mcode),
    student(Sname,Scode,_,_),
    takes(Scode,Mcode).

为什么重做需要(100,cs01)如果上面已经检查过?即使它在数据库中明确定义,为什么它返回false?我在这里不懂什么?如果学生由讲师讲授他们正在学习的任何模块,我只是希望它返回真或假。

0 个答案:

没有答案