1. A method in an imperative framework, comprising: encapsulating an object graph that is rooted by an instance of a data type with an isolation modifier of a plurality of isolation modifiers to control access to members such that the object graph does not have references to objects outside of the object graph and references outside of the object graph do not have references to objects within the object graph including specifying an isolation modifier notation representative of the isolation modifier with a type name in a formal parameter declaration that can be used in a universal syntax; each of the plurality of isolation modifiers defining a different access permission to restrict operations on the object to which a reference points including: an immutable permission for accessing an immutable field in which an immutable reference points at objects shared between concurrent threads where state that does not change is accessed through the object; a read permission in which a read reference points at objects shared between concurrent threads for which there are no concurrent writes and the read reference implies immutable access and allows reads of mutable fields; and a write permission in which a write reference points to an object that is one of not shared or shared but includes an exclusive access in which a write to the reference can be done with safe concurrency; statically proving the object graph to be isolated; running, reading, and/or writing objects within the object graph; and statically proving the object graph continues to be isolated after running, reading, and/or writing the objects such that mutations of state within an isolated region of the object graph are not made available outside of the isolated region to enable a safe data parallel operation within the object graph.