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