Skip to main content

A simple python library for generating prolog terms

Project description

|PyPI|

prologterms - a python library for constructing prolog terms
============================================================

Example::

from prologterm import TermGenerator, PrologRenderer, Var

X = Var('X')
P = TermGenerator()
term = P.member(X, [1, 2, 3])
r = PrologRenderer()
print(r.render(term))

writes::

member(X, [1, 2, 3])

All prolog escaping conventions are handled

Rules
=====

The "<=" operator in python is overloaded to mean the same as prolog
":-". This means a rule object can be created as follows:

::

P.ancestor(X,Y) <= (P.parent(X,Z), P.ancestor(Z,Y))

This can be done more explicitly using a Rule constructor:

::

from prologterm import TermGenerator, PrologRenderer, Var, Rule

X = Var('X')
Y = Var('Y')
Z = Var('Z')
P = TermGenerator()
rule = Rule(P.ancestor(X,Y), (P.parent(X,Z), P.ancestor(Z,Y))

Usage
=====

This module is of little use by itself. It is intended to be used to
generate prolog programs that can be fed into a prolog execution
engine.

- write prolog programs and queries to a file, and load these using an engine like swi-prolog
- through web services, e.g. via pengines

Pengines
========

[Note: requires latest pengines which may not be on pypi]

One of the intended applications is pengines

::

from pengines.Builder import PengineBuilder
from pengines.Pengine import Pengine
from prologterms import TermGenerator, PrologRenderer, Program, Var

P = TermGenerator()
X = Var('X')
Y = Var('Y')
Z = Var('Z')
R = PrologRenderer()

p = Program(
P.ancestor(X,Y) <= (P.parent(X,Z), P.ancestor(Z,Y)),
P.ancestor(X,Y) <= P.parent(X,Y),
P.parent('a','b'),
P.parent('b','c'),
P.parent('c','d')
)

q = P.ancestor(X,Y)

factory = PengineBuilder(urlserver="http://localhost:4242",
srctext=R.render(p),
ask=R.render(q))
pengine = Pengine(builder=factory, debug=True)
while pengine.currentQuery.hasMore:
pengine.doNext(pengine.currentQuery)
for p in pengine.currentQuery.availProofs:
print('{} <- {}'.format(p[X.name], p[Y.name]))




Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

prologterms-0.0.2.tar.gz (3.6 kB view details)

Uploaded Source

Built Distribution

prologterms-0.0.2-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

Details for the file prologterms-0.0.2.tar.gz.

File metadata

File hashes

Hashes for prologterms-0.0.2.tar.gz
Algorithm Hash digest
SHA256 c4a9cbc776ea8df9e4a3f405a6230453298701fbfca3afb6c72f2ba8f13654ab
MD5 bc98542eb8e95a8802fe439acd8443fb
BLAKE2b-256 265517a5aa4bd8a59c691f95f9e099055043351520044ae2891e3ab40eb2a147

See more details on using hashes here.

File details

Details for the file prologterms-0.0.2-py3-none-any.whl.

File metadata

File hashes

Hashes for prologterms-0.0.2-py3-none-any.whl
Algorithm Hash digest
SHA256 d4af26d0977b60562d6aa2afcdd69870acc3db0e77c7c8532c4e36f092b58450
MD5 c12707ff3834f63e43a2d7bae01ac491
BLAKE2b-256 59fd682da6c1dd7ce1bad1dea055adc41868667646070db8e7c41ce84c7d1d2e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page