logic - Prover9 "Some, but not all, of the requested proofs were found"
问题描述
I'm running some lattice proofs through Prover9/Mace4. Prover9's saying Exit: Time limit.
plus the message in the Title.
I've doubled the time limit from 60 to 120 seconds. Same message (in twice the time). The weird thing is:
- there's only one statement to prove. That is, only one
label(goal)
in the report (what's with thebut not all
?) - it does seem to have completed the proof, in that it shows last line
$F.
- Mace4 can't find any counter-examples (I upped its time to 120 seconds).
I've found some GHits for that message, but they seem to be all in Chinese(?)
It's possible the axioms I've given are (mutually) recursive -- I'm trying to introduce a function and a nominated 'absorbing element' [**]; and that solving will need infinitary unification. Does Prover9 do that?
I'm happy to add the axioms and goal to this message. (I'm using a non-standard way to define the meet and join.) But first, are there any sanity checks I should go through?
[**] the absorbing element is neither lattice top nor lattice bottom; more like lattice left-corner. (The element will be lattice bottom just in case the lattice degenerates to two elements.) The function is a partial ordering 'at right angles' to top/bottom. The lattice I expect to be neither complemented nor distributive (again except when 2 elements).
解决方案
经过多次尝试,我已经重现了这一点,但只是通过设置一些我确信我不会触及的奇怪选项。(我通常更改的唯一选项是Time limit
,而且我Reset to defaults
经常更改,所以这会掩盖任何证据。)
这是我对发生的事情的猜测。
怎么了
but not all
?
您可以输入多个目标(前提是它们都是积极的)。[**]
奇怪的选项设置,如果 Prover9 可以证明第一个但不能证明第二个,它会一直尝试直到用尽;但随后只报告成功的——
$F.
结果OK。如果你把时间限制加倍,它仍然会证明第一个并且仍然继续尝试第二个——花费两倍的时间来获得相同的结果。
Mace4 将遇到第一个目标,并花时间尝试反例。没有一个,因为它是可证明的。同样,将其时间限制加倍将在加倍后得到相同的结果。
[注意**] 我从来没有打算设定多个目标;但是当我使用公理进行黑客攻击/实验时,我将所有目标都保留在Goals:
框中,以便我可以轻松地切换取消/评论。我想我在取消注释另一个时没有注释掉一个。
如手册中所述,行为通常是 Prover9 在它证明的第一个目标上报告成功;不会继续其他目标。如果有多个可证明的目标,它似乎选择最简单/最快的(?),而不考虑文件中的位置。
但是max_proofs
设置为超过默认值 1时,Prover9 将继续尝试。(还有一个auto_denials
标志与它有关,我不明白。)
我不知道我是如何设置的——当我最终找到子屏幕时,我max_proofs
没有认出它。Options/Limits
诡异的。
推荐阅读
- sql - 将 SQL 查询转换为 Activerecord 查询
- python - 网格网格更改最大值
- c# - 我对这种说法感到困惑。Lambda 运算符?
- github - 如何在 Visual Studio Code 中更改来源以将文件上传到 GitHub
- java - 如何在 SpringBoot 2 中使用 JFileChooser?
- java - 如何在 ASM java 中将 ClassVisitor 转换为 ClassNode
- arrays - python list.sort() 函数实际上是如何工作的?
- angular - 如何在 Angular 响应式表单中访问多个 FormGroup
- prometheus - 配置 prometheus 目标以从文本文件中读取指标
- c - **标识符 msqid 已从系统中删除** 含义