在 Isabelle/HOL 中指定规则的方向

Specifying direction of rule in Isabelle/HOL

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

例如,我想使用 append_assocxs @ ys @ zs(xs @ ys) @ zs,但由于 append_assoc 被定义为 (xs @ ys) @ zs = xs @ ys @ zs,我不能。

有什么方法可以表明我想反向使用某些规则吗?

提前致谢。

交换左右边的规则是通过将属性 symmetric 应用于原始规则获得的:

lemma "xs @ ys @ zs = (xs @ ys) @ zs"
  by (rule append_assoc [symmetric])