module Subsets where
open import Prelude
private variable n m k : ℕ
open import Data.List
Ind : ℕ → ℕ → Type
Ind (suc m) (suc k) = Ind m (suc k) ⊎ Ind (suc m) k
Ind _ _ = ⊤
Bin : Type → ℕ → ℕ → Type
Bin A m k = Ind m k → A
cd : Bin A (suc m) k → Bin (List A) m (suc k)
cd {k = zero} xs _ = xs tt ∷ []
cd {m = zero} {k = suc k} xs _ = xs (inl tt) ∷ cd (xs ∘ inr) tt
cd {m = suc m} {k = suc k} xs (inl i) = cd (xs ∘ inl) i
cd {m = suc m} {k = suc k} xs (inr i) = xs (inl i) ∷ cd (xs ∘ inr) i