【发布时间】:2022-01-04 07:00:36
【问题描述】:
我正在尝试解决问答任务。有几种方法可以解决这个问题,比如深度学习方法、查询知识图、语义搜索等。但我想是否也可以使用 Z3 定理证明器来完成该任务?例如,如果我们可以将知识表示为一组公理,每个公理由谓词(关系)、主语和宾语组成,并用 FOL 子句表示,那么我们可以遍历它们并找到查询的答案(可以也可以表示为公理)。例如,我可以在 FOL 子句中编码一个简单的知识“English is language”:
exists l.(language(l) & exists n.(name(n) & :op1(n,"English") & :name(l,n)))
我怎样才能把它翻译成Z3?以及如何提取查询“{unknown} is language”的答案以找到 {unknown} 变量或子句?请注意,{unknown} 可以是任何东西。它可以是原子子句或逻辑子句,具体取决于与查询的匹配。
【问题讨论】:
标签: z3 first-order-logic