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