Coq 書き換えタクティクス モジュロ結合性と可換性をテストしていました ( aac_tactics
)。次の例は整数 ( Z
) に対して機能しますが、整数を有理数 ( ) に置き換えるとエラーが発生しますQ
。
Require Import ZArith.
Import Instances.Z.
Goal (forall x:Z, x + (-x) = 0)
-> forall a b c:Z, a + b + c + (-(c+a)) = b.
intros H ? ? ?.
aac_rewrite H.
などで置き換えるRequire Import ZArith.
とRequire Import QArith.
、エラーが発生します。
エラー: 戦術の失敗: AC を法とする一致するオカレンスが見つかりません。
でaac_rewrite H.
との間に同様の不一致の問題がZ
あり、 /スコープが開いQ
ているかどうかに関連していることが判明しました。Z
Q
しかし、ここで aac の書き換えが機能しなかった理由がわかりません。Z
不一致の原因は何ですか? また、とで同じように動作させるにはどうすればよいQ
ですか?