Isabelle 什么是;注「;伊莎贝尔的命令是什么?什么时候有必要?

Isabelle 什么是;注「;伊莎贝尔的命令是什么?什么时候有必要?,isabelle,isar,Isabelle,Isar,我正在努力学习Isar语言(从Isabelle 2020开始),并理解note命令。它似乎是语言的一个基本元素,因为许多“派生元素”都是基于它定义的 我不确定它在英语的等价物方面做了什么: 什么时候需要记下某事?此时已知的所有事实和/或假设不是都会自动使用吗?或者我是否必须在使用它们之前明确说明某些事实?如果是的话,哪些是和不需要是noted 需要注意的是什么 在文件Isar-ref.PDF附录A1.2(pp319)中,在“原语”下,它说: from a ≡ note a then ...

我正在努力学习Isar语言(从Isabelle 2020开始),并理解
note
命令。它似乎是语言的一个基本元素,因为许多“派生元素”都是基于它定义的

我不确定它在英语的等价物方面做了什么:

  • 什么时候需要记下某事?此时已知的所有事实和/或假设不是都会自动使用吗?或者我是否必须在使用它们之前明确说明某些事实?如果是的话,哪些是和不需要是
    note
    d

  • 需要注意的是什么

  • 在文件Isar-ref.PDF附录A1.2(pp319)中,在“原语”下,它说:

    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来补充我的学习,我很可能会比以前更加努力。对不起,我是