微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

替换关闭重复的子目标这是怎么回事?

如何解决替换关闭重复的子目标这是怎么回事?

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

解决方法

我不确定,但是快速浏览一下代码表明subst出于某种原因调用distinct_subgoals_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;

在我看来,这似乎不是预期的行为–可能是对subst实施的疏忽。我会在邮件列表中写一封电子邮件,询问有关问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。