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
   191   192   193   194   195   196   197   198   199   200   201