(VAR g h x xs) (RULES ap(ap(f,x),x) -> ap(ap(x,ap(f,x)),ap(ap(cons,x),nil)) ap(ap(ap(foldr, g), h), nil) -> h ap(ap(ap(foldr, g), h), ap(ap(cons, x),xs)) -> ap(ap(g,x), ap(ap(ap(foldr, g), h), xs)) )