let rec fol_offset_update expr base v off =
  match off with
  | NoOffset -> v
  | Field (f, next) ->
      let v = fol_offset_update expr (fol_field_access base f) v next in
      fol_field_update base f v
  | Index (t,next) ->
      let idx = expr t in
      let v = fol_offset_update expr (Why_ops.array_access base idx) v next in
      Why_ops.array_update base idx v