X x = function(args);
R r1 = arbitrary(x);
R r2 = arbitrary(x);
R r1 = arbitrary(function(args)); R r2 = arbitrary(function(args));
If these two programs produce the same outcome then function
is referentially transparent.
In a pure functional language, all functions are referentially transparent (aka pure).