无法优化任何待定目标

时间:2015-10-04 00:11:46

标签: proof isabelle

我试图在Isabelle中证明一个定理,我陷入了这一步:

theorem exists_prime_factor: " (n > Suc 0) ⟶ (∃xs::nat list. prod_list xs = n ∧ all_prime xs)"
proof (induct n rule: less_induct)
    case (less k)
    assume HI: "⋀y::nat. (y < k ⟹ Suc 0 < y ⟶ (∃xs. prod_list xs = y ∧ all_prime xs))"
    then show ?case
    proof -
      show "(Suc 0 < k) ⟶ (∃xs. prod_list xs = k ∧ all_prime xs)"
        proof -     
          assume "Suc 0 < k" then show "(∃xs. prod_list xs = k ∧ all_prime xs)" sorry

在最后一个目标中,我需要证明一个含义。像往常一样,我假设前提并试图显示结论。但是,当我写下最后一行时,我得到了#34;无法优化任何待定目标&#34;。是因为我之前申请的归纳原理吗?因为没有那个归纳,我能像往常一样使用暗示引入规则(假设前提然后显示结论)。

有没有人知道可能会发生什么?

非常感谢。

1 个答案:

答案 0 :(得分:3)

&#34;问题&#34;确实与proof -有关。该声明打开了一个新的subproof,没有对目标应用任何证明方法。如果您在没有proof的情况下编写-,则会隐式应用证明方法rule,这可以解决这种情况。

proof rule选择最直接的规则来应用于您的目标。在这种情况下,这将等同于proof (rule impI),因为您要证明的对象级别语句的格式为"a --> b"impI是暗示的引入规则。它允许您将表单"a --> b"的对象级含义提升为元逻辑"a" ==> "b"

您需要使用"a" ==> "b"形式的目标继续assume "a" [...] show "b"形式的子证明。