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
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 sync : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f
val paths_as_set : ('a, 'b, 'c, 'd) Analyses.man -> 'e list
module A = Analyses.UnitA
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_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
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