Я новичок в прологе, и у меня есть иерархическая база данных, в которой перечислены сотрудники и их руководители:
employee(employee1, employee4).
employee(employee2, employee4).
employee(employee3, employee4).
employee(employee4, employee8).
employee(employee5, employee7).
employee(employee6, employee7).
employee(employee7, employee8).
employee(employee8, employee9).
employee(employee9, employee10).
Я хочу создать предикат под названием coworker (A, B), в котором перечислены все сотрудники определенного типа.сотрудник, включая его / ее начальство.
coworker(Who, employee1).
Who = employee2 ?;
Who = employee3 ?;
Who = employee4 ?;
Who = employee5 ?;
Who = employee6 ?;
Who = employee7 ?;
Who = employee8 ?;
Who = employee9 ?;
Who = employee10 ?;
Мой код на данный момент таков:
supervisor(A,B):-employee(B,A).
boss(A,B):-supervisor(A,B).
boss(A,B):-supervisor(A,C),boss(C,B).
coworker(A,B):-boss(C,A),boss(C,B).
coworker(A,B):-employee(A,B).
coworker(A,B):-supervisor(A,B).
coworker(A,B):-boss(X,Y).
Однако мне трудно полностью избавиться от всех возможных дубликатовколлега по работе.Что я должен сделать, чтобы это исправить?