This commit is contained in:
2025-03-19 10:19:34 +01:00
parent d8a589aca9
commit 1d129be113

435
notebook/cviko5.ipynb Normal file
View File

@@ -0,0 +1,435 @@
{
"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
}