{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Requirement already satisfied: pytholog in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (2.4.1)\n", "Requirement already satisfied: more-itertools in /home/br0kenpixel/Documents/ui-cviko1/lib64/python3.13/site-packages (from pytholog) (10.6.0)\n", "\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m A new release of pip is available: \u001b[0m\u001b[31;49m24.2\u001b[0m\u001b[39;49m -> \u001b[0m\u001b[32;49m25.0.1\u001b[0m\n", "\u001b[1m[\u001b[0m\u001b[34;49mnotice\u001b[0m\u001b[1;39;49m]\u001b[0m\u001b[39;49m To update, run: \u001b[0m\u001b[32;49mpip install --upgrade pip\u001b[0m\n", "Note: you may need to restart the kernel to use updated packages.\n" ] } ], "source": [ "%pip install pytholog" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "import pytholog as pl" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "family = pl.KnowledgeBase(\"family\")\n", "family([\n", " \"parents(susanne,charles,jane)\",\n", " \"parents(susanne,charles,diana)\",\n", " \"parents(susanne,charles,jack)\",\n", " \"parents(jane,tom,peter)\",\n", " \"parents(jane,tom,anne)\",\n", " \"parents(anne,luis,kate)\"])" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Who': 'jane'}]" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "#who is mother of peter?\n", "family.query(pl.Expr(\"parents(Who,_,peter)\"))" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [], "source": [ "family([\"matka(X,Y) :- parents(X,_,Y)\"])" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Kto': 'jane'}]" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"matka(Kto,peter)\"))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'X': 'anne'},\n", " {'X': 'jane'},\n", " {'X': 'jane'},\n", " {'X': 'susanne'},\n", " {'X': 'susanne'},\n", " {'X': 'susanne'}]" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"matka(X,_)\"))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"otec(O,D) :- parents(_,O,D)\"])" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Kto': 'charles'}]" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"otec(Kto, jack)\"))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"rodic(R, D) :- otec(R, D)\",\n", " \"rodic(R, D) :- matka(R, D)\"\n", "])" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Yes']" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"rodic(charles, jack)\"))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Who': 'charles'}, {'Who': 'susanne'}]" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"rodic(Who, jack)\"))" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"dedo(Dedo, Vnuk) :- otec(Dedo, Rodic), rodic(Rodic, Vnuk)\",\n", "])" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Kto': 'charles'}]" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"dedo(Kto, peter)\"))" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Vnuci': 'peter'}, {'Vnuci': 'anne'}]" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"dedo(charles, Vnuci)\"))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Vnuci': 'kate'}]" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"dedo(tom, Vnuci)\"))" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"babka(Babka, Vnuk) :- matka(Babka, Rodic), rodic(Rodic, Vnuk)\",\n", "])" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"surodenec(X, Y) :- rodic(R, X), rodic(R, Y)\",\n", "])" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'S': 'jane'},\n", " {'S': 'diana'},\n", " {'S': 'jack'},\n", " {'S': 'jane'},\n", " {'S': 'diana'},\n", " {'S': 'jack'}]" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"surodenec(diana, S)\"))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"surodenec_vlastny(X, Y) :- otec(O, X), otec(O, Y), matka(M, X), matka(M, Y)\",\n", "])" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'S': 'jane'}, {'S': 'diana'}, {'S': 'jack'}]" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"surodenec_vlastny(diana, S)\"))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [], "source": [ "family([\n", " \"predok(Pred, Pot) :- rodic(Pred, Pot)\",\n", " \"predok(Pred, Pot) :- rodic(Pred, Pot1), predok(Pot1, Pot)\"\n", "])" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "[{'Kto': 'luis'},\n", " {'Kto': 'anne'},\n", " {'Kto': 'tom'},\n", " {'Kto': 'jane'},\n", " {'Kto': 'charles'},\n", " {'Kto': 'susanne'}]" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"predok(Kto, kate)\"))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['Yes']" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "family.query(pl.Expr(\"predok(susanne, peter)\"))" ] } ], "metadata": { "kernelspec": { "display_name": "ui-cviko1", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.13.2" } }, "nbformat": 4, "nbformat_minor": 2 }