Module type BasePriv.S

module D : Lattice.S
module G : Lattice.S
module V : Printable.S
val startstate : unit -> D.t
val read_global : Queries.ask -> (V.t -> G.t) -> BaseDomain.BaseComponents(D).t -> GoblintCil.varinfo -> ValueDomain.Compound.t
val write_global : ?invariant:bool -> Queries.ask -> (V.t -> G.t) -> (V.t -> G.t -> unit) -> BaseDomain.BaseComponents(D).t -> GoblintCil.varinfo -> ValueDomain.Compound.t -> BaseDomain.BaseComponents(D).t
val sync : Queries.ask -> (V.t -> G.t) -> (V.t -> G.t -> unit) -> BaseDomain.BaseComponents(D).t -> [ `Normal | `Join | `JoinCall | `Return | `Init | `Thread ] -> BaseDomain.BaseComponents(D).t
val enter_multithreaded : Queries.ask -> (V.t -> G.t) -> (V.t -> G.t -> unit) -> BaseDomain.BaseComponents(D).t -> BaseDomain.BaseComponents(D).t
val iter_sys_vars : (V.t -> G.t) -> VarQuery.t -> V.t VarQuery.f -> unit

Queries.IterSysVars for base.

val thread_join : ?force:bool -> Queries.ask -> (V.t -> G.t) -> GoblintCil.Cil.exp -> BaseDomain.BaseComponents(D).t -> BaseDomain.BaseComponents(D).t
val invariant_global : Queries.ask -> (V.t -> G.t) -> V.t -> Invariant.t

Provides Queries.InvariantGlobal result for base.

Should account for all unprotected/weak values of global variables.

val invariant_vars : Queries.ask -> (V.t -> G.t) -> BaseDomain.BaseComponents(D).t -> GoblintCil.varinfo list

Returns global variables which are privatized.

val init : unit -> unit
val finalize : unit -> unit