ConfigGating.ConfigGuardsFor each config, the set of values it may have if this point is reached. Absent config = unconstrained (may be any value). Join = union of possible value sets per config; if a config becomes unconstrained (both True and False are possible), it is removed. Empty map = no config is constrained = code always executes.
module M : sig ... endtype t = BranchVal.t M.tval pp : F.formatter -> BranchVal.t M.t -> unitval empty : 'a M.tval is_empty : 'a M.t -> boolval leq : lhs:BranchVal.t M.t -> rhs:BranchVal.t M.t -> boolval join : BranchVal.t M.t -> BranchVal.t M.t -> BranchVal.t M.tval widen :
prev:BranchVal.t M.t ->
next:BranchVal.t M.t ->
num_iters:'a ->
BranchVal.t M.t