sig
  type state
  type value
  type location
  type origin
  val extract_expr :
    (Cil_types.exp -> Abstract_domain.Queries.value Eval.evaluated) ->
    Abstract_domain.Queries.state ->
    Cil_types.exp ->
    (Abstract_domain.Queries.value * Abstract_domain.Queries.origin option)
    Eval.evaluated
  val extract_lval :
    (Cil_types.exp -> Abstract_domain.Queries.value Eval.evaluated) ->
    Abstract_domain.Queries.state ->
    Cil_types.lval ->
    Cil_types.typ ->
    Abstract_domain.Queries.location ->
    (Abstract_domain.Queries.value * Abstract_domain.Queries.origin option)
    Eval.evaluated
  val backward_location :
    Abstract_domain.Queries.state ->
    Cil_types.lval ->
    Cil_types.typ ->
    Abstract_domain.Queries.location ->
    Abstract_domain.Queries.value ->
    (Abstract_domain.Queries.location * Abstract_domain.Queries.value)
    Eval.or_bottom
  val reduce_further :
    Abstract_domain.Queries.state ->
    Cil_types.exp ->
    Abstract_domain.Queries.value ->
    (Cil_types.exp * Abstract_domain.Queries.value) list
end