abstract Test = { cat Nat ; data zero : Nat ; succ : Nat -> Nat ; fun plus : Nat -> Nat -> Nat ; def plus zero n = n ; plus (succ m) n = plus m (succ n) ; cat Vector Nat ; fun vector : (n : Nat) -> Vector n ; fun append : (m,n : Nat) -> Vector m -> Vector n -> Vector (plus m n) ; fun diff : (m,n : Nat) -> Vector (plus m n) -> Vector m -> Vector n ; cat Morph (Nat -> Nat) ; fun mkMorph : (f : Nat -> Nat) -> Morph f ; fun mkMorph2 : (f : Nat -> Nat) -> Vector (f zero) -> Morph f ; fun idMorph : Morph (\x -> x) -> Nat ; fun f0 : (n : Nat) -> ((m : Nat) -> Vector n) -> Int ; fun f1 : (n : Nat -> Nat) -> ((m : Nat) -> Vector (n m)) -> Int ; fun cmpVector : (n : Nat) -> Vector n -> Vector n -> Int ; fun g : ((n : Nat) -> Vector n) -> Int ; cat U (n,m : Nat) ; fun u0 : (n : Nat) -> U n n ; fun u1 : (n : Nat) -> U n (succ n) ; fun h : (n : Nat) -> U n n -> Int ; -- fun u2 : (n : Nat) -> U (plus n zero) zero ; -- fun h2 : (f : Nat -> Nat) -> ((n : Nat) -> U (f n) (f zero)) -> Int ; fun forall2 : (n : Nat) -> (Vector n -> Vector n -> Int) -> Int ; }