将自由变量转换为绑定变量
Converting free variables to bound variables
我想证明下面的引理
lemma assumes "f (w+n) - f w / n ≤ g (w+n)"
shows "∀n. (f (w+n) - f w) / n ≤ g (w+n)"
我以为这会很简单,但事实证明它比我最初想象的要棘手。从我的想法来看,假设中的不等式对所有w和n都有效,因此我试图证明的结果也应该有效。
我已经搜索了文档和 运行 大锤,但是我没有成功。
这可以解决吗?还是我试图证明完全不同的陈述?如果是这样,请有人解释为什么。
(关于限制的其他答案的 HOL 公式是错误的。我无权访问该用户帐户。我提交了一个编辑过的答案,但我不知道它是否会出现。我有 y x
而不是 x y
。我没有修复它,因为我不知道如何。我只是在顶部做了一些额外的评论。)
(不要采纳这个答案,你等着看有没有专家出现,欧洲人还没出现。)
当我插入你的引理时,Nitpick 告诉我它找到了一个反例:
Auto Nitpick found a counterexample for
card "'a∷{inverse,minus,plus,ord}" = 2:
那是因为我启用了 "Auto Nitpick"。您转到选项页面,然后是 "Isabelle / General" 设置。我通常启用 "Auto Nitpick"、"Auto Quickcheck" 和 "Auto Solve Direct"。
我刚刚注意到我没有启用 "Auto Methods"。由于某种原因,它肯定吸收了太多 CPU,但启用它通常也很好。
如果您的 CPU 是 运行ning full bore,而您认为它不应该是,那么您禁用 "Auto Methods" 看看是否是问题所在。我不使用 "Auto Sledgehammer"。对CPU要求很高,我直接运行了
Auto Nitpick 有时会帮我省去很多麻烦。它只是在我不期望的时候弹出。出于某种原因,我再也不记得直接 运行 它了。你用 nitpick
来做到这一点。有关选项的更多详细信息,请参阅 PDF。
至于为什么你的引理失败,我不知道。也许其他人会知道。
我现在正在查看的是您的变量的排序。最终,您必须了解类型 类 和排序。有不同的方法可以获取更多信息。我使用 declare
,有时我会得到太多信息:
declare[[show_sorts=true, show_consts=true]]
在输出面板中,我看到了它在反例中显示的内容。你的类型是这样的:
'a :: {inverse,minus,plus,ord}
您的变量,例如 w
,是 w :: 'a :: {inverse,minus,plus,ord}
。这 4 种类型描述了变量具有的代数属性。您需要了解这些类型对您的功能的使用有哪些限制。您可能需要额外的排序才能得到您想要的。
前面的回答已经说明,你的说法不成立。键入类,但是,与它没有任何关系;这是一个非常基础的逻辑问题。
首先需要注意的是,你的假设很可能是
(f (w+n) - f w) / n ≤ g (w+n)
按照你写的方式,意思是
f (w+n) - (f w / n) ≤ g (w+n)
但即使你修复了它,它仍然不成立,原因在于自由变量的含义。 Isabelle 中的约定是引理中的自由变量(在上下文中的任何地方都没有绑定)是隐式普遍限定的。这通常是数学中的约定;我们写 a + b = b + a
,而不是 ∀a b. a + b = b + a
。
因此,您的引理对伊莎贝尔的意思是:
∀f g w n. (f (w+n) - f w) / n ≤ g (w+n) ⟹ ∀n. (f (w+n) - f w) / n ≤ g (w+n)
通俗地说,如果命题对 one n 成立,则它必须对 all n 成立。这显然是错误的。我的猜测是当您写下
时,您感到困惑
lemma "(f (w+n) - f w) / n ≤ g (w+n)"
那么这已经意味着它适用于所有 n
(由于相同的约定)。但是当你只是接受它并通过它进入另一个引理的假设时,相同的约定会导致相反的含义:"for any n
, if the assumption holds, then ...".
如果你真的想以对所有 n
成立的方式陈述假设,你必须写
lemma assumes "⋀n. (f (w+n) - f w) / n ≤ g (w+n)"
shows "∀n. (f (w+n) - f w) / n ≤ g (w+n)"
那么证明只是规则 allI
的一种应用,可以用 blast
或 auto
自动完成。请注意,⋀ 是 Isabelle 在元逻辑中的通用限定词。它的含义类似于在数学中你说 "Fix some n." 或 "Let n be a fixed, but arbitrary number".
我想证明下面的引理
lemma assumes "f (w+n) - f w / n ≤ g (w+n)"
shows "∀n. (f (w+n) - f w) / n ≤ g (w+n)"
我以为这会很简单,但事实证明它比我最初想象的要棘手。从我的想法来看,假设中的不等式对所有w和n都有效,因此我试图证明的结果也应该有效。
我已经搜索了文档和 运行 大锤,但是我没有成功。
这可以解决吗?还是我试图证明完全不同的陈述?如果是这样,请有人解释为什么。
(关于限制的其他答案的 HOL 公式是错误的。我无权访问该用户帐户。我提交了一个编辑过的答案,但我不知道它是否会出现。我有 y x
而不是 x y
。我没有修复它,因为我不知道如何。我只是在顶部做了一些额外的评论。)
(不要采纳这个答案,你等着看有没有专家出现,欧洲人还没出现。)
当我插入你的引理时,Nitpick 告诉我它找到了一个反例:
Auto Nitpick found a counterexample for
card "'a∷{inverse,minus,plus,ord}" = 2:
那是因为我启用了 "Auto Nitpick"。您转到选项页面,然后是 "Isabelle / General" 设置。我通常启用 "Auto Nitpick"、"Auto Quickcheck" 和 "Auto Solve Direct"。
我刚刚注意到我没有启用 "Auto Methods"。由于某种原因,它肯定吸收了太多 CPU,但启用它通常也很好。
如果您的 CPU 是 运行ning full bore,而您认为它不应该是,那么您禁用 "Auto Methods" 看看是否是问题所在。我不使用 "Auto Sledgehammer"。对CPU要求很高,我直接运行了
Auto Nitpick 有时会帮我省去很多麻烦。它只是在我不期望的时候弹出。出于某种原因,我再也不记得直接 运行 它了。你用 nitpick
来做到这一点。有关选项的更多详细信息,请参阅 PDF。
至于为什么你的引理失败,我不知道。也许其他人会知道。
我现在正在查看的是您的变量的排序。最终,您必须了解类型 类 和排序。有不同的方法可以获取更多信息。我使用 declare
,有时我会得到太多信息:
declare[[show_sorts=true, show_consts=true]]
在输出面板中,我看到了它在反例中显示的内容。你的类型是这样的:
'a :: {inverse,minus,plus,ord}
您的变量,例如 w
,是 w :: 'a :: {inverse,minus,plus,ord}
。这 4 种类型描述了变量具有的代数属性。您需要了解这些类型对您的功能的使用有哪些限制。您可能需要额外的排序才能得到您想要的。
前面的回答已经说明,你的说法不成立。键入类,但是,与它没有任何关系;这是一个非常基础的逻辑问题。
首先需要注意的是,你的假设很可能是
(f (w+n) - f w) / n ≤ g (w+n)
按照你写的方式,意思是
f (w+n) - (f w / n) ≤ g (w+n)
但即使你修复了它,它仍然不成立,原因在于自由变量的含义。 Isabelle 中的约定是引理中的自由变量(在上下文中的任何地方都没有绑定)是隐式普遍限定的。这通常是数学中的约定;我们写 a + b = b + a
,而不是 ∀a b. a + b = b + a
。
因此,您的引理对伊莎贝尔的意思是:
∀f g w n. (f (w+n) - f w) / n ≤ g (w+n) ⟹ ∀n. (f (w+n) - f w) / n ≤ g (w+n)
通俗地说,如果命题对 one n 成立,则它必须对 all n 成立。这显然是错误的。我的猜测是当您写下
时,您感到困惑lemma "(f (w+n) - f w) / n ≤ g (w+n)"
那么这已经意味着它适用于所有 n
(由于相同的约定)。但是当你只是接受它并通过它进入另一个引理的假设时,相同的约定会导致相反的含义:"for any n
, if the assumption holds, then ...".
如果你真的想以对所有 n
成立的方式陈述假设,你必须写
lemma assumes "⋀n. (f (w+n) - f w) / n ≤ g (w+n)"
shows "∀n. (f (w+n) - f w) / n ≤ g (w+n)"
那么证明只是规则 allI
的一种应用,可以用 blast
或 auto
自动完成。请注意,⋀ 是 Isabelle 在元逻辑中的通用限定词。它的含义类似于在数学中你说 "Fix some n." 或 "Let n be a fixed, but arbitrary number".