packages feed

MiniAgda-0.2014.1.9: test/succeed/exists.ma

-- 2010-03-28 Exists and Bracket via parametric function types
-- 2012-01-22 parameters gone from constructors

data Sigma (A : Set)(B : A -> Set) : Set
{ pair : (fst : A) -> (snd : B fst) -> Sigma A B
}

data Subset (A : Set)(B : A -> Set) : Set
{ put : (get : A) -> [prf : B get] -> Subset A B
}

data Exists (A : Set)(B : A -> Set) : Set
{ exI : [a : A] -> (prop : B a) -> Exists A B
}

fun exE : [A : Set] -> [B : A -> Set] -> [C : Set] -> 
      Exists A B -> ([a : A] -> B a -> C) -> C 
{ exE A B C (exI a b) k = k a b
}

data Bracket (A : Set) : Set
{ bI : [a : A] -> Bracket A
}

fun bE : [A : Set] -> [C : Set] -> Bracket A -> ([A] -> C) -> C
{ bE A C (bI a) k = k a
}