let assigns_goal env from_label region to_label =
    let mfrom = mem_at env from_label in
    let mto = mem_at env to_label in
    let zones =
      match region with
        | [] -> dzone_empty ()
        | [a] -> dzone_assigned a
        | a::others -> 
            List.fold_left
              (fun dz a ->
                 dzone_union dz (dzone_assigned a)
              ) (dzone_assigned a) others
    in
    let ma = malloc_of_mem mfrom in
    RtLib.is_havoc ma (mbits_of_mem mfrom) zones (mbits_of_mem mto)