在 Isabelle/Isar 中使用它们时累积结果
Accumulating results while using them in Isabelle/Isar
有时在证明中我发现自己需要累积结果,但也需要使用最后的结果,所以我最终使用“also then
”来达到这个目的:
proof
have ...
also then have ...
also then have ...
ultimately show ...
qed
我觉得还有更多我不知道的惯用方法。另一方面,这可能是标准的做法并受到社区的鼓励。
鉴于此,我有两个问题:
- 不鼓励使用“
also then
”吗?
- 如果是这样,我可以使用哪些替代方法来累积结果同时使用它们?
我将从提供一些背景开始。你已经突破了 Isabelle 中被称为计算推理的主题。计算推理在文档The Isabelle/Isar Reference Manual.
的第1.2小节中描述
两种最常见的计算推理模式是
have "a R b" sorry
also have "b R c" sorry
also have "c R d" sorry
finally have "a R d" by assumption
(其中R
是传递关系,如=
,用中缀表示法写成)和
have P sorry
moreover have Q sorry
moreover have R sorry
ultimately have S by (rule assms(1))
also
和 moreover
等命令使用附加事实 calculation
来存储附加信息。例如,随着上面第一个例子中计算的进行,事实 calculation
以下列方式改变
have "a R b" sorry
also have "b R c" (*calculation: a R b*) sorry
also have "c R d" (*calculation: a R c*) sorry
finally have "a R d" by assumption
在这种情况下,R
的传递性规则用于链接谓词。因此,最终目标可以通过假设来实现。 moreover ... ultimately
模式的情况不同:
have P sorry
moreover have Q (*calculation: P*) sorry
moreover have R (*calculation: P, Q*) sorry
ultimately have S (*P ⟹ Q ⟹ R ⟹ S*) by (rule assms(1))
在这种情况下,事实 calculation
只是累积所有以前的结果。
文档 The Isabelle/Isar Reference Manual 的第 6.3 小节解释了计算推理的实现。但是,我在这个 post.
中省略了细节
我现在将尝试在上述内容的背景下回答您的问题。
Is using "also then" discouraged?
我相信这不一定是不鼓励的,并且在 AFP 中有一些使用这种模式的实例。但是,我可以想象对于这个特定的模式,这将是一个相当不常见的用例。
If so, what alternatives can I use to accumulate results while using
them?
我相信,如果您确实只需要积累结果(同时可能在间歇步骤中使用它们),最好使用的模式是 moreover ... ultimately
。但是,当然,这取决于“结果的积累”到底是什么意思。
备注 1
我希望从上面的讨论中可以明显看出 also
与 ultimately
结合使用是非常不合常规的。在大多数情况下,使用这样的模式意义不大。
备注2
模式 also ... finally
通常与缩写 ...
:
结合使用
have "a R b" sorry
also have "... R c" sorry
also have "... R d" sorry
finally have "a R d" by assumption
当然,只有当 b
和 c
是足够长的子项时,好处才会变得明显。
有时在证明中我发现自己需要累积结果,但也需要使用最后的结果,所以我最终使用“also then
”来达到这个目的:
proof
have ...
also then have ...
also then have ...
ultimately show ...
qed
我觉得还有更多我不知道的惯用方法。另一方面,这可能是标准的做法并受到社区的鼓励。
鉴于此,我有两个问题:
- 不鼓励使用“
also then
”吗? - 如果是这样,我可以使用哪些替代方法来累积结果同时使用它们?
我将从提供一些背景开始。你已经突破了 Isabelle 中被称为计算推理的主题。计算推理在文档The Isabelle/Isar Reference Manual.
的第1.2小节中描述两种最常见的计算推理模式是
have "a R b" sorry
also have "b R c" sorry
also have "c R d" sorry
finally have "a R d" by assumption
(其中R
是传递关系,如=
,用中缀表示法写成)和
have P sorry
moreover have Q sorry
moreover have R sorry
ultimately have S by (rule assms(1))
also
和 moreover
等命令使用附加事实 calculation
来存储附加信息。例如,随着上面第一个例子中计算的进行,事实 calculation
以下列方式改变
have "a R b" sorry
also have "b R c" (*calculation: a R b*) sorry
also have "c R d" (*calculation: a R c*) sorry
finally have "a R d" by assumption
在这种情况下,R
的传递性规则用于链接谓词。因此,最终目标可以通过假设来实现。 moreover ... ultimately
模式的情况不同:
have P sorry
moreover have Q (*calculation: P*) sorry
moreover have R (*calculation: P, Q*) sorry
ultimately have S (*P ⟹ Q ⟹ R ⟹ S*) by (rule assms(1))
在这种情况下,事实 calculation
只是累积所有以前的结果。
文档 The Isabelle/Isar Reference Manual 的第 6.3 小节解释了计算推理的实现。但是,我在这个 post.
中省略了细节我现在将尝试在上述内容的背景下回答您的问题。
Is using "also then" discouraged?
我相信这不一定是不鼓励的,并且在 AFP 中有一些使用这种模式的实例。但是,我可以想象对于这个特定的模式,这将是一个相当不常见的用例。
If so, what alternatives can I use to accumulate results while using them?
我相信,如果您确实只需要积累结果(同时可能在间歇步骤中使用它们),最好使用的模式是 moreover ... ultimately
。但是,当然,这取决于“结果的积累”到底是什么意思。
备注 1
我希望从上面的讨论中可以明显看出 also
与 ultimately
结合使用是非常不合常规的。在大多数情况下,使用这样的模式意义不大。
备注2
模式 also ... finally
通常与缩写 ...
:
have "a R b" sorry
also have "... R c" sorry
also have "... R d" sorry
finally have "a R d" by assumption
当然,只有当 b
和 c
是足够长的子项时,好处才会变得明显。