Isabelle 函数 termination/completeness

Function termination/completeness on Isabelle

我有一个语言环境 field 和函数 pow_F 定义如下

function (in field)
  pow_F :: "'a ⇒ nat ⇒ 'a" where
  "pow_F x 0 = ONE_F" |
  "pow_F x (Suc n) = x ⋆ (pow_F x n)"

其中 ONE_F 是字段语言环境中定义的中性元素和乘法函数。

这个函数的行为很奇怪,因为我什至无法证明以下内容

lemma (in field) "pow_F x 0 = ONE_F"

尽管它直接遵循 pow_F 的定义。当我 运行 大锤时,证明者要么放弃,要么计时器 运行 结束。

这是怎么回事?

当你使用function时,你必须证明终止才能使用pow_F.simps规则。您可能想改用 fun(自动证明终止)。