<p>In plain language, emulation means the new system performs in exactly the same way as the emulated system.</p>
<p>Simulation means the new system performs in roughly equivalent way as the simulated system.</p>
<p>e.g. 8086 emulator (it returns precisely the same results for the same input as a 8086 processor) and analog circuit simulator (SPICE, which could have deviations and even unbound errors from the actual circuit behavior)</p>
<p>In context of the referred paper, I don't see apparent difference between &quot;emulation&quot; and the well understood &quot;simulation&quot; of state machines.</p>

CC BY-SA 4.0
2023-05-16T20:44:06.293Z
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?
NathanLiitt
CC BY-SA 4.0
2023-05-16T00:02:46.100Z
2023-05-16T00:08:19.613Z
2023-05-16T00:08:19.613Z
Ligon Liu
<p>Recently this question came up, and I've been unable to find a concrete answer.</p>
<p>When I was reading <a href="https://pages.lip6.fr/Marc.Shapiro/papers/RR-7687.pdf" rel="nofollow noreferrer">this paper on CRDTs</a>, I was a little perplexed by the notion of emulation here in theorems 3.1 and 3.2. It seems like emulation means &quot;take object <span class="math-container">$O_1$</span> and produce a mapping <span class="math-container">$f$</span> to yield object <span class="math-container">$O_2 = f(O_1)$</span> with some properties&quot;. 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 <em>in general</em>.)</p>
<p>On the other hand, I feel that I understand <a href="https://en.wikipedia.org/wiki/Simulation_(computer_science)" rel="nofollow noreferrer">simulation</a>. 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.</p>
<p>These concepts of emulation and simulation feel intimately related, but different, and I'm unaware of any formal notions of &quot;emulation&quot;. At least, notions which use the explicit term &quot;emulation&quot;. Is there an intuitive difference? Is there a technical one? Perhaps in terms of transition systems?</p>

CC BY-SA 4.0
2023-05-11T20:39:21.110Z
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)
Marzio De Biasi
<pl.programming-languages><ds.data-structures><machine-models><object-oriented><lts-simulations>
Formal differences between emulation and simulation?
NathanLiitt
# Formal differences between emulation and simulation?

(Asked by: username_0 on 2023-05-11)

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

When I was reading [this paper on CRDTs](https://pages.lip6.fr/Marc.Shapiro/papers/RR-7687.pdf), 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](https://en.wikipedia.org/wiki/Simulation_(computer_science)). 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?

**Tags:** pl.programming-languages, ds.data-structures, machine-models, object-oriented, lts-simulations

> **Comments:**
> **username_1**: 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)  

---

## 1 answers

### Answer by username_2 on 2023-05-16. Score: 1

In plain language, emulation means the new system performs in exactly the same way as the emulated system.

Simulation means the new system performs in roughly equivalent way as the simulated system.

e.g. 8086 emulator (it returns precisely the same results for the same input as a 8086 processor) and analog circuit simulator (SPICE, which could have deviations and even unbound errors from the actual circuit behavior)

In context of the referred paper, I don't see apparent difference between "emulation" and the well understood "simulation" of state machines.

> **Comments:**
> **username_0**: 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?  

---

