package goblint
Source file solverBox.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30(** Box operator for warrowing solvers. *) module type S = functor (D: Lattice.S) -> sig val box: D.t -> D.t -> D.t end module Warrow: S = functor (D: Lattice.S) -> struct let box x y = if D.leq y x then D.narrow x y else D.widen x (D.join x y) end module Widen: S = functor (D: Lattice.S) -> struct let box x y = D.widen x (D.join x y) end module NarrowOption: S = functor (D: Lattice.S) -> struct let box x y = if GobConfig.get_bool "exp.no-narrow" then x else D.narrow x y end