packages feed

MiniAgda-0.2014.1.9: test/succeed/sizedFinitelyBranchingTrees.ma

data Nat : Set
{ zero : Nat
; succ : Nat -> Nat
}

data Fin : Nat -> Set
{ fzero : [n : Nat] -> Fin (succ n)
; fsucc : [n : Nat] -> Fin n -> Fin (succ n)
}

sized data Tree (A : Set) : Size -> Set
{ leaf : [i : Size] -> A -> Tree A ($ i)
; node : [i : Size] -> (n : Nat) -> (Fin n -> Tree A i) -> Tree A ($ i)
}

fun map : [A : Set] -> [B : Set] -> (A -> B) -> 
          [i : Size] -> Tree A i -> Tree B i
{ map A B f i (leaf (i > j) a)   = leaf j (f a)
; map A B f i (node (i > j) n s) = node j n (\ k -> map A B f j (s k)) 
}