You do so by combining the data structures together to create larger structures and then defining what concept they represent. These larger structures and their descriptions are called metamodels . In the programming world, a metamodel is a model that represents a set of models. The same is true of Prism metamodels. A Prism metamodel describes some set of concepts and explains what their models look like.
Every positive integer is represented by exactly one model.
The model represents the same integer as the resulting binary number. Although the above description may seem tedious, in reality all of the low-level concepts such as integers, characters, and bytes already have metamodels. You don't have to redefine them in your metamodels, which frees you to focus on metamodels for more complex concepts such as programs. In practice, defining a program metamodel is a lot like defining a new language, except that you focus a lot more on semantics than syntax. In Prism's global heap, models are tagged with ID's that tell you which metamodel to use to interpret the model.