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的详细信息