subsetagdadecidable

Proving decidability of subset in Agda


Suppose I have this definition of Subset in Agda

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

and I have a set

data Q : Set where
 a : Q
 b : Q

Is it possible to prove that all subset of q is decidable and why?

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

Decidable is defined here:

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

Solution

  • Not for that definition of Subset, since decidability would require to check whether "p a" is inhabited or not, i.e. excluded middle.

    Decidable subsets would exactly be maps into Bool:

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

    But if you want more flexibility on the shape of the membership proofs you could use your definition of Subset and carry around a proof that it is Decidable.