let rec region m = function | [] -> model_zempty | [a] -> dzone_assigned m a | a :: others -> model_zunion (dzone_assigned m a) (region m others)