UnassumeAnalysis.Specinclude module type of struct include UnitAnalysis.Spec endinclude module type of struct include Analyses.DefaultSpec endmodule G = Lattice.Unitmodule V = Analyses.EmptyVmodule P = Analyses.EmptyPval vdecl : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'aval query : 'b -> 'a Queries.t -> 'aval sync : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'aval paths_as_set : ('a, 'b, 'c, 'd) Analyses.man -> 'a listmodule A = Analyses.UnitAmodule D = Lattice.Unitmodule C = Printable.Unitval return :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.exp option ->
GoblintCil.fundec ->
D.tval enter :
(D.t, 'a, 'b, 'c) Analyses.man ->
GoblintCil.lval option ->
GoblintCil.fundec ->
GoblintCil.exp list ->
(D.t * D.t) listval threadspawn :
('a, 'b, 'c, 'd) Analyses.man ->
multiple:'e ->
'f ->
'g ->
'h ->
'i ->
'amodule Locator : sig ... endval location_locator : Locator.tval loop_locator : Locator.tval precheck : Queries.ask -> Cil.exp -> Cil.exp optionPrecheck leaf expressions of the invariant expression. Parts which contradict the current state are dropped to avoid unassuming something unrelated/unintended. In particular, this is useful for disjunctive invariants over loop unrollings to only unassume the parts possibly related to the current unrolling.
val emit_unassume' : ('a, 'b, 'c, 'd) Analyses.man -> unitval emit_unassume : ('a, 'b, 'c, 'd) Analyses.man -> unitval assign : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f -> unitval branch : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f -> unitval body : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> unitval asm : ('a, 'b, 'c, 'd) Analyses.man -> unitval skip : ('a, 'b, 'c, 'd) Analyses.man -> unitval special : ('a, 'b, 'c, 'd) Analyses.man -> 'e -> 'f -> 'g -> unitval combine_env :
('a, 'b, 'c, 'd) Analyses.man ->
'e ->
'f ->
'g ->
'h ->
'i ->
'j ->
'k ->
'aval combine_assign :
('a, 'b, 'c, 'd) Analyses.man ->
'e ->
'f ->
'g ->
'h ->
'i ->
'j ->
'k ->
unitval event : (unit, 'a, 'b, 'c) Analyses.man -> Events.t -> 'd -> unit