In this https://stackoverflow.com/questions/15608399/how-do-i-remove-duplicate-subgoals-in-isabelle线程马蒂厄证明了subst refl
关闭重复的子目标。它是如何/为什么这样做的?
我不完全确定,但快速浏览一下代码表明subst
calls 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
。我会写一封电子邮件到邮件列表询问此事。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)