提示重写无法推断参数

Hint Rewrite Cannot Infer Parameter

我正在尝试为我编写的矩阵库创建提示重写数据库。但是当我写

Hint Rewrite kron_1_r : M_db

我收到以下错误:

Cannot infer the implicit parameter m of kron_1_r whose type is "nat".

kron_1_r 的类型是forall {m n : nat} (A : Matrix m n), A ⊗ Id 1 = A,所以 m 和 n 应该在调用 autorewrite 时根据上下文推断出来。我不确定为什么它需要一个参数,或者如何告诉它推迟。

您 运行 了解 最大插入隐式参数 和普通隐式参数之间的区别。不同之处在于当您使用定义而不给出任何参数时,就像您在 Hint Rewrite kron_1_r 中的方式一样。一种解决方案当然是使用 @kron_1_r,它给出没有任何隐式参数的标识符。

不幸的是,在创建定义时没有语法来为其提供非最大插入的隐式参数;你只能使用 {m : nat}。相反,您需要在创建 kron_1_r 之后使用 Arguments kron_1_r [m n] _. 来更改前两个参数的隐式行为(如上面 Anton Trunov 所建议的)。

使用 About 通常很有帮助,它报告隐式参数的状态(您也可以使用 Print 获得这些参数,但是打印定理时通常会得到太多输出,因为证明项很大)。