Coq タクティックを使用するapply ... with
場合、私が見た例はすべて、インスタンス化する変数の名前を明示的に指定することを含みます。たとえば、等式の推移性に関する定理があるとします。
Theorem trans_eq : forall (X:Type) (n m o : X),
n = m -> m = o -> n = o.
それにapply
:
Example test: forall n m: nat,
n = 1 -> 1 = m -> n = m.
Proof.
intros n m.
apply trans_eq with (m := 1). Qed.
最後の行で、インスタンス化する変数の名前はorまたはその他の名前ではなく、 でapply trans_eq with (m := 1).
あることを覚えておく必要があります。m
o
n
y
私にとって、定理の元のステートメントで使用されているかどうm n o
かx y z
は問題ではありません。それらはダミー変数または関数の仮パラメーターのようなものだからです。また、定理を定義するときに、私が使用した特定の名前や、他の誰かが別のファイルに書き留めた特定の名前を思い出せないことがあります。
たとえば、変数をその位置で参照して、次のようなものを使用できる方法はありますか?
apply trans_eq with (@1 := 1)
上記の例では?
ちなみに、私は試しました:apply trans_eq with (1 := 1).
そして得ましたError: No such binder.
ありがとう。