Definition.    Side effect

Let A be an atom in an atomistic model. A side effect is an output element from simulating A containing the influences that A creates in its environment, i.e., in other atoms.


Side effects form a special group in the Symbolic clause.  This feature makes it possible to connect other clauses and side effects together in order to create dynamic dependency models. Typical examples of this are calling a method, assigning a value, branching, and creating an object, which can be formalized as:

  • Creating an object: obj(Class, Arg*)
  • Creating an array: arr(Array, Suffix*)
  • Repetition in a loop: redo(Code)
  • Assignment: bind(SymbolicElement,AssignOp,Expression)
  • Calculated value: midValue(Def, Input, Output)
  • Branch: branch(FromElement, ToElement)
  • Method call: call(CalledElement, Arg*)
  • JDK reference: jdkRef(Result, Class, Method, Arg*)

Only through symbolic exececution and dynamic analysis can one generate such information about every invocation, every variable reference and every action caused by commands at the programming language level.