predicates % Fields: Fill name, academic title, courses nondeterm professors(symbol, symbol, symbol). % Fields: name of lesson, professor's name, time nondeterm lessons(symbol, symbol, symbol). % Fields: name of professor1, name of professor2 nondeterm getChange(symbol, symbol, symbol). % Fields: professor name, lesson time nondeterm getlesson(symbol, symbol, symbol). nondeterm getProfessor(symbol, symbol). clauses % Get lesson name by time and professor name getLesson(Name, Time, LessonName):- lessons(LessonName, Name, Time). % Get professor name by lesson name getProfessor(LessonName, ProfessorName):- professors(ProfessorName, _, LessonName). % Get professor name, who can change another professor in Time getChange(Name, Time, Name2):- getLesson(Name, Time, LessonName), getProfessor(LessonName, Name2), Name<>Name2, lessons(LessonName, Name2, Time2), Time<>Time2. professors("professor_1", "professor", "lesson_6"). professors("professor_2", "professor", "lesson_6"). lessons("lesson_6", "professor_1", "00:00"). lessons("lesson_6", "professor_2", "01:00"). lessons("lesson_6", "professor_2", "02:00"). GOAL % getLesson("professor_1","00:00", LessonName). % getProfessor("lesson_6", Professor). getChange("professor_1", "00:00", Name2).