将类型提升到更高的宇宙
Lifting a type to higher universe
在我正在处理的形式化中,我需要将 Unit 类型从在 Universe Set
上定义的 Agda 标准库提升为像 Set a
这样的多态类型。
我该怎么做?我知道我可以定义另一种类型,比如这个:
record Unit {l} : Set l where
constructor unit
这是宇宙多态的。但是,我相信应该有一个更惯用的解决方案来解决这个问题。谁能给我一个解决方案,或者如果没有办法向我解释原因?
事实上,搜索了一下标准库,我在Level
模块中找到了需要的工具。解决方案是使用类型 Lift
:
record Lift {a ℓ} (A : Set a) : Set (a ⊔ ℓ) where
constructor lift
field lower : A
单位类型
record ⊤ : Set where
constructor tt
可以使用Lift ⊤
提升到更高的宇宙水平。我找到了阅读以下 answer.
部分的解决方案
在我正在处理的形式化中,我需要将 Unit 类型从在 Universe Set
上定义的 Agda 标准库提升为像 Set a
这样的多态类型。
我该怎么做?我知道我可以定义另一种类型,比如这个:
record Unit {l} : Set l where
constructor unit
这是宇宙多态的。但是,我相信应该有一个更惯用的解决方案来解决这个问题。谁能给我一个解决方案,或者如果没有办法向我解释原因?
事实上,搜索了一下标准库,我在Level
模块中找到了需要的工具。解决方案是使用类型 Lift
:
record Lift {a ℓ} (A : Set a) : Set (a ⊔ ℓ) where
constructor lift
field lower : A
单位类型
record ⊤ : Set where
constructor tt
可以使用Lift ⊤
提升到更高的宇宙水平。我找到了阅读以下 answer.