寻找 algorithm/research 区域,该区域确定在给定 Prolog 程序的情况下使 Prolog 查询为真的事实

Look for algorithm/research area that determines facts that would make a Prolog query true given a Prolog program

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

% Program
hasProperty(Object, Property) :-
   property(Object, hasProperty, Property).

property(apple, hasProperty, red).
property(car, hasProperty, drivable).
% Magic function that determines what Facts would make
% query 'hasProperty(lemon, sour)' true
% in the program above
?- whatFacts(hasProperty(lemon, sour), Facts).
Facts = [property(lemon, sour)]

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

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

如评论中所述,这称为归纳推理,一个好的指南简单合乎逻辑:https://too.simply-logical.space/src/text/3_part_iii/8.0.html

这叫“拐”。

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

对于逻辑编程的观点,Wikipedia 提供了这个条目:Abductive Logic Programming.

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

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

克里斯蒂安森指的是这本书

外展和归纳:关于它们的关系和整合的论文,由 Peter A. Flach 和 Antonis Hadjiantonis 编辑(Kluwer Academic Publishers,2000 年 4 月),Amazon Link, first chapter at researchgate

并提供了这个介绍性解释器:

Deduction, reasoning within the knowledge we have already, i.e.,from those facts we know and those rules and regularities of the world that we are familiar with. E.g., reasoning from causes to effects: If you make a fire here, you will burn down the house.

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

Induction, finding general rules from the regularities that we have experienced in the facts that we know; these rules can be used later for prediction: Every time I made a fire in my living room, the house burnt down ... Aha, the next time I make a fire in my living room, the house will burn down too.

Abduction, reasoning from observed results to the basic facts from which they follow, quite often it means from an observed effect to produce a qualified guess for a possible cause: The house burnt down, perhaps my cousin has made a fire in the living room again.

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

这是一个洒水器 Link search result

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