在我正在进行的形式化中,我需要将单元类型从在Universe Set
上定义的Agda标准库提升为类似Set a
的多态类型。
我该怎么做?我知道我可以定义另一种类型,例如:
record Unit {l} : Set l where
constructor unit
这是宇宙多态的。但是,我认为应该有一个更惯用的解决方案来解决这个问题。有人可以给我一个解决方案,或者是否无法向我解释原因?
答案 0 :(得分:3)
事实上,在搜索标准库时,我找到了Level
模块中所需的工具。解决方案是使用类型Lift
:
record Lift {a ℓ} (A : Set a) : Set (a ⊔ ℓ) where
constructor lift
field lower : A
单位类型
record ⊤ : Set where
constructor tt
可以使用Lift ⊤
提升到更高的Universe级别。我发现解决方案是以下answer的一部分。