在Isabelle中实例化定理

时间:2017-02-19 23:37:46

标签: isabelle

假设有一个引理,我们称之为an_equation,证明方程f(n)= n * n + 1适用于所有奇数自然数n(并且f是一些先前定义的函数)。

如何将这个引理实例化为n的具体值,以便我可以证明,比如f(5)= 5 * 5 + 1?

lemmas关键字,我可以证明lemmas inst = an_equation[where n=5, simplified],但这不是我的意思。我想要的是

lemma inst_new : "f(5) = 5*5+1"

但由于在我咨询的通常文件中几乎没有任何例子,我无法弄清楚如何证明这一点。)

1 个答案:

答案 0 :(得分:1)

您可以使用ofwhere属性在您的定理中实例化自由变量,例如an_equation[of 5]an_equation[where n = 5]。您还可以实例化其假设,例如:如果你有一个名为foo的{​​{1}}形式的定理,并且你有P x ⟹ Q x形式的bar定理,你可以P 5得到定理foo[OF bar]

您可以使用Q 5(例如thm)检查这些实例,并在thm foo[of 5]using等证明中使用它们。

注意,证明方法也可以在需要时实例化定理,例如:如果你有如上所述from定理foo且你有目标P n ⟹ Q n的定理,你可以这样做:

Q 5

然后目标状态将有一个子目标,即lemma "Q 5" apply (rule foo)

因此,在您的情况下,P 5应该可以解决问题。像by (rule an_equation)by (simp add: an_equation)using an_equation by simp这样的东西可能也会起作用,但一般来说可能稍微不那么健壮,因为简化器可以先做其他事情,然后规则可能不再适用。< / p>