CTree.hascasl revision 20921b0900acb7e19a778e4b309a7e6d6c305e5e
5bd562b1d7da51cb5715899d32bb4c79c54459b0wrowevars a,b: Type
5bd562b1d7da51cb5715899d32bb4c79c54459b0wrowegenerated type Set a ::= empty | add a (Set a)
39021cf8b495cdb94013ca73531ccb32658fb793rederpjgenerated type Sys b ::= node b (Set (Sys b))
39021cf8b495cdb94013ca73531ccb32658fb793rederpjgenerated type CTree a ::= leaf a | branch (Nat ->? CTree a)
39021cf8b495cdb94013ca73531ccb32658fb793rederpjfree type L ::= abs (L -> L)
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwrowefree type Tree a b ::= leaf b | branch (a -> Tree a b)
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwrowefree type List a ::= nil | cons (a; List a)
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwrowefree type Tree a b ::= leaf a | branch (b -> List (Tree a b))
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwrowevar c : Type
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwroweop fold : (a -> c) -> ((b -> List c) -> c) -> Tree a b -> c
fa16f10bc02e46bc5a6c2c2c6371926cd1dbe2edwrowevars f : a -> c; g : (b -> List c) -> c; x : a; s : b -> List (Tree a b)
db8ac7cbb1fa6cdd6abcc4bb797d4deed32dd269jim. fold f g (leaf x) = f x
db8ac7cbb1fa6cdd6abcc4bb797d4deed32dd269jim. def (fold f g (branch s))