Module MutexGhosts.Spec

include module type of struct include UnitAnalysis.Spec end
include module type of struct include Analyses.DefaultSpec end

Relatively safe default implementations of some boring Spec functions.

module P = Analyses.UnitP
type marshal = unit
val init : 'a -> unit
val finalize : unit -> unit
val vdecl : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f
val asm : ('a, 'b, 'c, 'd) Analyses.man -> 'e
val skip : ('a, 'b, 'c, 'd) Analyses.man -> 'e
val morphstate : 'a -> 'b -> 'c
val sync : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f
val context : 'a -> 'b -> 'c -> 'd
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.man -> 'e list
module A = Analyses.UnitA
val access : 'a -> 'b -> unit
module D = Lattice.Unit
module C = Printable.Unit
val assign : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.lval -> GoblintCil.exp -> D.t
val branch : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.exp -> bool -> D.t
val body : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.fundec -> D.t
val return : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.exp option -> GoblintCil.fundec -> D.t
val enter : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.lval option -> GoblintCil.fundec -> GoblintCil.exp list -> (D.t * D.t) list
val combine_env : 'a -> 'b -> 'c -> 'd -> 'e -> 'f -> 'g -> 'h -> 'i
val combine_assign : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.lval option -> 'd -> GoblintCil.fundec -> GoblintCil.exp list -> 'e -> D.t -> Queries.ask -> D.t
val special : (D.t, 'a, 'b, 'c) Analyses.man -> GoblintCil.lval option -> GoblintCil.varinfo -> GoblintCil.exp list -> D.t
val startcontext : unit -> unit
val startstate : 'a -> unit
val threadenter : 'a -> multiple:'b -> 'c -> 'd -> 'e -> unit list
val exitstate : 'a -> unit
val name : unit -> string
module V : sig ... end
module Locked : sig ... end
module Unlocked : sig ... end
module MultiThread : sig ... end
module G : sig ... end
val mustlock_of_addr : ValueDomain.Addr.t -> LockDomain.MustLock.t option
val event : ('a, [> `Bot | `Lifted1 of Locked.t * Unlocked.t * MultiThread.t | `Lifted2 of [> `Lifted1 of bool | `Lifted2 of NodeSet.t ] ], 'b, [> `Left of MyCFG.node | `Middle of LockDomain.MustLock.t | `Right of bool ]) Analyses.man -> Events.t -> 'c -> 'd
val threadspawn : ('a, [> `Lifted2 of [> `Lifted2 of NodeSet.t ] ], 'b, [> `Right of bool ]) Analyses.man -> multiple:'c -> 'd -> 'e -> 'f -> 'g -> 'h
val ghost_var_available : ('a, [> `Bot | `Lifted2 of [> `Lifted1 of BoolDomain.MayBool.t ] ], 'b, [> `Middle of GoblintCil.varinfo * LockDomain.MustLock.idx Offset.t ]) Analyses.man -> WitnessGhost.Var.t -> bool
module VariableSet : sig ... end
val query : ('b, [> `Bot | `Lifted1 of Locked.t * Unlocked.t * MultiThread.t | `Lifted2 of [> `Lifted1 of BoolDomain.MayBool.t | `Lifted2 of NodeSet.t ] ], 'c, V.t) Analyses.man -> 'a Queries.t -> 'a0 Queries.result