% ---------------------------
% Пол
% ---------------------------
мужчина( егор) .
мужчина( борис) .
мужчина( артём) .
мужчина( владимир) .
мужчина( григорий) .
мужчина( даниил) .
мужчина( константин) .
мужчина( леонид) .
мужчина( максим) .
мужчина( никита) .
женщина( лидия) .
женщина( ирина) .
женщина( клавдия) .
женщина( настя) .
женщина( ольга) .
женщина( полина) .
женщина( раиса) .
женщина( светлана) .
женщина( таисия) .
женщина( уляна) .
% ---------------------------
% Супруги (взаимные факты)
% ---------------------------
супруг( егор, ирина) .
супруг( ирина, егор) .
супруг( борис, клавдия) .
супруг( клавдия, борис) .
супруг( артём, настя) .
супруг( настя, артём) .
супруг( владимир, ольга) .
супруг( ольга, владимир) .
супруг( григорий, полина) .
супруг( полина, григорий) .
супруг( даниил, раиса) .
супруг( раиса, даниил) .
% ---------------------------
% Родитель → ребёнок
% ---------------------------
% Поколение 1 → 2
родитель( егор, борис) .
родитель( ирина, борис) .
родитель( егор, артём) .
родитель( ирина, артём) .
% Поколение 2 → 3
родитель( борис, владимир) .
родитель( клавдия, владимир) .
родитель( борис, григорий) .
родитель( клавдия, григорий) .
родитель( артём, даниил) .
родитель( настя, даниил) .
родитель( артём, константин) .
родитель( настя, константин) .
% Поколение 3 → 4
родитель( владимир, леонид) .
родитель( ольга, леонид) .
родитель( владимир, максим) .
родитель( ольга, максим) .
родитель( григорий, никита) .
родитель( полина, никита) .
родитель( даниил, светлана) .
родитель( раиса, светлана) .
родитель( даниил, таисия) .
родитель( раиса, таисия) .
родитель( константин, уляна) .
родитель( лидия, уляна) . % Лидия — жена Константина (не указана выше как супруга, добавим)
супруг( константин, лидия) .
супруг( лидия, константин) .
% ---------------------------
% Общие вспомогательные предикаты
% ---------------------------
брат( X, Y) :-
мужчина( X) ,
родитель( P, X) ,
родитель( P, Y) ,
X \= Y.
сестра( X, Y) :-
женщина( X) ,
родитель( P, X) ,
родитель( P, Y) ,
X \= Y.
% ---------------------------
% Предок (рекурсивно)
% ---------------------------
предок( X, Y) :- родитель( X, Y) .
предок( X, Y) :- родитель( X, Z) , предок( Z, Y) .
% ---------------------------
% Стандартные родственные связи
% ---------------------------
% Шурин — брат жены или муж сестры жены
шурин( X, Y) :-
супруг( Y, W) ,
женщина( W) ,
брат( X, W) .
шурин( X, Y) :-
супруг( Y, W) ,
женщина( W) ,
сестра( S, W) ,
супруг( X, S) .
% Деверь — брат мужа
деверь( X, Y) :-
супруг( Y, M) ,
мужчина( M) ,
брат( X, M) .
% Золовка — сестра мужа
золовка( X, Y) :-
супруг( Y, M) ,
мужчина( M) ,
сестра( X, M) .
% Свояченица — сестра жены
свояченица( X, Y) :-
супруг( Y, W) ,
женщина( W) ,
сестра( X, W) .
% Племянник — сын брата или сестры
племянник( X, Y) :-
мужчина( X) ,
( брат( B, Y) ; сестра( B, Y) ) ,
родитель( B, X) .
% Двоюродный племянник — сын двоюродного брата/сестры
двоюродный_племянник( X, Y) :-
мужчина( X) ,
( двоюродный_брат( B, Y) ; двоюродная_сестра( B, Y) ) ,
родитель( B, X) .
двоюродный_брат( X, Y) :-
мужчина( X) ,
родитель( Px, X) ,
родитель( Py, Y) ,
( брат( Px, Py) ; сестра( Px, Py) ) ,
X \= Y.
двоюродная_сестра( X, Y) :-
женщина( X) ,
родитель( Px, X) ,
родитель( Py, Y) ,
( брат( Px, Py) ; сестра( Px, Py) ) ,
X \= Y.
% Тёща — мать жены
тёща( X, Y) :-
супруг( Y, W) ,
женщина( W) ,
родитель( X, W) ,
женщина( X) .
% Тёсть — отец жены
тесть( X, Y) :-
супруг( Y, W) ,
женщина( W) ,
родитель( X, W) ,
мужчина( X) .
% Невестка — жена сына
невестка( X, Y) :-
женщина( X) ,
родитель( Y, S) ,
мужчина( S) ,
супруг( S, X) .
% Зять — муж дочери
зять( X, Y) :-
мужчина( X) ,
родитель( Y, D) ,
женщина( D) ,
супруг( X, D) .
% ---------------------------
% Архаичные и редкие термины
% ---------------------------
% Ятровь — жена деверя (жена брата мужа)
ятровь( X, Y) :-
женщина( X) ,
супруг( Y, M) ,
мужчина( M) ,
брат( B, M) ,
супруг( B, X) .
% Стрый — отец отца (прадед по отцовской линии)
стрый( X, Y) :-
родитель( X, P) ,
родитель( P, Y) ,
мужчина( X) ,
мужчина( P) .
% Уй — сестра отца (тётя по отцу)
уй( X, Y) :-
родитель( P, Y) ,
мужчина( P) ,
сестра( X, P) .
JSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSDQn9C+0LsKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K0LzRg9C20YfQuNC90LAo0LXQs9C+0YApLgrQvNGD0LbRh9C40L3QsCjQsdC+0YDQuNGBKS4K0LzRg9C20YfQuNC90LAo0LDRgNGC0ZHQvCkuCtC80YPQttGH0LjQvdCwKNCy0LvQsNC00LjQvNC40YApLgrQvNGD0LbRh9C40L3QsCjQs9GA0LjQs9C+0YDQuNC5KS4K0LzRg9C20YfQuNC90LAo0LTQsNC90LjQuNC7KS4K0LzRg9C20YfQuNC90LAo0LrQvtC90YHRgtCw0L3RgtC40L0pLgrQvNGD0LbRh9C40L3QsCjQu9C10L7QvdC40LQpLgrQvNGD0LbRh9C40L3QsCjQvNCw0LrRgdC40LwpLgrQvNGD0LbRh9C40L3QsCjQvdC40LrQuNGC0LApLgoK0LbQtdC90YnQuNC90LAo0LvQuNC00LjRjykuCtC20LXQvdGJ0LjQvdCwKNC40YDQuNC90LApLgrQttC10L3RidC40L3QsCjQutC70LDQstC00LjRjykuCtC20LXQvdGJ0LjQvdCwKNC90LDRgdGC0Y8pLgrQttC10L3RidC40L3QsCjQvtC70YzQs9CwKS4K0LbQtdC90YnQuNC90LAo0L/QvtC70LjQvdCwKS4K0LbQtdC90YnQuNC90LAo0YDQsNC40YHQsCkuCtC20LXQvdGJ0LjQvdCwKNGB0LLQtdGC0LvQsNC90LApLgrQttC10L3RidC40L3QsCjRgtCw0LjRgdC40Y8pLgrQttC10L3RidC40L3QsCjRg9C70Y/QvdCwKS4KCiUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiUg0KHRg9C/0YDRg9Cz0LggKNCy0LfQsNC40LzQvdGL0LUg0YTQsNC60YLRiykKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K0YHRg9C/0YDRg9CzKNC10LPQvtGALCDQuNGA0LjQvdCwKS4K0YHRg9C/0YDRg9CzKNC40YDQuNC90LAsINC10LPQvtGAKS4K0YHRg9C/0YDRg9CzKNCx0L7RgNC40YEsINC60LvQsNCy0LTQuNGPKS4K0YHRg9C/0YDRg9CzKNC60LvQsNCy0LTQuNGPLCDQsdC+0YDQuNGBKS4K0YHRg9C/0YDRg9CzKNCw0YDRgtGR0LwsINC90LDRgdGC0Y8pLgrRgdGD0L/RgNGD0LMo0L3QsNGB0YLRjywg0LDRgNGC0ZHQvCkuCtGB0YPQv9GA0YPQsyjQstC70LDQtNC40LzQuNGALCDQvtC70YzQs9CwKS4K0YHRg9C/0YDRg9CzKNC+0LvRjNCz0LAsINCy0LvQsNC00LjQvNC40YApLgrRgdGD0L/RgNGD0LMo0LPRgNC40LPQvtGA0LjQuSwg0L/QvtC70LjQvdCwKS4K0YHRg9C/0YDRg9CzKNC/0L7Qu9C40L3QsCwg0LPRgNC40LPQvtGA0LjQuSkuCtGB0YPQv9GA0YPQsyjQtNCw0L3QuNC40LssINGA0LDQuNGB0LApLgrRgdGD0L/RgNGD0LMo0YDQsNC40YHQsCwg0LTQsNC90LjQuNC7KS4KCiUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiUg0KDQvtC00LjRgtC10LvRjCDihpIg0YDQtdCx0ZHQvdC+0LoKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSDQn9C+0LrQvtC70LXQvdC40LUgMSDihpIgMgrRgNC+0LTQuNGC0LXQu9GMKNC10LPQvtGALCDQsdC+0YDQuNGBKS4K0YDQvtC00LjRgtC10LvRjCjQuNGA0LjQvdCwLCDQsdC+0YDQuNGBKS4K0YDQvtC00LjRgtC10LvRjCjQtdCz0L7RgCwg0LDRgNGC0ZHQvCkuCtGA0L7QtNC40YLQtdC70Ywo0LjRgNC40L3QsCwg0LDRgNGC0ZHQvCkuCgolINCf0L7QutC+0LvQtdC90LjQtSAyIOKGkiAzCtGA0L7QtNC40YLQtdC70Ywo0LHQvtGA0LjRgSwg0LLQu9Cw0LTQuNC80LjRgCkuCtGA0L7QtNC40YLQtdC70Ywo0LrQu9Cw0LLQtNC40Y8sINCy0LvQsNC00LjQvNC40YApLgrRgNC+0LTQuNGC0LXQu9GMKNCx0L7RgNC40YEsINCz0YDQuNCz0L7RgNC40LkpLgrRgNC+0LTQuNGC0LXQu9GMKNC60LvQsNCy0LTQuNGPLCDQs9GA0LjQs9C+0YDQuNC5KS4K0YDQvtC00LjRgtC10LvRjCjQsNGA0YLRkdC8LCDQtNCw0L3QuNC40LspLgrRgNC+0LTQuNGC0LXQu9GMKNC90LDRgdGC0Y8sINC00LDQvdC40LjQuykuCtGA0L7QtNC40YLQtdC70Ywo0LDRgNGC0ZHQvCwg0LrQvtC90YHRgtCw0L3RgtC40L0pLgrRgNC+0LTQuNGC0LXQu9GMKNC90LDRgdGC0Y8sINC60L7QvdGB0YLQsNC90YLQuNC9KS4KCiUg0J/QvtC60L7Qu9C10L3QuNC1IDMg4oaSIDQK0YDQvtC00LjRgtC10LvRjCjQstC70LDQtNC40LzQuNGALCDQu9C10L7QvdC40LQpLgrRgNC+0LTQuNGC0LXQu9GMKNC+0LvRjNCz0LAsINC70LXQvtC90LjQtCkuCtGA0L7QtNC40YLQtdC70Ywo0LLQu9Cw0LTQuNC80LjRgCwg0LzQsNC60YHQuNC8KS4K0YDQvtC00LjRgtC10LvRjCjQvtC70YzQs9CwLCDQvNCw0LrRgdC40LwpLgrRgNC+0LTQuNGC0LXQu9GMKNCz0YDQuNCz0L7RgNC40LksINC90LjQutC40YLQsCkuCtGA0L7QtNC40YLQtdC70Ywo0L/QvtC70LjQvdCwLCDQvdC40LrQuNGC0LApLgrRgNC+0LTQuNGC0LXQu9GMKNC00LDQvdC40LjQuywg0YHQstC10YLQu9Cw0L3QsCkuCtGA0L7QtNC40YLQtdC70Ywo0YDQsNC40YHQsCwg0YHQstC10YLQu9Cw0L3QsCkuCtGA0L7QtNC40YLQtdC70Ywo0LTQsNC90LjQuNC7LCDRgtCw0LjRgdC40Y8pLgrRgNC+0LTQuNGC0LXQu9GMKNGA0LDQuNGB0LAsINGC0LDQuNGB0LjRjykuCtGA0L7QtNC40YLQtdC70Ywo0LrQvtC90YHRgtCw0L3RgtC40L0sINGD0LvRj9C90LApLgrRgNC+0LTQuNGC0LXQu9GMKNC70LjQtNC40Y8sINGD0LvRj9C90LApLiAgICUg0JvQuNC00LjRjyDigJQg0LbQtdC90LAg0JrQvtC90YHRgtCw0L3RgtC40L3QsCAo0L3QtSDRg9C60LDQt9Cw0L3QsCDQstGL0YjQtSDQutCw0Log0YHRg9C/0YDRg9Cz0LAsINC00L7QsdCw0LLQuNC8KQrRgdGD0L/RgNGD0LMo0LrQvtC90YHRgtCw0L3RgtC40L0sINC70LjQtNC40Y8pLgrRgdGD0L/RgNGD0LMo0LvQuNC00LjRjywg0LrQvtC90YHRgtCw0L3RgtC40L0pLgoKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSDQntCx0YnQuNC1INCy0YHQv9C+0LzQvtCz0LDRgtC10LvRjNC90YvQtSDQv9GA0LXQtNC40LrQsNGC0YsKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0K0LHRgNCw0YIoWCwgWSkgOi0KICAgINC80YPQttGH0LjQvdCwKFgpLAogICAg0YDQvtC00LjRgtC10LvRjChQLCBYKSwKICAgINGA0L7QtNC40YLQtdC70YwoUCwgWSksCiAgICBYIFw9IFkuCgrRgdC10YHRgtGA0LAoWCwgWSkgOi0KICAgINC20LXQvdGJ0LjQvdCwKFgpLAogICAg0YDQvtC00LjRgtC10LvRjChQLCBYKSwKICAgINGA0L7QtNC40YLQtdC70YwoUCwgWSksCiAgICBYIFw9IFkuCgolIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQolINCf0YDQtdC00L7QuiAo0YDQtdC60YPRgNGB0LjQstC90L4pCiUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCtC/0YDQtdC00L7QuihYLCBZKSA6LSDRgNC+0LTQuNGC0LXQu9GMKFgsIFkpLgrQv9GA0LXQtNC+0LooWCwgWSkgOi0g0YDQvtC00LjRgtC10LvRjChYLCBaKSwg0L/RgNC10LTQvtC6KFosIFkpLgoKJSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KJSDQodGC0LDQvdC00LDRgNGC0L3Ri9C1INGA0L7QtNGB0YLQstC10L3QvdGL0LUg0YHQstGP0LfQuAolIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQolINCo0YPRgNC40L0g4oCUINCx0YDQsNGCINC20LXQvdGLINC40LvQuCDQvNGD0LYg0YHQtdGB0YLRgNGLINC20LXQvdGLCtGI0YPRgNC40L0oWCwgWSkgOi0KICAgINGB0YPQv9GA0YPQsyhZLCBXKSwKICAgINC20LXQvdGJ0LjQvdCwKFcpLAogICAg0LHRgNCw0YIoWCwgVykuCgrRiNGD0YDQuNC9KFgsIFkpIDotCiAgICDRgdGD0L/RgNGD0LMoWSwgVyksCiAgICDQttC10L3RidC40L3QsChXKSwKICAgINGB0LXRgdGC0YDQsChTLCBXKSwKICAgINGB0YPQv9GA0YPQsyhYLCBTKS4KCiUg0JTQtdCy0LXRgNGMIOKAlCDQsdGA0LDRgiDQvNGD0LbQsArQtNC10LLQtdGA0YwoWCwgWSkgOi0KICAgINGB0YPQv9GA0YPQsyhZLCBNKSwKICAgINC80YPQttGH0LjQvdCwKE0pLAogICAg0LHRgNCw0YIoWCwgTSkuCgolINCX0L7Qu9C+0LLQutCwIOKAlCDRgdC10YHRgtGA0LAg0LzRg9C20LAK0LfQvtC70L7QstC60LAoWCwgWSkgOi0KICAgINGB0YPQv9GA0YPQsyhZLCBNKSwKICAgINC80YPQttGH0LjQvdCwKE0pLAogICAg0YHQtdGB0YLRgNCwKFgsIE0pLgoKJSDQodCy0L7Rj9GH0LXQvdC40YbQsCDigJQg0YHQtdGB0YLRgNCwINC20LXQvdGLCtGB0LLQvtGP0YfQtdC90LjRhtCwKFgsIFkpIDotCiAgICDRgdGD0L/RgNGD0LMoWSwgVyksCiAgICDQttC10L3RidC40L3QsChXKSwKICAgINGB0LXRgdGC0YDQsChYLCBXKS4KCiUg0J/Qu9C10LzRj9C90L3QuNC6IOKAlCDRgdGL0L0g0LHRgNCw0YLQsCDQuNC70Lgg0YHQtdGB0YLRgNGLCtC/0LvQtdC80Y/QvdC90LjQuihYLCBZKSA6LQogICAg0LzRg9C20YfQuNC90LAoWCksCiAgICAo0LHRgNCw0YIoQiwgWSkgOyDRgdC10YHRgtGA0LAoQiwgWSkpLAogICAg0YDQvtC00LjRgtC10LvRjChCLCBYKS4KCiUg0JTQstC+0Y7RgNC+0LTQvdGL0Lkg0L/Qu9C10LzRj9C90L3QuNC6IOKAlCDRgdGL0L0g0LTQstC+0Y7RgNC+0LTQvdC+0LPQviDQsdGA0LDRgtCwL9GB0LXRgdGC0YDRiwrQtNCy0L7RjtGA0L7QtNC90YvQuV/Qv9C70LXQvNGP0L3QvdC40LooWCwgWSkgOi0KICAgINC80YPQttGH0LjQvdCwKFgpLAogICAgKNC00LLQvtGO0YDQvtC00L3Ri9C5X9Cx0YDQsNGCKEIsIFkpIDsg0LTQstC+0Y7RgNC+0LTQvdCw0Y9f0YHQtdGB0YLRgNCwKEIsIFkpKSwKICAgINGA0L7QtNC40YLQtdC70YwoQiwgWCkuCgrQtNCy0L7RjtGA0L7QtNC90YvQuV/QsdGA0LDRgihYLCBZKSA6LQogICAg0LzRg9C20YfQuNC90LAoWCksCiAgICDRgNC+0LTQuNGC0LXQu9GMKFB4LCBYKSwKICAgINGA0L7QtNC40YLQtdC70YwoUHksIFkpLAogICAgKNCx0YDQsNGCKFB4LCBQeSkgOyDRgdC10YHRgtGA0LAoUHgsIFB5KSksCiAgICBYIFw9IFkuCgrQtNCy0L7RjtGA0L7QtNC90LDRj1/RgdC10YHRgtGA0LAoWCwgWSkgOi0KICAgINC20LXQvdGJ0LjQvdCwKFgpLAogICAg0YDQvtC00LjRgtC10LvRjChQeCwgWCksCiAgICDRgNC+0LTQuNGC0LXQu9GMKFB5LCBZKSwKICAgICjQsdGA0LDRgihQeCwgUHkpIDsg0YHQtdGB0YLRgNCwKFB4LCBQeSkpLAogICAgWCBcPSBZLgoKJSDQotGR0YnQsCDigJQg0LzQsNGC0Ywg0LbQtdC90YsK0YLRkdGJ0LAoWCwgWSkgOi0KICAgINGB0YPQv9GA0YPQsyhZLCBXKSwKICAgINC20LXQvdGJ0LjQvdCwKFcpLAogICAg0YDQvtC00LjRgtC10LvRjChYLCBXKSwKICAgINC20LXQvdGJ0LjQvdCwKFgpLgoKJSDQotGR0YHRgtGMIOKAlCDQvtGC0LXRhiDQttC10L3RiwrRgtC10YHRgtGMKFgsIFkpIDotCiAgICDRgdGD0L/RgNGD0LMoWSwgVyksCiAgICDQttC10L3RidC40L3QsChXKSwKICAgINGA0L7QtNC40YLQtdC70YwoWCwgVyksCiAgICDQvNGD0LbRh9C40L3QsChYKS4KCiUg0J3QtdCy0LXRgdGC0LrQsCDigJQg0LbQtdC90LAg0YHRi9C90LAK0L3QtdCy0LXRgdGC0LrQsChYLCBZKSA6LQogICAg0LbQtdC90YnQuNC90LAoWCksCiAgICDRgNC+0LTQuNGC0LXQu9GMKFksIFMpLAogICAg0LzRg9C20YfQuNC90LAoUyksCiAgICDRgdGD0L/RgNGD0LMoUywgWCkuCgolINCX0Y/RgtGMIOKAlCDQvNGD0LYg0LTQvtGH0LXRgNC4CtC30Y/RgtGMKFgsIFkpIDotCiAgICDQvNGD0LbRh9C40L3QsChYKSwKICAgINGA0L7QtNC40YLQtdC70YwoWSwgRCksCiAgICDQttC10L3RidC40L3QsChEKSwKICAgINGB0YPQv9GA0YPQsyhYLCBEKS4KCiUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiUg0JDRgNGF0LDQuNGH0L3Ri9C1INC4INGA0LXQtNC60LjQtSDRgtC10YDQvNC40L3RiwolIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQoKJSDQr9GC0YDQvtCy0Ywg4oCUINC20LXQvdCwINC00LXQstC10YDRjyAo0LbQtdC90LAg0LHRgNCw0YLQsCDQvNGD0LbQsCkK0Y/RgtGA0L7QstGMKFgsIFkpIDotCiAgICDQttC10L3RidC40L3QsChYKSwKICAgINGB0YPQv9GA0YPQsyhZLCBNKSwKICAgINC80YPQttGH0LjQvdCwKE0pLAogICAg0LHRgNCw0YIoQiwgTSksCiAgICDRgdGD0L/RgNGD0LMoQiwgWCkuCgolINCh0YLRgNGL0Lkg4oCUINC+0YLQtdGGINC+0YLRhtCwICjQv9GA0LDQtNC10LQg0L/QviDQvtGC0YbQvtCy0YHQutC+0Lkg0LvQuNC90LjQuCkK0YHRgtGA0YvQuShYLCBZKSA6LQogICAg0YDQvtC00LjRgtC10LvRjChYLCBQKSwKICAgINGA0L7QtNC40YLQtdC70YwoUCwgWSksCiAgICDQvNGD0LbRh9C40L3QsChYKSwKICAgINC80YPQttGH0LjQvdCwKFApLgoKJSDQo9C5IOKAlCDRgdC10YHRgtGA0LAg0L7RgtGG0LAgKNGC0ZHRgtGPINC/0L4g0L7RgtGG0YMpCtGD0LkoWCwgWSkgOi0KICAgINGA0L7QtNC40YLQtdC70YwoUCwgWSksCiAgICDQvNGD0LbRh9C40L3QsChQKSwKICAgINGB0LXRgdGC0YDQsChYLCBQKS4=