They are meaningful only within one flattened data stream. Objects that occur only once in the flattened object also needn't have a local name. It is also up to the flattener to choose a name for an object. We also define a way to refer to objects with global names. These are not defined by the flatten module but by its caller.
Global names are strings.
The interpretation of global names is up to the caller. I propose that the following instructions be defined. I will give them symbolic names, which makes it easier to reason about them. This is done so that the instruction stream can be read off a network connection, for instance. POP Discard the object on the stack top.