假设有一个引理,我们称之为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"
但由于在我咨询的通常文件中几乎没有任何例子,我无法弄清楚如何证明这一点。)
答案 0 :(得分:1)
您可以使用of
和where
属性在您的定理中实例化自由变量,例如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>