证明Agda中子集的可判定性

时间:2015-12-09 16:00:28

标签: subset agda decidable

假设我在Agda中有这个Subset的定义

Subset : ∀ {α} → Set α → {ℓ : Level} → Set (α ⊔ suc ℓ)
Subset A {ℓ} = A → Set ℓ

我有一套

data Q : Set where
 a : Q
 b : Q

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

Qs? : (qs : Subset Q {zero}) → Decidable qs

这里定义了Decidable:

-- 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)

1 个答案:

答案 0 :(得分:0)

不适用于Subset的定义,因为可判定性需要检查“p a”是否有人居住,即排除在中间。

可判定的子集将完全映射到Bool:

Subset : ∀ {α} (A : Set α) -> Set
Subset A = A → Bool 

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

但是如果你想在会员证明的形状上有更多的灵活性,你可以使用你的Subset定义,并随身携带一个证明它是可判定的。