# Formal differences between emulation and simulation?

Recently this question came up, and I've been unable to find a concrete answer.

When I was reading this paper on CRDTs, I was a little perplexed by the notion of emulation here in theorems 3.1 and 3.2. It seems like emulation means "take object $$O_1$$ and produce a mapping $$f$$ to yield object $$O_2 = f(O_1)$$ with some properties". But, it's not clear why we could not use some trivial mapping to do this. An explicit definition is not given, and I'm not sure what the best analogy is. It's almost like a reduction mapping? (To be clear, I am not especially interested in this exact example, rather I want to understand emulation in general.)

On the other hand, I feel that I understand simulation. It says that one system simulates another if it can do (at least!) everything the original system can. This is precisely defined in terms of labeled transition systems, which is very nice. I'm familiar with homomorphisms between systems, and bisimulations, as well.

These concepts of emulation and simulation feel intimately related, but different, and I'm unaware of any formal notions of "emulation". At least, notions which use the explicit term "emulation". Is there an intuitive difference? Is there a technical one? Perhaps in terms of transition systems?

• It's a fairly recent article, if you don't get an answer here you can try asking one of the authors directly (by email) May 11, 2023 at 20:39

• what bothers me a little is that the emulated object is not really tied to the original object in some way. The authors produced a mapping $f$ from object $O$ to some object $f(O)$, but the plain language specification of "the new system performs in exactly the same way as the emulated system" is somehow not formalized. I can deduce that this should be the case based on their argument, but there's no actual proof of some fact like $O \sim f(O)$ where $\sim$ is some defined "simulation relation". Does that make sense? May 16, 2023 at 20:44