gpt4 book ai didi

Python:pyswip 输出返回 Atom 和 Functor

转载 作者:行者123 更新时间:2023-12-05 04:38:16 25 4
gpt4 key购买 nike

基于一些较旧的 post ,我有一些序言程序,它指定了命题。我们称它为“logic.pl”

:-op(800, fx, ¬).
:-op(801, xfy, ∧).
:-op(802, xfy, ∨).
:-op(803, xfy, →).
:-op(804, xfy, ↔).
:-op(800, xfy, #).


m_Proposition_Binary_x_y(X ∨ Y, X, Y).
m_Proposition_Binary_x_y(X ∧ Y, X, Y).
m_Proposition_Binary_x_y(X → Y, X, Y).
m_Proposition_Binary_x_y(X ↔ Y, X, Y).

m_Proposition(X) :-
m_Proposition_Atom(X).
m_Proposition(Binary) :-
m_Proposition_Binary_x_y(Binary, X, Y),
m_Proposition(X),
m_Proposition(Y).
m_Proposition(¬ X) :-
m_Proposition(X).



m_Proposition_Atom(p).
m_Proposition_Atom(q).

我现在的目标是基于 python 程序处理一些序言函数。 python 为此目的提供的库是 pyswip。

我现在这个库的问题是 swipl 函数 intersection/3 .如果我跑例如这个功能

intersection([A,(A→B)], [p, (p→q)], Aim).

手动从 SWI-Prolog 中,我得到了我想要的输出:

A = p,
B = q,
Aim = [p, p→q].

但是在 python 代码中:

from pyswip import Prolog


prolog = Prolog()
prolog.consult("logic.pl")

for res in prolog.query("intersection([A,(A→B)], [p, (p→q)], Aim)."):
print(res)

我的输出是:

{'A': 'p', 'B': 'q', 'Aim': [Atom('331781'), Functor(8343821,2,p,q)]}

我现在的问题是,原因是什么:

'Aim': [Atom('331781'), Functor(8343821,2,p,q)] 

有没有办法将其转化为我的预期输出?

Aim = [p, p→q]

最佳答案

我只是找到了一些答案。我刚刚安装了最新的稳定版本 0.2.10

pip install pyswip

版本 0.2.11 来自 github-page这个问题应该是固定的。你可以通过命令安装0.2.11:

pip install git+https://github.com/yuce/pyswip@master#egg=pyswip

我现在的输出是:

[{'A': 'p', 'B': 'q', 'Aim': ['p', '→(p, q)']}]

关于Python:pyswip 输出返回 Atom 和 Functor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70631143/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com