let rec assigned_of_data te acc d =
    match d with
      | (Data _|Value _|Loc _) ->
          D.Aloc(te,loc_of_data te d)::acc
      | Range(te,loc,range) -> 
          D.Arange(te,loc,range)::acc
      | List ds -> List.fold_left (assigned_of_data te) acc ds
      | _ -> Wp_parameters.not_yet_implemented "arbitrary zone"