我正在测试 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.
用etc替换Require Import QArith.
的时候报错:
错误:策略失败:未找到模数 AC 的匹配发生。
在aac_rewrite H.
Z
和之间也存在类似的不一致问题Q
,这与Z
/Q
范围是否开放有关。
但我不明白为什么 aac rewrite 在这里不起作用。不一致的原因是什么,如何使它对Z
和表现相同Q
?