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