1. A computer implemented method for determining invariants within an object oriented program, comprising: at least partially running a local analysis of the program wherein the local analysis notes at least one local value of at least one object field at at least one program point; at least partially running a global analysis of the program, wherein an object is either mutable or valid; wherein the global analysis stores at least one value which the object field has held when the object is valid; and combining the local analysis and the global analysis to infer at least one invariant for at least one object, wherein the combining comprises the local analysis reaching a program point wherein the object transitions from mutable to valid, the local value of the at least one object field being given to the global analysis, this value within the global analysis comprising the global analysis information about the object.