|
|
|
(*
|
|
|
|
* Copyright (c) 2009 - 2013 Monoidics ltd.
|
|
|
|
* Copyright (c) 2013 - present Facebook, Inc.
|
|
|
|
* All rights reserved.
|
|
|
|
*
|
|
|
|
* This source code is licensed under the BSD style license found in the
|
|
|
|
* LICENSE file in the root directory of this source tree. An additional grant
|
|
|
|
* of patent rights can be found in the PATENTS file in the same directory.
|
|
|
|
*)
|
|
|
|
|
|
|
|
(** Join and Meet Operators *)
|
|
|
|
|
|
|
|
open Utils
|
|
|
|
|
|
|
|
(** {2 Join Operators} *)
|
|
|
|
|
|
|
|
(** Join two pathsets *)
|
|
|
|
val pathset_join :
|
|
|
|
Procname.t -> Sil.tenv -> Paths.PathSet.t -> Paths.PathSet.t -> Paths.PathSet.t * Paths.PathSet.t
|
|
|
|
|
|
|
|
val join_time : float ref
|
|
|
|
|
|
|
|
val proplist_collapse_pre : Prop.normal Prop.t list -> Prop.normal Specs.Jprop.t list
|
|
|
|
|
|
|
|
val pathset_collapse : Paths.PathSet.t -> Paths.PathSet.t
|
|
|
|
|
|
|
|
(** reduce the pathset only based on implication checking. *)
|
|
|
|
val pathset_collapse_impl : Procname.t -> Sil.tenv -> Paths.PathSet.t -> Paths.PathSet.t
|
|
|
|
|
|
|
|
(** {2 Meet Operators} *)
|
|
|
|
|
|
|
|
(** [propset_meet_generate_pre] generates new symbolic heaps (i.e., props)
|
|
|
|
by applying the partial meet operator, adds the generated heaps
|
|
|
|
to the argument propset, and returns the resulting propset. This function
|
|
|
|
is tuned for combining preconditions. *)
|
|
|
|
val propset_meet_generate_pre : Propset.t -> Prop.normal Prop.t list
|