When a signal is assigned a value that is not an element of its declared type, the result is to assign the special value *unknown* to that signal. Unknown values can occur in other circumstances (for example, in the case of a conditional with no ``else'' clause). The result of assigning the unknown value to a signal is implementation dependent. In some cases, it may be desirable to propagate unknown values. In other cases, the unknown value may be replaced by a nondeterministic choice among the values in the signal's declared type (see next section).