我想要一个接受nat
或bool
的公理,并返回nat
。像
Axiom poly_axiom {A : Set}: A -> nat.
但是Coq拒绝接受这样一个多态的'公理。有没有办法做到这一点?
不相关的说明:定义这样一个奇怪的公理的目的是使用poly_axiom来计算在项t中使用的公理数,其中t是A类,t是''包裹'在poly_axiom里面。另一个公理定义了如何减少公理poly_axiom中的t。我们也欢迎看到更好的解决方案。
答案 0 :(得分:3)
与Definition
s(和Theorem
s等)不同,在声明Axiom
时,不能在冒号的左侧写变量名。您必须使用forall
,如此:
Axiom poly_axiom : forall {A : Set}, A -> nat.