partial recursive