我正在形式化一个支持一对元组和 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 中是否有任何建议的数据类型?