问题描述
我在证明几个引理时发现了同样的问题:具有相等性的规则有时只在一个方向上起作用。
例如,我想使用 append_assoc
从 xs @ ys @ zs
到 (xs @ ys) @ zs
,但是由于 append_assoc
被定义为 (xs @ ys) @ zs = xs @ ys @ zs
,我可以't。
有什么方法可以表明我想反向使用一些规则吗?
提前致谢。
解决方法
左右交换的规则是通过将属性symmetric
应用于原始规则获得的:
lemma "xs @ ys @ zs = (xs @ ys) @ zs"
by (rule append_assoc [symmetric])