AttributeConfiguredAndNullByteArrayDomain.Valinclude LatticeWithSmartOpsinclude LatticeWithInvalidateinclude Lattice.Sinclude Lattice.POwiden x y assumes leq x y. Solvers guarantee this by calling widen old (join old new).
val smart_join : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  tval smart_widen : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  tval smart_leq : 
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  (GoblintCil.Cil.exp -> IntOps.BigIntOps.t option) ->
  t ->
  t ->
  bool