Coq:从总和中删除所有(嵌套)括号

时间:2016-11-18 12:00:53

标签: coq associativity

假设我有一个像a + (b + (c + d))这样的总和,我希望将其转换为a + b + c + d来应用引理。

使用Nat.add_assoc手动执行此操作非常繁琐。有更聪明的方法吗?

2 个答案:

答案 0 :(得分:4)

我会使用的“简单但不好”的方式是replace (a + (b + (c + d)))) with (a + b + c + d) by now omega

答案 1 :(得分:4)

你可以使用repeat战术,在不再适用之前重复一些策略:

repeat rewrite Nat.add_assoc.

或更简洁的版本:

rewrite !Nat.add_assoc.

它的作用与repeat的变体相同。

这种方法的缺点是它会在目标中的任何地方重写。因此,您可能希望选择公式的某些部分来仅对其进行重写。