Therefore, function codice 4 is neither deterministic nor referentially transparent. In declarative (high-level) languages, values have to be referentially transparent. An expression that is not referentially transparent is called referentially opaque. The function that does this value-for-function-object replacement can generically wrap any referentially transparent function. In functional programming only referentially transparent functions are considered. So, functional programs are referentially transparent. Functions are referentially transparent, encapsulated expressions and cannot have side effects. Functional programs exclusively use this type of function and are therefore referentially transparent. Such mathematical identities "will" hold for referentially transparent functions such as codice 26. In fact, assignment statements are never referentially transparent. In any case, this is only possible for a referentially transparent function. It holds only in the case where a term names and, furthermore, occurs referentially. Prior to the theory of relativity, the term "mass" was "referentially indeterminate". Arithmetic operations are referentially transparent&colon; codice 5 can be replaced by codice 6, for instance.