我声明两个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
。
这似乎应该很容易,只是无法弄明白。
答案 0 :(得分:3)
事实上,replace (x=y) with (fun s' : S => x = s') y
没有给出任何有用的东西,因为简化了结论。但change (x=y) with (fun s' : S => x = s') y
不是这种情况,你可以在这里用来做你想做的事。
然而,最简单的方法可能是pattern y
,它可以直接将结论转换为适当的形式。