用于生成prolog术语的简单Python库
项目描述
prologterms - 构建prolog术语的Python库
示例
from prologterms import TermGenerator, PrologRenderer, Var X = Var('X') P = TermGenerator() term = P.member(X, [1, 2, 3]) r = PrologRenderer() print(r.render(term))
写入
member(X, [1, 2, 3])
所有prolog转义约定都自动处理。
请参阅Jupyter笔记本
规则
Python中的“<”操作符被重载,表示与prolog中的“:-”相同。这意味着可以按以下方式创建规则对象
P.ancestor(X,Y) <= (P.parent(X,Z), P.ancestor(Z,Y))
可以使用规则构造函数更明确地完成此操作
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))
用法
此模块本身用处不大。它旨在用于生成可以输入到prolog执行引擎中的prolog程序。
将prolog程序和查询写入文件,然后使用swi-prolog等引擎加载这些文件
通过网络服务,例如通过pengines
Pengines
(注意:需要最新的pengines,它可能不在pypi上)
其中一个预期应用是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]))
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
prologterms-0.0.6.tar.gz (3.9 kB 查看哈希值)
构建分发
prologterms-0.0.6-py3-none-any.whl (4.0 kB 查看哈希值)
关闭
prologterms-0.0.6.tar.gz的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c63cfc291ccfa3e2eeea89eed93bc7fc0214a1f2d748a200de0a5fdd90e0426a |
|
MD5 | 93c2d6056580d3e68545755b87d95235 |
|
BLAKE2b-256 | 1e997783b44e82a5a7943222ec57fd75dd9dc38b14c72949e2619a3ee231abad |
关闭
prologterms-0.0.6-py3-none-any.whl的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 9b8f6272dcae5a0a9257daa41cd455d5b060147486cea36623f91a3226a656e9 |
|
MD5 | 6f7b0e79344e82a2e308d81384e82a66 |
|
BLAKE2b-256 | e766cd1904c6268b0f9146e0e3c25ca4993ef52a5077e8d30f9a604c90610c4d |