在 Isabelle/HOL

问题描述

我在证明几个引理时发现了同样的问题:具有相等性的规则有时只在一个方向上起作用。

例如,我想使用 append_assocxs @ 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])