Isabelle/Isar中的编码风格约定

Isabelle/Isar中的编码风格约定,isabelle,jedit,isar,Isabelle,Jedit,Isar,TL;DR:Isar语言有任何编码约定吗?有必要尊重杰迪特的折叠策略吗 我的团队正致力于数学的形式化,因此我们的主要目的之一是获得可读的证明。考虑到这一点,我们试图以中间事实(和标签,如果有的话)突出的方式对证据进行编码: from fact1 have 1: "Foo" using Thm1 Thm2 by auto then have 2: "Bar = FooBar" by simp also from 1 have " ... = BarFoo" by blas

TL;DR:Isar语言有任何编码约定吗?有必要尊重杰迪特的折叠策略吗


我的团队正致力于数学的形式化,因此我们的主要目的之一是获得可读的证明。考虑到这一点,我们试图以中间事实(和标签,如果有的话)突出的方式对证据进行编码:

from fact1 have
  1: "Foo"
  using Thm1 Thm2 by auto
then have
  2: "Bar = FooBar"
  by simp
also from 1 have
  " ... = BarFoo"
  by blast 
等等。除了有时会产生大量的“短线”(顺便说一句,我不知道这是否真的是一个问题)之外,它不知何故与绝地折叠策略不兼容;折叠后,前面的代码块如下所示:

from fact1 have
then have
also from 1 have
完全模糊了论点。以下格式可能更好:

from fact1
have 1: "Foo"
  using Thm1 Thm2 by auto
then 
have 2: "Bar = FooBar"
  by simp
also from 1 
have " ... = BarFoo"
  by blast 
折叠之后

from fact1
have 1: "Foo"
then 
have 2: "Bar = FooBar"
also from 1 
have " ... = BarFoo"
这使得参数的流程更加明确


无论如何,在我提出5个新的格式约定之前,我肯定想知道是否有一些事实上的标准,或者至少有人考虑过这一点。

嗯,有一点:除此之外,我真的不知道。我通常做一个换行符,将陈述与用来证明它的方法分开;除此之外,我只在队伍太长时才换行。我也不认为我见过很多人真正使用杰迪特的折叠。我当然不知道,尽管它实际上可能有用。不知怎么的,它不在我的工作流程中。我也不知道语法风格指南。我们正在考虑写一个,按照你在“以下格式也许更好”下的思路,但它需要一段时间才能出来。通常情况下,不与杰迪特作战是个好主意,使用折叠式、默认缩进等仍能带来很大自由度的方法。谢谢你们两位的评论。对我来说,这两个答案都算是上乘的。@lsf37上面的例子中隐含的另一个想法是,首先引用局部事实(来自,带有),然后引用定理和引理(使用)。我相信这也有助于提高可读性。