Тема: Пролог - программа по родственникам.
predicates
мужчина(string)
женщина(string)
родитель(string, string)
невестка(string, string)
зять(string, string)
супруг(string, string)
clauses
мужчина("Сергей").
мужчина("Дмитрий").
мужчина("Валера").
мужчина("Пётр").
мужчина("Михаил").
мужчина("Николай").
мужчина("Алекс").
мужчина("Александр").
мужчина("Костя").
женщина("Барбара").
женщина("Анна").
женщина("Татьяна").
женщина("Лиза").
женщина("Катя").
женщина("Юля").
женщина("Раиса").
женщина("Люда").
родитель("Барбара", "Лиза").
родитель("Лиза", "Алекс").
родитель("Алекс", "Костя").
родитель("Анна", "Катя").
родитель("Анна", "Пётр").
родитель("Сергей", "Катя").
родитель("Сергей", "Пётр").
родитель("Катя", "Юля").
родитель("Пётр", "Алекс").
родитель("Пётр", "Александр").
родитель("Александр", "Люда").
родитель("Юля", "Люда").
родитель("Татьяна", "Михаил").
родитель("Дмитрий", "Михаил").
родитель("Михаил", "Юля").
родитель("Валера", "Николай").
родитель("Николай", "Раиса").
родитель("Раиса", "Костя").
родитель("Лиза", "Александр").
супруг("Анна", "Сергей").
супруг("Сергей", "Анна").
супруг("Татьяна", "Дмитрий").
супруг("Дмитрий", "Татьяна").
супруг("Лиза", "Пётр").
супруг("Пётр", "Лиза").
супруг("Катя", "Михаил").
супруг("Михаил", "Катя").
супруг("Алекс", "Раиса").
супруг("Раиса", "Алекс").
супруг("Александр", "Юля").
супруг("Юля", "Александр").
невестка(A, B) :-
супруг(A, C),
родитель(B, C),
женщина(A),
C <> B.
невестка(A, B) :-
супруг(A, C),
родитель(D, C),
родитель(D, B),
родитель(E, C),
родитель(E, B),
D <> E,
женщина(D),
мужчина(E),
женщина(A),
C <> B.
невестка(A, B) :-
супруг(A, C),
родитель(D, C),
родитель(D, F),
родитель(E, C),
родитель(E, F),
D <> E,
женщина(D),
мужчина(E),
женщина(A),
C <> F,
супруг(F, B).
зять(A, B) :-
супруг(A, C),
родитель(B, C),
мужчина(A),
C <> B.
зять(A, B) :-
супруг(A, C),
родитель(D, C),
родитель(D, B),
родитель(E, C),
родитель(E, B),
D <> E,
женщина(D),
мужчина(E),
мужчина(A),
C <> B.
зять(A, B) :-
супруг(A, C),
родитель(D, C),
родитель(D, F),
родитель(E, C),
родитель(E, F),
D <> E,
женщина(D),
мужчина(E),
мужчина(A),
C <> F,
супруг(F, B).
goal
невестка(A, B),
write (A, " невестка ", B, " ") or
зять(A, B),
write (A, " зять ", B, " ").