【发布时间】:2026-02-06 20:55:02
【问题描述】:
如何让 Coq 让我证明句法类型不等式?
否定单价
我已阅读this question 的答案,这表明如果您假设单价,那么证明类型不等式的唯一方法是通过基数参数。
我的理解是——如果 Coq 的逻辑与单价一致,那么它也应该与单价的否定一致。虽然我知道单价的否定实际上是 some 同构类型是不相等的,但我相信应该可以表达 no 同构类型(即t 相同) 相等。
类型构造函数的不等式
实际上,我希望 Coq 将类型和类型构造函数视为归纳定义,并做一个典型的inversion 风格的参数来说明我的两个非常明显不同的类型不相等。
可以吗?这需要:
- 可用于具体类型,即没有类型变量等
- 不一定是可判定的
这让我觉得弱到足以保持一致。
上下文
我有一个多态判断(实际上是带有参数forall X : Type, x -> Prop 的归纳类型),其中X 的选择由判断的构造函数决定。
我想证明,对于X(比如X = nat)的某个选择的所有判断,某些属性成立,但是如果我尝试使用inversion,一些构造函数会给我像nat = string这样的假设(例如)。即使对于具有相同基数的类型,这些类型相等假设也会出现,因此我不能(也不想)提出基数论点来产生矛盾。
不可思议的......
我是否应该生成我关心的类型的Inductive 封闭世界编码,并让它成为上述判断的多态变量?
【问题讨论】:
标签: coq