More graph excitement, for your viewing pleasure.
Given two graphs G_{1} = (V_{1}, E_{1}) and G_{2} = (V_{2}, E_{2}), and a binary relation R, R is a simulation if for every vertex in V_{1} and V_{2} and every edge in E_{1}, if there is a mapping between two vertices (x_{1} and x_{2}) (that is, an entry in R), and an edge from the vertex in V_{1}  x_{1}  to another vertex in V_{1}  y_{1}  then there is a mapping from that second vertex  y_{1}  to a vertex in V_{2}  call it y_{2}, and an edge between the vertices x_{2} and y_{2}. You can make your simulation more strict by labelling the edges, and requiring that the edges in each graph that are 'equivalent' be of the same label.
Perhaps a picture would help. Let's say you've got three 'points'. You've got an edge from x_{1} to y_{1}, and a mapping from x_{1} to x_{2}:
X1>X2


\/
Y1
If that's the case, then there must be some point y_{2} that makes the picture look like this:
X1>X2
 
 
\/ \/
Y1>Y2
One use of this sort of thing  relations, simulations, graphs  is typing semistructured data. The above writeup breathes its full force in this case  the tighter the typing you make, the more complex is the model you end up with. The less strict, the less closely your model resembles the original system, and potentially the less useful the model is.