module Fol_split: sig
.. end
Splitting Goals
val dkey : string
module Env: Map.Make
(
Fol.Var
)
type
term = Fol.term
type
pred = Fol.pred
val is_zone : Fol.term -> bool
val e_unfold : Fol.term Env.t -> Fol.term -> Fol.term
val p_unfold : Fol.term Env.t -> Fol.pred -> Fol.pred
module SplitZoneInclusion: functor (
M
:
sig
val union : string
val empty : string
val included : string
end
) ->
sig
.. end
module StoreInclusion: SplitZoneInclusion
(
sig
end
)
module RuntimeInclusion: SplitZoneInclusion
(
sig
end
)
val dispatch : int -> int -> Fol.pred -> Fol.pred Bag.t
val simplify : Fol.pred -> Fol.pred
val split : Mcfg.assigns_method -> Fol.pred -> Fol.pred Bag.t
First, unfold zones when method is effect-assigns.
Then applies dispatch
.
Note: split
may deliver stronger sub-predicates