首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Agda中子集可判定性的证明

Agda中子集可判定性的证明
EN

Stack Overflow用户
提问于 2015-12-09 16:00:27
回答 1查看 274关注 0票数 2

假设我在Agda中有子集的定义

代码语言:javascript
复制
Subset : ∀ {α} → Set α → {ℓ : Level} → Set (α ⊔ suc ℓ)
Subset A {ℓ} = A → Set ℓ

我有一套

代码语言:javascript
复制
data Q : Set where
 a : Q
 b : Q

能证明q的所有子集都是可判定的吗?为什么?

代码语言:javascript
复制
Qs? : (qs : Subset Q {zero}) → Decidable qs

可决定的定义如下:

代码语言:javascript
复制
-- Membership
infix 10 _∈_
_∈_ : ∀ {α ℓ}{A : Set α} → A → Subset A → Set ℓ
a ∈ p = p a

-- Decidable
Decidable : ∀ {α ℓ}{A : Set α} → Subset A {ℓ} → Set (α ⊔ ℓ)
Decidable as = ∀ a → Dec (a ∈ as)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-10 10:02:25

对于子集的这一定义不是这样,因为可判定性将需要检查是否有人居住"p“,即排除中间。

可决策子集将准确地映射到Bool:

代码语言:javascript
复制
Subset : ∀ {α} (A : Set α) -> Set
Subset A = A → Bool 

_∈_ : ∀ {α}{A : Set α} → A → Subset A → Set
a ∈ p = T (p a)

但是如果你想在成员证明的形状上有更多的灵活性,你可以使用子集的定义来证明它是可决定的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34183349

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档