未能细化任何待定目标
Failed to refine any pending goal
我正在尝试证明 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
最后一个进球我需要证明一个蕴涵。像往常一样,我假设前提并试图证明结论。但是,当我写最后一行时,我得到 "Failed to refine any pending goal"。是因为我之前应用的归纳原理吗?因为没有那个归纳,我可以像往常一样使用蕴涵引入规则(假设前提然后显示结论)。
有人知道会发生什么吗?
非常感谢。
"problem"确实与proof -
有关。该语句打开一个新的子证明,而不对目标应用任何证明方法。如果你写 proof
而没有 -
,证明方法 rule
将被隐式应用,这在这种情况下起到了作用。
proof rule
选择最直接的规则应用于您的目标。在这种情况下,这将等同于 proof (rule impI)
,因为您要证明的对象级语句的形式为 "a --> b"
。 impI
是蕴涵的引入规则。它允许您将 "a --> b"
形式的对象级含义提升到元逻辑 "a" ==> "b"
.
您的目标需要采用 "a" ==> "b"
形式才能继续 assume "a" [...] show "b"
.
形式的子证明
我正在尝试证明 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
最后一个进球我需要证明一个蕴涵。像往常一样,我假设前提并试图证明结论。但是,当我写最后一行时,我得到 "Failed to refine any pending goal"。是因为我之前应用的归纳原理吗?因为没有那个归纳,我可以像往常一样使用蕴涵引入规则(假设前提然后显示结论)。
有人知道会发生什么吗?
非常感谢。
"problem"确实与proof -
有关。该语句打开一个新的子证明,而不对目标应用任何证明方法。如果你写 proof
而没有 -
,证明方法 rule
将被隐式应用,这在这种情况下起到了作用。
proof rule
选择最直接的规则应用于您的目标。在这种情况下,这将等同于 proof (rule impI)
,因为您要证明的对象级语句的形式为 "a --> b"
。 impI
是蕴涵的引入规则。它允许您将 "a --> b"
形式的对象级含义提升到元逻辑 "a" ==> "b"
.
您的目标需要采用 "a" ==> "b"
形式才能继续 assume "a" [...] show "b"
.