我正在形式化一个支持一对元组和 nat 作为函数输入的系统。但是,我对 Coq 中的 pair 类型有一些问题。
根据我对 Coq 的了解,pair 被定义为左关联。即(1, 2, 3)并且((1, 2), 3)具有相同类型的nat * nat * nat. 有时,它可以被视为 nat 的 3 元组。另一方面,(1, (2, 3))有 type nat * (nat * nat),它是一对 nat 和 pair(或 2 元组)。
理想情况下,我想要一个允许nat 和 tuple对以及 tuple 和 nat 对的系统。即两者(1, (2, 3))和((1, 2), 3)都不同于(1, 2, 3)。对于这种模型,Coq 中是否有任何建议的数据类型?