我在复杂事件处理系统上做了一些工作。它支持使用查询语言基于这些记录的成员过滤记录集。该语言支持对任意成员的逻辑,算术和用户定义的运算符。
以下是受支持查询的示例:
( MemberA > MemberB ) &&
( @in MemberC { "str1", "str2" } ) &&
( com.foo.Bar.myPred( MemberD, MemberE ) )
我的问题是我想将查询合并到一个超级查询中,然后我想优化该超级查询以消除冗余,重言式和矛盾。例如我想采取
A > 0
并将其与
结合使用A > 1
这很容易:
A > 0 || A > 1
然后我想优化它以便减少到
A > 0
如果有任何网址或书籍讨论这个一般主题,我很感激了解它们。
答案 0 :(得分:0)
书籍?我想有几个;而且你很可能应该在这个领域寻找文章。
您可能会看到SMT solvers可以使用您的查询域。你用表达语言的数学化定义,你所支持的关系的状态公理来提供它们。然后,他们可以推断,如果(是的,两个相等的连词)一个谓词是否暗示另一个是一个重言式。
请注意,此任务的自动化解决方案含糊不清,有时超出了图灵机(即计算机)的理论功能。您将无法找到解决问题的唯一解决方案。