Isabelle 如何向关键字证明提交参数?

Isabelle 如何向关键字证明提交参数?,isabelle,Isabelle,我想了解关键字证明在Isar证明中是如何工作的。我商量了一下 总结一下我学到的知识,有三种方法可以通过关键字proof开始证明: 在没有任何争论的情况下,Isabelle找到了一个合适的引理引入规则,并将其应用于正向模式 如果连字符:-作为参数提供,则证明对目标没有任何作用,避免在可能导致死路一条时应用任何自动规则 如果提供了特定的规则,如规则名称、展开真实定义、澄清或导入n,则它将以正向模式应用于目标 第三种情况类似于在提供参数的情况下使用apply,对吗 系统如何选择第一种情况下的自动引

我想了解关键字
证明
在Isar证明中是如何工作的。我商量了一下

总结一下我学到的知识,有三种方法可以通过关键字
proof
开始证明:

  • 在没有任何争论的情况下,Isabelle找到了一个合适的引理引入规则,并将其应用于正向模式

  • 如果连字符:
    -
    作为参数提供,则
    证明
    对目标没有任何作用,避免在可能导致死路一条时应用任何自动规则

  • 如果提供了特定的规则,如
    规则名称
    展开真实定义
    澄清
    导入n
    ,则它将以正向模式应用于目标

第三种情况类似于在提供参数的情况下使用
apply
,对吗

系统如何选择第一种情况下的自动引入规则


而且,上面是否充分描述了
proof
的用法?

没有方法规范的命令
proof
将应用方法
默认值。方法
default
几乎类似于
rule
,但是如果
rule
失败,那么它会尝试下一步
intro\u classes
,然后
unlow\u locales
。方法
rule
在没有给出定理列表的情况下尝试向经典推理器声明的所有规则(
intro
elim
、和
dest
)。如果没有链接任何事实,则只考虑
intro
规则。否则,将尝试所有类型的规则。所有与事实有关的东西都必须与规则相统一
dest
规则在应用之前会转换为
elim
规则

您可以使用
print\u rules
打印所有声明的规则。安全规则(
intro!
elim!
,…)优先于普通规则(
intro
elim
,…),额外规则(
intro?
elim?
)排在最后


您也可以使用
规则
,而不给出任何规则。然后,它的行为类似于
default
,但没有回退
intro\u类
unfold\u区域设置

,Andreas很好地描述了没有方法参数的
证明
是如何工作的;我只谈问题的其他部分

首先,
proof(method)
类似于
apply(method)
,除了一件事:当
apply
让您处于“prove”模式时,您可以继续使用更多
apply
语句,
proof
转换到“state”模式,必须使用
have
show
语句继续验证。否则,对目标状态的影响是相同的


我还想指出案例2(
证明-
)实际上是案例3的一个实例,因为
-
实际上是一种普通的证明方法,就像
规则名称
导入
(例如,您也可以编写
应用-
)。连字符
-
证明方法除了在当前目标中插入链接事实(如果给定任何链接事实)之外,什么都不做。

什么是链接事实?