% vim:set syntax=prolog: % Задание 1.1 родитель("Михаил", "Алексей"). родитель("Евдокия", "Алексей"). родитель("Алексей", "Феодор"). родитель("Алексей", "Софья"). родитель("Алексей", "Иоанн"). родитель("Мария", "Феодор"). родитель("Мария", "Софья"). родитель("Мария", "Иоанн"). родитель("Алексей", "Пётр"). родитель("Наталья", "Пётр"). родитель("Пётр", "Анна"). родитель("Пётр", "Елизавета"). родитель("Екатерина", "Анна"). родитель("Екатерина", "Елизавета"). % Задание 1.2 ?- writeln("Родители Петра Первого:"). ?- forall(родитель(Кто, "Пётр"), (write("- "), writeln(Кто))). ?- writeln("Дети Петра Первого:"). ?- forall(родитель("Пётр", Кто), (write("- "), writeln(Кто))). % Задание 2.1 женщина("Анна"). женщина("Мария"). женщина("Софья"). женщина("Евдокия"). женщина("Наталья"). женщина("Екатерина"). женщина("Елизавета"). мужчина("Пётр"). мужчина("Михаил"). мужчина("Феодор"). мужчина("Алексей"). % Задание 2.2 мать(Кто, Кого) :- родитель(Кто, Кого), женщина(Кто). отец(Кто, Кого) :- родитель(Кто, Кого), мужчина(Кто). сын(Кто, Кого) :- родитель(Кого, Кто), мужчина(Кто). дочь(Кто, Кого) :- родитель(Кого, Кто), женщина(Кто). ?- writeln("Сыновья Алексея Михайловича:"). ?- forall(сын(Кто, "Алексей"), (write("- "), writeln(Кто))). % Задание 3.3 бабушка(Прародитель, Потомок) :- родитель(Прародитель, Родитель), родитель(Родитель, Потомок), женщина(Прародитель). общий_родитель(Чел1, Чел2) :- родитель(Кто, Чел1), родитель(Кто, Чел2). брат(Брат, Кого) :- общий_родитель(Брат, Кого), мужчина(Брат), not(Брат = Кого). % (мать(Мать, Брат), мать(Мать, Кого); отец(Отец, Брат), отец(Отец, Кого)). ?- forall(брат(Кто, "Софья"), writeln(Кто)). % ?- halt.