深入理解Braun树与Sigma类型
1. Braun树的基础与和类型
在处理Braun树时,我们使用和类型来表示逻辑命题。和类型的定义如下:
data _Z_ {ℓ ℓ’} (A : Set ℓ) (B : Set ℓ’)
: Set (ℓ ⊔ ℓ’) where
inj1 : (x : A) → A Z B
inj2 : (y : B) → A Z B
___ : @ {ℓ ℓ’} (A : Set ℓ) (B : Set ℓ’) → Set (ℓ ⊔ ℓ’)
___ = _Z_
这里, _Z_ 类型由两个类型 A 和 B 参数化,它们可能处于不同的层级,通过 ⊔ 操作来处理层级问题。 inj1 和 inj2 是构造器,用于从 A 或 B 类型的值创建 A Z B 类型的值。当在代码中使用和类型时,运行代码时用 _Z_ ,表示逻辑命题时用 ___ ,二者语义相同,仅为方便理解。
对于Braun树,有一个关键性质:要么左子树和右子树大小相同,要么左子树大小比右子树大1。 bt-node 构造器在构建节点时需要这个性质的证明,确保每个节点都满足该性质,且返回的Braun树大小为 suc (n + m)
超级会员免费看
订阅专栏 解锁全文
2566

被折叠的 条评论
为什么被折叠?



