如何延迟lambda评估,以便我可以替换lambdas

时间:2018-03-24 10:28:44

标签: coq

我声明两个lambda是相同的:

G : (fun s' : S => x = s') = (fun s' : S => y = s')

我想用它来证明x=y。我的想法很简单,用(fun s' : S => x = s') y替换该语句,使用G将一个lambda替换为另一个lambda,减少到y=y,获利。我的问题是在第一步,我找不到设置包含一个lambda的应用程序的语句,Coq没有立即减少到x=y。我希望未应用的lambda能够“坚持”一会儿,所以我有机会申请G

这似乎应该很容易,只是无法弄明白。

1 个答案:

答案 0 :(得分:3)

事实上,replace (x=y) with (fun s' : S => x = s') y没有给出任何有用的东西,因为简化了结论。但change (x=y) with (fun s' : S => x = s') y不是这种情况,你可以在这里用来做你想做的事。

然而,最简单的方法可能是pattern y,它可以直接将结论转换为适当的形式。