Another case set is needed here, default to "unknown" is fine but in complex cases we know the type, its just the operation is not necessarily applicable. As a separate issue, we also need to have a think about type promotion, e.g. if a complex space terminal has a zero imaginary part should we promote to equivalent real type and then convert?