5

我想将目标从 更改S x = S yx = y。就像inversion,但为了目标而不是假设。

这样的策略似乎是合法的,因为当我们有 时x = y,我们可以简单地使用rewriteandreflexivity来证明目标。

目前我总是发现自己assert (x = y)用来引入一个新的子目标,但是写 whenxyare 复杂的表达式很乏味。

4

2 回答 2

7

对于任何构造函数或函数,该策略apply f_equal.都会做你想做的事。

引理f_equal表明,对于任何函数f,你总是有x = y -> f x = f y. 这使您可以将目标从 减少f x = f yx = y

Proposition myprop (x y: nat) (H : x = y) : S x = S y.
Proof.
  apply f_equal.  assumption.
Qed.

(该injection策略实现了相反的含义——对于某些函数,特别是对于构造函数,f x = f y -> x = y.)

于 2012-12-08T21:56:11.613 回答
1

你可能想看看这个injection策略:http ://coq.inria.fr/distrib/V8.4/refman/Reference-Manual011.html#@tactic126

于 2012-12-06T19:26:52.200 回答