A local analysis analyzes the values of objects paying attention to
program flow and a global analysis analyses the object independent of the
flow. The local and global analysis interact to infer the invariants of
objects used within a computer program. The local analysis is given the
known invariants of an object by the global analysis when the object
transitions from a valid to a mutable state. It then keeps track of all
of the values of objects encountered until the object transitions from
mutable to a valid state, when the information known to the local
analysis is passed to the global analysis, which may use the new object
values to add to the current list of invariants for the given object.