我可以在 Coq 中声明 'polymorphic' 公理吗?
Can I declare a 'polymorphic' axiom in Coq?
我想要一个接受 nat
或 bool
和 returns 或 nat
的公理。像
Axiom poly_axiom {A : Set}: A -> nat.
但是 Coq 拒绝接受这样的 'polymorphic' 公理。有什么办法吗?
无关紧要的说明:定义这么奇葩的公理的目的是为了用poly_axiom计算term t中使用的公理个数,其中t的类型为A,t在'wrapped'里面poly_axiom。还有另一个公理定义如何在公理 poly_axiom 内减少 t。也欢迎看到这个问题有更好的解决方法
与 Definition
s(和 Theorem
s 等)不同,在声明 Axiom
s 时不能在冒号的左侧写变量名。你必须像这样使用 forall
:
Axiom poly_axiom : forall {A : Set}, A -> nat.
我想要一个接受 nat
或 bool
和 returns 或 nat
的公理。像
Axiom poly_axiom {A : Set}: A -> nat.
但是 Coq 拒绝接受这样的 'polymorphic' 公理。有什么办法吗?
无关紧要的说明:定义这么奇葩的公理的目的是为了用poly_axiom计算term t中使用的公理个数,其中t的类型为A,t在'wrapped'里面poly_axiom。还有另一个公理定义如何在公理 poly_axiom 内减少 t。也欢迎看到这个问题有更好的解决方法
与 Definition
s(和 Theorem
s 等)不同,在声明 Axiom
s 时不能在冒号的左侧写变量名。你必须像这样使用 forall
:
Axiom poly_axiom : forall {A : Set}, A -> nat.