Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Isabelle Subst refl关闭重复的子目标。什么';发生什么事了?_Isabelle - Fatal编程技术网

Isabelle Subst refl关闭重复的子目标。什么';发生什么事了?

Isabelle Subst refl关闭重复的子目标。什么';发生什么事了?,isabelle,Isabelle,在线程中,Mathieu演示了subst refl关闭重复的子目标。它是如何/为什么这样做的?我不完全确定,但快速查看代码表明,subst出于某种原因调用了distinct\u subgoals\u tac,并没有将其限制在正在处理的子目标上: fun eqsubst_tac ctxt occs thms i st = let val nprems = Thm.nprems_of st in if nprems < i then Seq.empty else let

在线程中,Mathieu演示了
subst refl
关闭重复的子目标。它是如何/为什么这样做的?

我不完全确定,但快速查看代码表明,
subst
出于某种原因调用了
distinct\u subgoals\u tac
,并没有将其限制在正在处理的子目标上:

fun eqsubst_tac ctxt occs thms i st =
  let val nprems = Thm.nprems_of st in
    if nprems < i then Seq.empty else
    let
      val thmseq = Seq.of_list thms;
      fun apply_occ occ st =
        thmseq |> Seq.maps (fn r =>
          eqsubst_tac' ctxt
            (skip_first_occs_search occ searchf_lr_unify_valid) r
            (i + (Thm.nprems_of st - nprems)) st);
      val sorted_occs = Library.sort (rev_order o int_ord) occs;
    in
      Seq.maps distinct_subgoals_tac (Seq.EVERY (map apply_occ sorted_occs) st)
    end
  end;
fun eqsubst\u tac ctxt occs thms i st=
设val nprems=Thm.nprems_of st in
如果npremsSeq.maps(fn r=>
eqsubst_tac'ctxt
(跳过\u优先\u occs\u搜索occ搜索F\u lr\u统一\u有效)r
(i+(st的Thm.nprems_-nprems))st);
val sorted_occs=Library.sort(内部订单修订版)occs;
在里面
序列映射不同的子目标(序列每个(映射应用的occ排序的occ)st)
结束
结束;

对我来说,这似乎不是故意的行为——可能是对
subst
实现的疏忽。我将向邮件列表发送一封电子邮件询问此事。

问题可在Makarius获得。为了不影响其他子目标,从Isabelle开发版本的修订版
e5fcbf6dc687
开始,Makarius现在更改了
subst
的行为。