Skip to main content

prologterms - a python library for constructing prolog terms

Example:

from prologterms 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 automatically.

See the Jupyter notebook

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 prologterms 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]))

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.6.tar.gz (3.9 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

prologterms-0.0.6-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: prologterms-0.0.6.tar.gz
  • Upload date:
  • Size: 3.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.1

File hashes

Hashes for prologterms-0.0.6.tar.gz
Algorithm Hash digest
SHA256 c63cfc291ccfa3e2eeea89eed93bc7fc0214a1f2d748a200de0a5fdd90e0426a
MD5 93c2d6056580d3e68545755b87d95235
BLAKE2b-256 1e997783b44e82a5a7943222ec57fd75dd9dc38b14c72949e2619a3ee231abad

See more details on using hashes here.

File details

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

File metadata

  • Download URL: prologterms-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 4.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/1.13.0 pkginfo/1.4.2 requests/2.19.1 setuptools/41.0.1 requests-toolbelt/0.8.0 tqdm/4.23.4 CPython/3.7.1

File hashes

Hashes for prologterms-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 9b8f6272dcae5a0a9257daa41cd455d5b060147486cea36623f91a3226a656e9
MD5 6f7b0e79344e82a2e308d81384e82a66
BLAKE2b-256 e766cd1904c6268b0f9146e0e3c25ca4993ef52a5077e8d30f9a604c90610c4d

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

0.0.6 This release

2 files

0.0.5

2 files

0.0.4

2 files

0.0.3

2 files

0.0.2

2 files

0.0.1

1 file

Supported by

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