用平等简化元普遍量化的假设

时间:2016-09-12 22:46:59

标签: isabelle

很抱歉没能提出一个简短的例子。

我的证明状态为

 1. ⋀e1 T1 L e2 T2 G1.
       typing (G1 @ (x, U) # G2) e1 T1 ⟹
       typing (G1 @ G2) e1 T1 ⟹
       (⋀xa. xa |∉| L ⟹
              typing ((xa, T1) # G1 @ (x, U) # G2) (open e2 (exp_fvar xa))
               T2) ⟹
       (⋀xa G1a.
           xa |∉| L ⟹
           (xa, T1) # G1 = G1a ⟹
           x |∉| fv (open e2 (exp_fvar xa)) ⟹
           typing (G1a @ G2) (open e2 (exp_fvar xa)) T2) ⟹
       x |∉| fv e1 ⟹ x |∉| fv e2 ⟹ typing (G1 @ G2) (exp_let e1 e2) T2

注意第四个前提(大的前提):它通常对G1a进行元量化,但G1a实际上是由那里的等式确定的。所以它可以替代它(然后简化前提的结论),auto将能够解决目标。

我可以让简化器解决这个问题吗?

我想一个小例子是

lemma foo:
  "(⋀ G.  x#xs = G ⟹ P x ⟹ f G) ⟹ f (x#xs)"
apply simp

有一个与equalities under existentials有关的问题。

1 个答案:

答案 0 :(得分:1)

这个问题只能通过simproc可靠地解决。 induct中的~~/src/Tools/induct.ML证明方法已经有了实现,因此您可以调整代码。我们的想法是使用Induct.rearrange_eqs_simproc将方程式移到前面,然后使用适当的一个点规则来消除相等性。