ObservationEquivalence is an idea that arose in Concurrency theory. It was the response to the question `` when are two (concurrent) programs equivalent? ''. The answer is that this depends on the observer that interacts with the program. If an observer can interact with two observed entities in such a way that it can spot difference in their behavior, then they are not relatively equivalent. Now, if you are given a language in which observers can be described, and you can show that for all possible observers two entities exhibit the same behavior, then we have a stronger equivalence, often called congruence. -- AamodSane