Page 196 - 6734
P. 196
0.4999999990686774, 3: 0.4999999990686774, 4:
1.86264514576151e-09})
pyDatalog – логічне програмування в Python
Логічне програмування основане на виведенні нових фактів з
існуючих відповідно правил логічного виведення. pyDatalog 0.17.1
(http://sites.google.com/site/pydatalog) – пакет, який додає парадигму
логічного програмуавання в Python. Datalog – повністю
декларативна підмножина мови логічного програмування Prolog. У
декларативному програмуванні програма описує що потрібно
досягти, а в імперативному – як. Програма мовою Datalog містить
факти, правила логічного виведення і запити. Наприклад, фактом є
твердження “Іван є батьком Петра”, правило логічного виведення –
“якщо Y батько X, то X дитина Y”, а запит – “знайти усіх дітей
Петра”.
from __future__ import unicode_literals
from pyDatalog import pyDatalog
pyDatalog.create_terms("isParent, isChild, isSibling,
X, Y, Z, c") # Datalog-терми (змінні з великої букви)
+isParent("Ivan","Petro") # додати факт (isParent -
предикат)
+isParent("Ivan","Stepan") # предикати можуть бути
кирилицею: globals()['назва']
# правила логічного виведення ("<=" - "якщо, то"):
isChild(X,Y) <= isParent(Y,X) # якщо Y батько X, то X
дитина Y
isSibling(X,Y) <= isParent(Z,X) & isParent(Z,Y) &
~(X==Y)
# запити:
print isChild("Petro", X).data # знайти батька Петра
print isChild(X,"Ivan").data # знайти усіх дітей
Івана
print isSibling(X,Y).data # знайти усіх братів
(c[X]==len_(Y)) <= (isParent(X,Y))
195