Prolog

Для тех, кто хочет использовать Prolog из Python, существует несколько возможностей:

• Версия GNU Prolog (сайт: http://gprolog.sourceforge.net) интегрируется с Python посредством пакета bedevere (сайт: http://bedevere.sourceforge.net)

• Имеется пакет PyLog (http://www.gocept.com/angebot/opensource/Pylog) для работы с SWI–Prolog (http://www.swi–prolog.org) из Python

• Можно использовать пакет pylog (доступен с сайта: http://christophe.delord.free.fr/en/pylog/), который добавляет основные возможности Prolog в Python

Эти три варианта реализуют различные способы интеграции возможностей Prolog в Python. Первый вариант использует SWIG, второй организует общение с Prolog–системой через конвейер, а третий является специализированной реализацией Prolog.

Следующий пример показывает использование модуля pylog:

from pylog import *

exec(compile(r"""

man('Socrates').

man('Democritus').

mortal(X) :- man(X).

"""))

WHO = Var()

queries = [mortal('Socrates'),

           man(WHO),

           mortal(WHO)]

for query in queries:

 print "?", query

 for _ in query():

  print "    yes:", query

Что выдает результат:

? mortal(Socrates)

    yes: mortal(Socrates)

? man(_)

    yes: man(Socrates)

    yes: man(Democritus)

? mortal(_)

    yes: mortal(Socrates)

    yes: mortal(Democritus)

Разумеется, это не «настоящий» Prolog, но с помощью модуля pylog любой, кому требуются логические возможности Prolog в Python, может написать программу с использованием Prolog–синтаксиса.