sig
  type base
  val cvar : D.integer -> Cil_types.varinfo -> base
  val root : D.integer -> base
  val base : D.integer -> base
  type path
  val is_atomic : Ctypes.c_object -> bool
  val p_block : atomic:bool -> Ctypes.c_object -> path
  val p_field : atomic:bool -> path -> Cil_types.fieldinfo -> path
  val p_index :
    atomic:bool -> path -> Ctypes.c_object -> offset:D.integer -> path
  val p_range :
    atomic:bool ->
    path -> Ctypes.c_object -> offset:D.integer -> length:D.integer -> path
  val p_interval :
    atomic:bool -> path -> Ctypes.c_object -> D.interval -> path
  type region
  val pp_region : Format.formatter -> region -> unit
  val empty : region
  val union : region -> region -> region
  val block : base -> region
  val index : base -> D.integer -> region
  val range : base -> D.integer -> D.integer -> region
  val path : base -> path -> region
  val is_empty : region -> D.F.pred
  val included : region -> region -> D.F.pred
  val separated : region -> region -> D.F.pred
  val fingerprint : D.F.pool -> region -> D.F.var list * D.F.pred * region
  val a_sizeof : Ctypes.c_object -> D.integer
end