  A systematic way of defining variants of a modeling language is useful for
adapting the language to domain or project specific needs. Variants can be
obtained by adapting the syntax or semantics of the language. In this paper, we
take a formal approach to define modeling language variability and show how
this helps to reason about language variants, models, and their semantics
formally. We introduce the notion of semantic language refinement meaning that
one semantics variant is implied by another. Leaving open all variation points
that a modeling language offers yields the notion of the inner semantics of
that language. Properties of the modeling language which do not depend on the
selection of specific variants are called invariant language properties with
respect to a variation point. These properties consequently follow from the
inner semantics of a model or language.
