Module Translators.EqConstrSysFromGlobConstrSys

Translate a DemandGlobConstrSys into a DemandEqConstrSys

Parameters

Signature

include ConstrSys.EqConstrSys with type v = ConstrSys.Var2(S.LVar)(S.GVar).t with type d = Lattice.Lift2(S.G)(S.D).t with module Var = ConstrSys.Var2(S.LVar)(S.GVar) with module Dom = Lattice.Lift2(S.G)(S.D)

Variables must be hashable, comparable, etc.

Values must form a lattice.

val sys_change : (v -> d) -> v ConstrSys.sys_change_info

Compute incremental constraint system change from old solution.

val postmortem : v -> v list

List of unknowns that should be queried again when the argument unknown has shrunk to bot, to eagerly trigger (analysis-time!) abstract garbage collection idependently of reach-based pruning at the end.

  • see https://arxiv.org/abs/2504.06026

    Stemmler, F., Schwarz, M., Erhard, J., Tilscher, S., Seidl, H. Taking out the Toxic Trash: Recovering Precision in Mixed Flow-Sensitive Static Analyses

val system : v -> ((v -> d) -> (v -> d -> unit) -> (v -> unit) -> d) option