sig
  val addr : D.name -> D.pointer
  val shift_pointer : D.pointer -> Formula.integer D.F.term -> D.pointer
  val shift_field : D.pointer -> D.name -> D.pointer
  val shift_ufield : D.pointer -> D.name -> D.pointer
  val shift_index : D.pointer -> Formula.integer D.F.term -> D.pointer
  val havoc_index : D.array -> Formula.integer D.F.term -> D.array
  val havoc_field : D.record -> D.name -> D.record
  val havoc_ufield : D.urecord -> D.name -> D.urecord
  val base : D.pointer -> D.pointer
  val block_length : D.pointer -> Formula.integer D.F.term
  val valid_pointer : D.pointer -> D.F.pred
  val valid_range : D.pointer -> D.set -> D.F.pred
  val separated : D.pointer -> D.pointer -> D.F.pred
  val array_length : D.pointer -> Formula.integer D.F.term
end