A model space is constructed when the knowledge base is instantiated
with respect to a given scenario. Consider for example the following
scenario, which describes a `predator` population that preys on
two other populations, `prey1` and `prey2`, whilst the
two prey populations compete with one another:

(defScenario pred-prey-prey-scenario :entities ((predator :type population) (prey1 :type population) (prey2 :type population)) :relations ((predation predator prey1) (predation predator prey2) (competition prey1 prey2)))

The full specification of the model space is too unwieldy to present here but an abstract graphical representation of the model space for this scenario is shown in Figure 11. This model space contains the following knowledge:

- From each of the three populations in the scenario, a set of
three population growth models (i.e.
`exponential`,`logistic`and`other`) is derived. This inference is dependent upon a relevance assumption of the population growth phenomenon, and a model assumption that corresponds to one of the three population growth models. - From both predation relations (i.e.
`(predation predator prey1)`and`(predation predator prey2)`), and the populations related by them, a set of two predation models (i.e.`Lotka-Volterra`and`Holling`) is derived. This inference is dependent upon a relevance assumption of the predation phenomenon and a model assumption that corresponds to one of the two predation models. - From the competition relation
`(competition prey1 prey2)`, and the populations related by it, a competition model is derived. Because there is only one competition model, the inference of the competition model is only dependent upon a relevance assumption that corresponds to the competition phenomenon.

In addition to the hypergraph of Figure 11, the model space also contains a number of constraints on the conjunctions of assumptions that are consistent. As explained earlier, these stem from two sources: 1) non-composable relations and 2) purpose-required properties. An example will be given of each type.

Let `predation-phen-1` be the predation phenomenon between
`predator` and `prey1`, and `prey1-size` be the
variable representing the size of the `prey1` population. In
this example, the model fragments
`exponential-population-growth` and `Lotka-Volterra`
will each generate an equation for computing the value of a variable
representing the change in `prey1-size`. Because both
equations can not be composed, the following inconsistency is
generated:

Inconsistencies also arise from purpose-required properties. For
example, if the model fragment `predation-phenomenon` is
applicable and the predation relation is deemed relevant, then the
purpose-required property `(has-model ?pred-phen)` will become
a condition for consistency. Under certain combinations of
assumptions, this property may not be satisfied. Say, when the
Holling predation and exponential growth models are both selected, the
Holling model is not generated because there is no `?capacity`
for which `(capacity ?capacity ?pred)` is true. No predation
model is created in this case (because the `Holling` model
fragment can not be instantiated), even though the predation
phenomenon is deemed relevant under this set of assumptions. This is
inconsistent with the `has-model` purpose-required property in
the `predation-phenomenon` model fragment, and the responsible
combination of assumptions is therefore marked as nogood.