Isabelle 试图理解“修复/假设/显示”;未能完善目标”的定义;;Cmd显示原理图变量的验证信息
我这里的问题是一个切线的副产品 对于这些问题,我使用了一个非常简单的引理,尽管我的第二个问题相当复杂 当使用Isabelle 试图理解“修复/假设/显示”;未能完善目标”的定义;;Cmd显示原理图变量的验证信息,isabelle,Isabelle,我这里的问题是一个切线的副产品 对于这些问题,我使用了一个非常简单的引理,尽管我的第二个问题相当复杂 当使用show或时,以及当我的所有逻辑都正确时,“Local statement无法细化任何待定目标”错误是一个更令人沮丧的错误,因此我试图更好地理解下面在引理修复2中出现的错误消息 我知道它的修复方法,这是我的引理修复1,但我知道的越多,我可能越擅长处理另一个“无法完善任何未决目标”的问题 任何感兴趣的人都可以通过阅读问题,然后看看这两个引理来回答Q1和Q2 我在下面放了很多信息。我将下面的注
show
或时,以及当我的所有逻辑都正确时,“Local statement无法细化任何待定目标”错误是一个更令人沮丧的错误,因此我试图更好地理解下面在引理修复2
中出现的错误消息
我知道它的修复方法,这是我的引理修复1
,但我知道的越多,我可能越擅长处理另一个“无法完善任何未决目标”的问题
任何感兴趣的人都可以通过阅读问题,然后看看这两个引理来回答Q1和Q2
我在下面放了很多信息。我将下面的注释格式化,就像我能够比较这个
和目标
在命令后的变化一样。这样做,我就能够更好地理解使用let
、def
和fix/aspect
,主要目的是尝试理解引理fix_2
的show
命令的错误
我不知道如何使这样的问题变得简单
问题
在这里,我提出两个问题。你需要跳下去看看引理let_1
和引理fix_2
。我尝试使用HTML锚在这个页面中创建链接,但没有成功
- Q1:在下面的
引理let_1
中,我使用print_命令
。我查看了这些命令,试图找到一些命令,这些命令将为我提供有关如何实例化原理图变量的信息。我找到了print\u binds
,它显示了我对原理图变量?w
的使用。是否有任何其他命令可以为我提供有关样图中的原理图变量的信息
- Q2:我这样说对吗
- 在
引理修正2
中使用show“card{}=0”
时,这个事实及其隐含假设card w=0[w={}]
被用来创建一个规则,类似于引理修正1
中{…}
块之后导出的规则,其中导出的规则是(?w2={})==>卡?w2=0
- 然后,使用创建的规则与
show“card{}=0”
中的证明目标进行某种统一,其中原理图变量被实例化为{}
,但某些内容不匹配,并发生错误
描述了def
和fix/aspect
的行为
这个问题的主要背景是L.Noschinski的声明:
当您使用“fix”或“def”定义变量时,当块关闭/执行显示时,它们要么只是通用化(即转换为示意图)(fix),要么被其右侧(定义)替换
我部分重述它是为了说明我对show
命令的理解,其中我所说的也是基于def_1
和fix_1
在下面的行为,它们都使用{…}
块:
如果语句def x==“p”
和fix y假设“y==p”
在show
命令之前使用,如下面的def_2
和fix_2
中所述,在使用show
命令时,将发生以下情况:
- 对于
def x
,在中使用x
将被P
取代
- 对于
fixy
,将使用this
事实及其隐含假设创建规则,例如在fixu 1
中的{…}
之后。在此规则中,y
将替换为原理图变量
研究这个
,目标
,的五个引理有
和显示
声明
我使用了show_question_marks
,因为我需要知道在使用fix/aspect
时何时引入了原理图变量
使用show_hyps
在方括号中显示了对证明事实的隐含假设。当使用fix/aspect
时,这些隐式条件将在导出的规则中使用
declare[[show_question_marks=true, show_hyps=true]]
declare[[show_sorts=false, show_types=false, show_brackets=false]]
一个基本引理和5个未使用证明事实的变体
基本引理显示了实际被证明的东西。然后我有以下几点:
let_1
查看使用let
对的影响
def_1
,它使用def
和{…}
块来查看def
的行为以及该如何导出
def_2
,它没有{…}
块,以便在使用show
之前能够查看此
fix_1
和fix_2
,它们与def_1
和def_2
类似,但使用fix/asike
无证明事实的引理
下面所有的引理都是下一个引理,并且被证明是相同的。其他人还有一个不需要的证明事实,show
命令不使用它
证明事实的目的是帮助我了解def
和fix
在have
被证明时如何更改此
事实,以及在块{…}
关闭后如何导出此
lemma "card {} = (0::nat)"
proof-
show "card {} = 0"
by(simp)
qed
让我们看一看
lemma let_1: "card {} = (0::nat)"
proof-
let ?w = "{}::'a set" (*No `this` fact: ?w is instantiated as {}.*)
print_commands
print_binds (*term bindings: w? == bot *)
have "card ?w = (0::nat)" (*goal: card {} = 0 *)
by(simp) (*this: card {} = 0 *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
def_1,{…}
lemma def_1: "card {} = (0::nat)"
proof-
{def w == "{}::'a set" (*this: w == {} [w == {}] [name "local.w_def"] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
} (*this: card {} = 0 *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
lemma fix_1: "card {} = (0::nat)"
proof-
{fix w assume "w == {}::'a set" (*this: w == {} [w == {}] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
} (*this: (?w2 == {}) ==> card ?w2 = 0 *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
def_2,无阻塞
lemma def_2: "card {} = (0::nat)"
proof-
def w == "{}::'a set" (*this: w == {} [w == {}] [name "local.w_def"] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
lemma fix_2: "card {} = (0::nat)"
proof-
fix w assume "w == {}::'a set"(*this: w == {} [w == {}] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
show "card {} = 0" (*Local statement fails to refine any pending goal
Failed attempt to solve goal by exported rule:
(?w3 == {}) ==> card {} = 0 *)
oops
fix_1,{…}
lemma def_1: "card {} = (0::nat)"
proof-
{def w == "{}::'a set" (*this: w == {} [w == {}] [name "local.w_def"] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
} (*this: card {} = 0 *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
lemma fix_1: "card {} = (0::nat)"
proof-
{fix w assume "w == {}::'a set" (*this: w == {} [w == {}] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
} (*this: (?w2 == {}) ==> card ?w2 = 0 *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
修复2,无阻塞
lemma def_2: "card {} = (0::nat)"
proof-
def w == "{}::'a set" (*this: w == {} [w == {}] [name "local.w_def"] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
show "card {} = 0" (*goal: card {} = 0 *)
by(simp)
qed
lemma fix_2: "card {} = (0::nat)"
proof-
fix w assume "w == {}::'a set"(*this: w == {} [w == {}] *)
from this
have "card w = (0::nat)" (*goal: card w = 0 *)
by(simp) (*this: card w = 0 [w == {}] *)
show "card {} = 0" (*Local statement fails to refine any pending goal
Failed attempt to solve goal by exported rule:
(?w3 == {}) ==> card {} = 0 *)
oops
填写L.Paulson的ans的详细信息