A duplication `dup a b = x` compiles into a Constructor node too, but with a different label.
A superposition `{a b}` compiles to a Constructor node too. The difference here comes from context too.
Additionally, nodes have labels. We use the label to store data in the node's memory, which can be used for various purposes.
```
0 - Points to the sup occurence 0 - Points to the duplicated value
| |
# Superposition # Duplication
/ \ / \
1 2 - Points to the second value 1 2 - Points to the second binding
| |
Points to the first value Points to the first binding
```
Check out [HVM-Core](https://github.com/HigherOrderCO/hvm-core/tree/main#language), one of the Higher Order Company's projects, to know more about this.