Goblint_lib.QueriesQueries and their result lattices.
module VDQ = ValueDomainQueriesmodule ID = VDQ.IDmodule LS = VDQ.LSmodule TS : sig ... endmodule ES : sig ... endmodule VS : sig ... endmodule NS : sig ... endmodule NFL = WrapperFunctionAnalysis0.NodeFlatLatticemodule TC = WrapperFunctionAnalysis0.ThreadCreateUniqueCountmodule ThreadNodeLattice : sig ... endmodule ML = LibraryDesc.MathLiftedmodule VI : sig ... endmodule VarQuery = Goblint_constraint.VarQuerytype iterprevvar =
int ->
(MyCFG.node * Stdlib.Obj.t * int) ->
MyARG.inline_edge ->
unitmodule FlatYojson : sig ... endmodule VD = ValueDomain.Compoundmodule AD = ValueDomain.ADmodule MayBool = BoolDomain.MayBoolmodule MustBool = BoolDomain.MustBoolmodule Unit = Lattice.Unitmodule ProtectionKind : sig ... endmodule Protection : sig ... endDifferent notions of protection for a global variables g by a mutex m m protects g strongly if:
module AllocationLocation : sig ... endval compare_maybepublic :
maybepublic ->
maybepublic ->
Ppx_deriving_runtime.intval hash_maybepublic : maybepublic -> inttype maybepublicwithout = {global : CilType.Varinfo.t;kind : ProtectionKind.t;without_mutex : LockDomain.MustLock.t;protection : Protection.t;}val compare_maybepublicwithout :
maybepublicwithout ->
maybepublicwithout ->
Ppx_deriving_runtime.intval hash_maybepublicwithout : maybepublicwithout -> inttype mustbeprotectedby = {mutex : LockDomain.MustLock.t;global : CilType.Varinfo.t;kind : ProtectionKind.t;protection : Protection.t;}val compare_mustbeprotectedby :
mustbeprotectedby ->
mustbeprotectedby ->
Ppx_deriving_runtime.intval hash_mustbeprotectedby : mustbeprotectedby -> intval compare_mustprotectedvars :
mustprotectedvars ->
mustprotectedvars ->
Ppx_deriving_runtime.intval hash_mustprotectedvars : mustprotectedvars -> intval compare_mustprotectinglocks :
mustprotectinglocks ->
mustprotectinglocks ->
Ppx_deriving_runtime.intval hash_mustprotectinglocks : mustprotectinglocks -> inttype access = | Memory of {exp : CilType.Exp.t;var_opt : CilType.Varinfo.t option;kind : AccessKind.t;}Memory location access (race).
*)| PointProgram point and state access (MHP), independent of memory location.
*)val hash_access : access -> intval compare_invariant_context :
invariant_context ->
invariant_context ->
Ppx_deriving_runtime.intval hash_invariant_context : invariant_context -> intmodule YS : sig ... endtype _ t = | EqualSet : GoblintCil.exp -> ES.t t| MayPointTo : GoblintCil.exp -> AD.t t| ReachableFrom : GoblintCil.exp -> AD.t t| ReachableUkTypes : GoblintCil.exp -> TS.t t| Regions : GoblintCil.exp -> LS.t t| MayEscape : GoblintCil.varinfo -> MayBool.t t| MayBePublic : maybepublic -> MayBool.t t| MayBePublicWithout : maybepublicwithout -> MayBool.t t| MustBeProtectedBy : mustbeprotectedby -> MustBool.t t| MustLockset : LockDomain.MustLockset.t t| MustBeAtomic : MustBool.t t| MustBeSingleThreaded : {} -> MustBool.t t| MustBeUniqueThread : MustBool.t t| CurrentThreadId : ThreadIdDomain.ThreadLifted.t t| ThreadCreateIndexedNode : ThreadNodeLattice.t t| MayBeThreadReturn : MayBool.t t| EvalFunvar : GoblintCil.exp -> AD.t t| EvalInt : GoblintCil.exp -> ID.t t| EvalStr : GoblintCil.exp -> SD.t t| EvalLength : GoblintCil.exp -> ID.t t| EvalValue : GoblintCil.exp -> VD.t t| BlobSize : {} -> ID.t t| CondVars : GoblintCil.exp -> ES.t t| PartAccess : access -> Stdlib.Obj.t tOnly queried by access and deadlock analysis. Obj.t represents MCPAccess.A.t, needed to break dependency cycle.
| IterPrevVars : iterprevvar -> Unit.t t| IterVars : itervar -> Unit.t t| PathQuery : int * 'a t -> 'a tQuery only one path under witness lifter.
*)| DYojson : FlatYojson.t tGet local state Yojson of one path under PathQuery.
| AllocVar : AllocationLocation.t -> VI.t t| IsAllocVar : GoblintCil.varinfo -> MayBool.t t| IsHeapVar : GoblintCil.varinfo -> MayBool.t t| IsMultiple : GoblintCil.varinfo -> MustBool.t t| MutexType : Mval.Unit.t -> MutexAttrDomain.t t| EvalThread : GoblintCil.exp -> ConcDomain.ThreadSet.t t| EvalMutexAttr : GoblintCil.exp -> MutexAttrDomain.t t| EvalJumpBuf : GoblintCil.exp -> JmpBufDomain.JmpBufSet.t t| ActiveJumpBuf : JmpBufDomain.ActiveLongjmps.t t| ValidLongJmp : JmpBufDomain.JmpBufSet.t t| CreatedThreads : ConcDomain.ThreadSet.t t| MustJoinedThreads : ConcDomain.MustThreadSet.t t| ThreadsJoinedCleanly : MustBool.t t| MustProtectedVars : mustprotectedvars -> VS.t t| MustProtectingLocks : mustprotectinglocks -> LockDomain.MustLockset.t t| Invariant : invariant_context -> Invariant.t t| InvariantGlobal : Stdlib.Obj.t -> Invariant.t tArgument must be of corresponding Spec.V.t.
| WarnGlobal : Stdlib.Obj.t -> Unit.t tArgument must be of corresponding Spec.V.t.
| IterSysVars : VarQuery.t * Stdlib.Obj.t VarQuery.f -> Unit.t titer_vars for Constraints.FromSpec. Obj.t represents Spec.V.t.
| MayAccessed : AccessDomain.EventSet.t t| MayBeTainted : AD.t t| MayBeModifiedSinceSetjmp : JmpBufDomain.BufferEntry.t -> VS.t t| MustTermLoop : GoblintCil.stmt -> MustBool.t t| MustTermAllLoops : MustBool.t t| IsEverMultiThreaded : MayBool.t t| TmpSpecial : Mval.Exp.t -> ML.t t| MaySignedOverflow : GoblintCil.exp -> MayBool.t t| GasExhausted : CilType.Fundec.t -> MustBool.t t| YamlEntryGlobal : Stdlib.Obj.t * YamlWitnessType.Task.t -> YS.t tYAML witness entries for a global unknown (Obj.t represents Spec.V.t) and YAML witness task.
| GhostVarAvailable : Goblint_lib__.WitnessGhostVar.t -> MayBool.t t| InvariantGlobalNodes : NS.t tNodes where YAML witness flow-insensitive invariants should be emitted as location invariants (if witness.invariant.flow_insensitive-as is configured to do so).
GADT for queries with specific result type.
Container for explicitly polymorphic man.ask function out of man. To be used when passing entire man around seems inappropriate. Use Analyses.ask_of_man to convert man to ask.
module Result : sig ... endmodule Any : sig ... endval must_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MustBeEqual query.
val may_be_equal : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MayBeEqual query.
val may_be_less : ask -> GoblintCil.exp -> GoblintCil.exp -> boolBackwards-compatibility for former MayBeLess query.
val eval_bool : ask -> GoblintCil.exp -> BoolDomain.FlatBool.tmodule Set : sig ... endmodule Hashtbl : sig ... end