Isabelle 什么是;注「;伊莎贝尔的命令是什么?什么时候有必要?
我正在努力学习Isar语言(从Isabelle 2020开始),并理解Isabelle 什么是;注「;伊莎贝尔的命令是什么?什么时候有必要?,isabelle,isar,Isabelle,Isar,我正在努力学习Isar语言(从Isabelle 2020开始),并理解note命令。它似乎是语言的一个基本元素,因为许多“派生元素”都是基于它定义的 我不确定它在英语的等价物方面做了什么: 什么时候需要记下某事?此时已知的所有事实和/或假设不是都会自动使用吗?或者我是否必须在使用它们之前明确说明某些事实?如果是的话,哪些是和不需要是noted 需要注意的是什么 在文件Isar-ref.PDF附录A1.2(pp319)中,在“原语”下,它说: from a ≡ note a then ...
note
命令。它似乎是语言的一个基本元素,因为许多“派生元素”都是基于它定义的
我不确定它在英语的等价物方面做了什么:
note
d
from a ≡ note a then
...
from this ≡ then
注a=b重新考虑并声明事实
因此,似乎应该注意到一种平等。
然后,在同一页的1.3中,它说:
from a ≡ note a then
...
from this ≡ then
这里注意
似乎不适用于平等。而且,似乎有一个无止境的循环
from a = note a then = note a from this = note a note this then ...
(然后
从扩展到,然后返回到然后
)
然后在同一页上,有:
also ~ note calculation = this
在英语中,“还”(在某种程度上是“注意”)是可选的。这就是为什么我在这里对它如此困惑的部分原因,因为它似乎是必需的,而我不确定它做什么。(我可以理解其他事情,比如假设
,因为它将一些事实转移到上下文中。)
我在note
命令(例如在这里)中看到了this
和that
。这让我很困惑
关于注释
对事物的作用(这个
,那个
,计算
等),是否有字典(英语字典)式的解释
,。。。为什么需要注释
(上面的附录是我所能找到的最接近规范的东西。)从来没有人以这种方式使用它。看着那个证据很痛苦。Isar ref告诉你事情是如何在内部定义的,但这是对Isar的一个糟糕的介绍。不要读它。忘记你在那里读到的一切。真的
启动Isar的正确方法是prog prove。或用于教学的幻灯片
没有含蓄地使用任何事实。伊莎贝尔只使用你告诉它使用的事实。这就是为什么你需要使用或将定理作为参数传递给战术
使用注释的常用方法是为尚未命名的对象命名,例如:
case Suc
note meaningfull_name_one = this(1) and meaningfull_name_two = this(2)
或者是它的变体。这允许您通过名称来引用定理,意思是完整的\u name\u one
,而不是写下完整的表达式。这不是必需的,但更容易(也便于维护)。当你有10个假设时,你不想使用prems(1)
或Suc(8)
或任何东西
如上所述@ManuelEberl
note [simp] = ...
将定理局部声明为simp很有用
小结:
this ::= last fact
note H = ... ::= name facts
that ::= name of the fact generate by obtain/obtain
不要直接使用计算
通过不给事物命名和依赖它的副作用,有可能像中一样滥用note。不要这样做。从来没有人会用它来代替。看着那个证据很痛苦。Isar ref告诉你事情是如何在内部定义的,但这是对Isar的一个糟糕的介绍。不要读它。忘记你在那里读到的一切。真的
启动Isar的正确方法是prog prove。或用于教学的幻灯片
没有含蓄地使用任何事实。伊莎贝尔只使用你告诉它使用的事实。这就是为什么你需要使用或将定理作为参数传递给战术
使用注释的常用方法是为尚未命名的对象命名,例如:
case Suc
note meaningfull_name_one = this(1) and meaningfull_name_two = this(2)
或者是它的变体。这允许您通过名称来引用定理,意思是完整的\u name\u one
,而不是写下完整的表达式。这不是必需的,但更容易(也便于维护)。当你有10个假设时,你不想使用prems(1)
或Suc(8)
或任何东西
如上所述@ManuelEberl
note [simp] = ...
将定理局部声明为simp很有用
小结:
this ::= last fact
note H = ... ::= name facts
that ::= name of the fact generate by obtain/obtain
不要直接使用计算
通过不给事物命名和依赖它的副作用,有可能像中一样滥用note。不要这样做。一个原因是,您可以使用诸如[OF!]之类的低级操作创建新的定理。为了简化重复使用这样一个定理,你可以给它起一个名字。一个原因是,你可以用低级操作创建新的定理,比如[OF!。为了简化重复使用这样一个定理,你可以给它起个名字。我经常用它来声明事物,例如simp规则:note[simp]=my_等式
。或者偶尔,当我有一个已经被证明的方程,我想在链中使用:通过某种方法得到“a=b”,也注意到èb=c›最后得到“a=c”
,而Mathias说Isar没有隐式地使用事实,具体的证明方法(如simp
,auto
)一定要含蓄地使用事实,例如那些被声明为simp
或intro
的事实。当你做链时,Isar也会明确地使用trans
规则。@ManuelEberl我的教学印象是人们相信(或期望)在后面的中使用假设。但是你显然是对的,simp是在暗中做事情。虽然我同意Isar ref可能不是Isar的最佳介绍,但不要读它。忘记你在那里读到的一切。真的。
这样回答听起来太过分了,总的来说,在我看来,这可能不是最好的建议。根据我自己的经验,当我从教科书开始学习Isar时,如果不使用Isar ref来补充我的学习,我很可能会比以前更加努力。对不起,我是