5

S x = S y目標を からに変更したいx = y。のようなものinversionですが、仮説ではなく目標のためです。

このような戦術は正当に思えます。なぜなら、x = yがあれば、単純に and を使用rewritereflexivityて目的を証明できるからです。

現在、私は常に新しいサブゴールを導入するために使用していることに気づきますが、複雑な表現である場合をassert (x = y)記述するのは面倒です。xy

4

2 に答える 2

7

タクティックapply f_equal.は、任意のコンストラクターまたは関数に対して、必要なことを行います。

レマf_equalは、どの関数fに対しても常に を持っていることを示していますx = y -> f x = f yf x = f yこれにより、目標を からに減らすことができますx = 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 に答える