Ответ в теме: Логическая задача. Составление расписания на Prolog

      Комментарии к записи Ответ в теме: Логическая задача. Составление расписания на Prolog отключены
#2887

Генерацию гипотезы вы сделали вроде бы верно, но я не смог разобраться что вы пытались сделать дальше.
Чтобы проверить гипотезу нужно проверить все утверждения из условия, например:

Если C не преподает химию, то уж точно биологию; он же занят на третьем уроке в восьмом классе.

Формализовать это на Prolog можно так:

Solve = [
  raspisanie(A, Aurok, Auchitel),
  raspisanie(B, Burok, Buchitel),
  raspisanie(C, Curok, Cuchitel),
  raspisanie(D, Durok, Duchitel),
  raspisanie(E, Eurok, Euchitel),
  raspisanie(F, Furok, Fuchitel)
],
/*
  генерация гипотезы
*/
C = "3",
member(Curok, [химия, биология]),
/*
  остальные проверки
*/
.

Все остальные условия записываются точно также, например:

F не литератор, на втором уроке присутствовать не может

На Prolog запишется так:
NOT(F="2"), NOT(Furok = литература).

Это очень простая задача, я не понимаю зачем вы написали в ней столько вызово предиката member. Вы можете написать часть условий (даже те два, что я тут привел) и уже запустить поиск решений. По мере дописывания условий количество найденных решений будет сокращаться и если что-то останется – вы всегда сможете посмотреть какое именно условие нарушается.