在许多纸张样张中,您会看到作者在等式中替换变量。例如,如果存在不等式“f(xy)> = g(xy)* z,则作者简单地写let h =(xy),因此”f(h)> = g(h)* z“并继续证明。
要在Isabelle做同样的事情,我是否必须假设h =(x-y),还有其他方法吗?我查看了“let”功能,然而它完全不同。
具体来说,我有:
lemma
fixes f g :: "real⇒real"
assumes "∀x∈S. ∀y∈S. f y - f x ≥ (y-x)*(g x)"
shows "∀x∈S. ∀h. f (x+h) - g x ≥ h*(g x)"
所以我让h = y-x。
如果我假设“∀h.∀x∈S.∀y∈S.h= y-x”,我可以证明这个引理。这是正确的方法吗?
答案 0 :(得分:1)
进行替换有各种可能性。
如果您对元量词有一些陈述,则可以使用where
或of
。要将公式中的量词∀
转换为元数据,您可以使用rule_format
。然后,assms[rule_format, of x "h+x"]
在您的示例中生成公式x ∈ S ⟹ x + h ∈ S ⟹ f (x + h) - f x >= (x + h - x) * g x
。
在这里,您会立即看到两个问题:首先是- f x
和- g x
之间的差异,以及不能保证x + h ∈ S
的问题。
或者,您也可以通过展开来执行替换,例如,使用def h = "x - y"
,然后折叠或展开h_def
。