1

我正在阅读很多关于逻辑编程的内容——ASP(答案集编程)就是一个例子。它们(逻辑程序)通常采用以下形式:

【程序1】规则1:a <- a1, a2, ..., not am, am+1; 规则2:...

这组规则称为逻辑程序,sc 模型是这种计算的结果——将真/假值分配给 a1、a2、...某种程序(规则)可以与(语义网)本体集成以构建包含规则和本体(某种约束/行为和数据)的知识库;有很多关于 ASP 本身的研究——比如并行扩展、概率逻辑扩展、时间逻辑等等。

我的问题是 - 是否有某种研究或者一些概念验证项目,其中这种分析从布尔变量扩展到具有整数甚至浮点域的变量?目前我还没有发现任何可以解决以下程序的研究:

【程序2】Rule1 a1:=5 <- a2=5, a3=7, a4<8, ... Rule2 ... ... [最后给a1、a2等赋值,就是解本节目]

目前 - 据我了解 - 如果有人想对 Program-2 执行某种分析(例如,找出这个程序在某种意义上是否正确 - 例如它是否满足某些属性,如果它终止,哪些域被允许不违反某种性质等等),那么他或她必须根据 Program-1 重述 Program-2,然后以似乎完全未开发的方式进行 - 据我所知(我不相信就是这样)未经探索,简单地说-我不知道某些来源或趋势)。约束逻辑编程允许在 Program-1 中使用具有不等式的语句,但它也过于关注布尔变量。实际上 - Programm-2 是一种在业务规则系统中相当常见的类型,这就是我对逻辑编程感兴趣的原因。

所以-我的问题有一些历史-我的实践经验使我欣赏业务规则系统/引擎,尤其是-JBoss项目Drools,我打算对sc生产规则系统的基础理论进行某种研究(我曾经和我我打算就他们做我的论文——如果我能发现这里可以做些什么),但我可以说没什么可做的——在阅读了文献之后(例如http://www.computer.org/csdl/ trans/tk/2010/11/index.html是优秀的 IEEE TKDE 特刊,有一些关于它们的文章,其中一篇是 Drools 领导者撰写的)可以看到几十年前的 Rete 算法有某种技术改进,但没有 Drools 或其他生产规则系统的理论这可能有助于对它们进行一些正式的分析。那么 - 另一个问题是 -是否存在生产规则系统理论(对于 Drools、Jess、CLIPS 等规则引擎),是否有实际需要这种理论以及使用 Drools 和其他系统的实际问题是什么?由生产规则系统理论来解决

ps 我知道 - 所有这些问题都应该提交给论文顾问,但我目前的立场是(据我所知)我所在的部门没有适合回答这些问题的人,所以 - 我是阅读期刊和会议论文集(有很好的计算机科学系列讲座系列 - RuleML 和 RR)...

感谢您提前提供任何提示!

4

2 回答 2

1

从某种意义上说,布尔系统已经按照您的建议进行了操作。

为了确保 A=5 是您解决方案的一部分,请考虑规则(我忘记了我的 ASP 语法,所以请耐心等待)

integer 1..100 //integers 1 to 100 exist
1{A(X) : integer(X)}1 //there is one A(X) that is true, where X is an integer
A(5) //A(5) is true

我认为您的条款将要求:

integer 1..100 //integers 1 to 100 exist
1{A(X) : integer(X)}1  //A1 can take only one value and must take a value
1{B(X) : integer(X)}1  //A2 ``
1{C(X) : integer(X)}1  //A3 ``
1{D(X) : integer(X)}1  //A4 ``
A(5) :- B(5), C(7), D(8) //A2=5, A3=7, A4=8 ==> A1=5

我希望我已经正确理解了这个问题。

于 2012-05-04T21:26:03.057 回答
1

Clojure core.logic的最新版本(自 0.8 起)正好包含这种支持,基于cKanren

在此处查看示例:https ://gist.github.com/4229449

于 2012-12-27T00:12:10.540 回答