Isabelle 中 apply 和 Isar 样式之间的等价性
Equivalence between apply and Isar styles in Isabelle
apply style 和 Isar-proofs 是等价物吗?这是我思考了一段时间的问题。当然,Isar 证明更具可读性、可维护性和易于编写(?),但我的问题是你是否可以用两种风格证明完全相同的东西。
举个例子,我目前正在做一个我需要离开的证明:
apply(simp split: prod.splits)
using some_lemma by fastforce
这些命令在 apply 和 Isar 风格中的等效形式是什么?其实我对伊萨尔风格更感兴趣,因为我听说混合风格是不好的风格。
等效的 Isar 样式为:
have "P"
using some_lemma by fastforce
then have "Q"
by (simp split: prod.splits)
其中"P"表示第一个apply
之后的中间目标状态。
一般来说,任何可证明的东西都可以在 Isar 和 apply
风格中证明;两者各有优缺点。
我个人使用的风格是尝试从外到内构建我的证明:在 Isar 外部(如归纳),如有必要,在内部(如简化、低级的东西)apply
。
总的来说,我建议您尽可能留在伊萨尔。
apply style 和 Isar-proofs 是等价物吗?这是我思考了一段时间的问题。当然,Isar 证明更具可读性、可维护性和易于编写(?),但我的问题是你是否可以用两种风格证明完全相同的东西。
举个例子,我目前正在做一个我需要离开的证明:
apply(simp split: prod.splits)
using some_lemma by fastforce
这些命令在 apply 和 Isar 风格中的等效形式是什么?其实我对伊萨尔风格更感兴趣,因为我听说混合风格是不好的风格。
等效的 Isar 样式为:
have "P"
using some_lemma by fastforce
then have "Q"
by (simp split: prod.splits)
其中"P"表示第一个apply
之后的中间目标状态。
一般来说,任何可证明的东西都可以在 Isar 和 apply
风格中证明;两者各有优缺点。
我个人使用的风格是尝试从外到内构建我的证明:在 Isar 外部(如归纳),如有必要,在内部(如简化、低级的东西)apply
。
总的来说,我建议您尽可能留在伊萨尔。