寻找算法/研究领域,以确定在给定 Prolog 程序的情况下使 Prolog 查询为真的事实

问题描述

我正在为这个研究领域寻找研究、算法甚至术语,这些研究采用 Prolog 程序和我希望为真的查询,并试图找到需要的事实断言使其成为真实。例如:

add_action( 'woocommerce_view_order','order_pay_button' );
function order_pay_button( $order_id ){
    // Get an instance of the `WC_Order` Object
    $order = wc_get_order( $order_id );

    if ( $order->get_status() == "pending" ) {
        printf(
            '<a class="woocommerce-button button pay" href="%s/order-pay/%s/?pay_for_order=true&key=%s">%s</a>',wc_get_checkout_url(),$order_id,$order->get_order_key(),__("Pay for this order","woocommerce")
        );
    }
}
% Program
hasProperty(Object,Property) :-
   property(Object,hasProperty,Property).

property(apple,red).
property(car,drivable).

我确信已经对此进行了研究,而且在一般情况下它似乎无法解决,但我很好奇已经做了什么,但我很难找到合适的术语来找到工作。

想要任何指向我所描述的领域或问题的实际算法或名称的指针。

解决方法

这就是所谓的“绑架”。

对于哲学逻辑的观点,斯坦福哲学百科全书提供了这个条目:Abduction

对于逻辑编程的观点,维基百科提供了这个条目:Abductive Logic Programming

一篇使用 Prolog 和 CHR(约束处理规则)进行溯因推理的论文:

Henning Christiansen:Abductive reasoning in Prolog and CHR (PDF):KIIS 课程简介,2005 年秋季。

Christiansen 指的是这本书

Abduction and Induction:Essays on their Relation and Integration,由 Peter A. Flach 和 Antonis Hadjiantonis 编辑(Kluwer Academic Publishers,2000 年 4 月),Amazon Linkfirst chapter at researchgate

并提供此介绍性解释器:

演绎,在我们已有的知识范围内进行推理,即从那些 我们知道的事实以及我们所处的世界的规则和规律 熟悉。例如,从原因到结果的推理:如果你生火 在这里,你会烧掉房子。

在 Prolog 中,如果您的目标恰好是“烧毁房子”,那么语言的结构可以最自然地找到“在这里生火”的前提。

归纳,从我们有的规律中找出一般规则 在我们知道的事实中经历过;这些规则可以稍后用于 预测:每次我在客厅生火,房子都会被烧毁 下来...... 啊哈,下次我在客厅生火时,房子 也会烧毁

Abduction,从观察到的结果到基本事实的推理 它们遵循,通常意味着从观察到的效果产生 对可能原因的合格猜测:房子被烧毁,也许是我的表弟 又在客厅生火了。

“溯因逻辑编程”(ALP) 是(曾经是?)一个活跃的研究领域。

这是带有 search result 的 Sprinker 链接。

ALP 是常识推理和规划中的常见问题。想到的例子:

,

正如评论中所说,这称为溯因推理,一个好的指南是简单的逻辑:https://too.simply-logical.space/src/text/3_part_iii/8.0.html

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...