Module Fol_split


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
val union : string
val empty : string
val included : string
end)
module RuntimeInclusion: SplitZoneInclusion(sig
val union : string
val empty : string
val included : string
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