generates two new tasks
p = partition(top,bottom);