sig
  module PLoc :
    sig
      type value = Cvalue.V.t
      type location = Precise_locs.precise_location
      type offset
      val top : location
      val equal_loc : location -> location -> bool
      val equal_offset : offset -> offset -> bool
      val pretty_loc : Format.formatter -> location -> unit
      val pretty_offset : Format.formatter -> offset -> unit
      val to_value : location -> value
      val size : location -> Int_Base.t
      val assume_no_overlap :
        partial:bool ->
        location -> location -> (location * location) Abstract_location.truth
      val assume_valid_location :
        for_writing:bool ->
        bitfield:bool -> location -> location Abstract_location.truth
      val no_offset : offset
      val forward_field :
        Cil_types.typ -> Cil_types.fieldinfo -> offset -> offset
      val forward_index : Cil_types.typ -> value -> offset -> offset
      val forward_variable :
        Cil_types.typ ->
        Cil_types.varinfo -> offset -> location Eval.or_bottom
      val forward_pointer :
        Cil_types.typ -> value -> offset -> location Eval.or_bottom
      val eval_varinfo : Cil_types.varinfo -> location
      val backward_variable :
        Cil_types.varinfo -> location -> offset Eval.or_bottom
      val backward_pointer :
        value -> offset -> location -> (value * offset) Eval.or_bottom
      val backward_field :
        Cil_types.typ ->
        Cil_types.fieldinfo -> offset -> offset Eval.or_bottom
      val backward_index :
        Cil_types.typ ->
        index:value ->
        remaining:offset -> offset -> (value * offset) Eval.or_bottom
      val structure : location Abstract_location.structure
      val make : Locations.location -> location
    end
  val ploc_key : Main_locations.PLoc.location Abstract_location.key
end