What a fantastic question, [Pete](https://forum.azimuthproject.org/discussion/comment/18246/#Comment_18246)! I don't know what the answer is, but there may be some leads to follow if we dig at it some more.

There are a couple of ways that a set can fail to have a join. As you noted, one is that there is simply no common upper bound on the set, and this can be rectified by including an explicit top element \\(\top\\). But another is that there can be _too many_ least upper bounds. Category theorists may be okay with this, as working "up to isomorphism" seems to be standard practice (see the [principle of equivalence](https://ncatlab.org/nlab/show/principle+of+equivalence)), but I do rather appreciate the assurance that I'm working with a uniquely determined object. (I could justify this as a conservative way to avoid breaking the principle of equivalence, since identical objects are necessarily equivalent and cannot be distinguished.)

So let's consider how to introduce unique "imaginary" joins. From real analysis, we know that one way to [construct the reals](https://en.wikipedia.org/wiki/Construction_of_the_real_numbers#Construction_from_Cauchy_sequences) is by using [Cauchy sequences](https://en.wikipedia.org/wiki/Cauchy_sequence) of rationals. This essentially occurs by identifying all sequences of a certain kind (i.e. Cauchy sequences) that do not converge to a rational value, and adding enough points so that they \\(do\\) converge (to one of these new values). We can try something similar.

Consider a subset \\(X\\) of our preorder. We want to define the join \\(\bigvee X\\) of our subset somehow, even if there doesn't exist an actual element that is the unique join. Well, the set of all upper bounds of \\(X\\) is a thing (even if it's just the empty set \\(\emptyset\\)). This set is an [upper set](https://en.wikipedia.org/wiki/Upper_set); we might consider this to be the "certain kind of" set analogous to Cauchy sequences that we want to use to complete our preorder. We want every such set to have an infimum -- a limit point of the set -- giving the least upper bound of \\(X\\). As with the real numbers, we might investigate taking the collection of all upper sets to be our completed preorder.

In fact, this condition is precisely what characterizes [directed complete partial orders](https://en.wikipedia.org/wiki/Complete_partial_order), or "dcpo"s. The quote from Wikipedia below shows some more of the connections:

> Requiring the existence of directed suprema can be motivated by viewing directed sets as generalized approximation sequences and suprema as limits of the respective (approximative) computations. This intuition, in the context of denotational semantics, was the motivation behind the development of domain theory.

It would be very interesting to see if there are any results giving a means of producing a dcpo from a preorder! My hunch is that it would only really make sense for posets, and even then there might need to be some extra conditions before such a procedure gives meaningful results.

(**EDIT:** It would probably make more sense to consider the _lower set_ \\(\operatorname{\downarrow}X\\), rather than the upper set of upper bounds of \\(X\\), too. Seems like an [open set](https://en.wikipedia.org/wiki/Open_set) / [closed set](https://en.wikipedia.org/wiki/Closed_set) kind of distinction, but it might matter here.)

There are a couple of ways that a set can fail to have a join. As you noted, one is that there is simply no common upper bound on the set, and this can be rectified by including an explicit top element \\(\top\\). But another is that there can be _too many_ least upper bounds. Category theorists may be okay with this, as working "up to isomorphism" seems to be standard practice (see the [principle of equivalence](https://ncatlab.org/nlab/show/principle+of+equivalence)), but I do rather appreciate the assurance that I'm working with a uniquely determined object. (I could justify this as a conservative way to avoid breaking the principle of equivalence, since identical objects are necessarily equivalent and cannot be distinguished.)

So let's consider how to introduce unique "imaginary" joins. From real analysis, we know that one way to [construct the reals](https://en.wikipedia.org/wiki/Construction_of_the_real_numbers#Construction_from_Cauchy_sequences) is by using [Cauchy sequences](https://en.wikipedia.org/wiki/Cauchy_sequence) of rationals. This essentially occurs by identifying all sequences of a certain kind (i.e. Cauchy sequences) that do not converge to a rational value, and adding enough points so that they \\(do\\) converge (to one of these new values). We can try something similar.

Consider a subset \\(X\\) of our preorder. We want to define the join \\(\bigvee X\\) of our subset somehow, even if there doesn't exist an actual element that is the unique join. Well, the set of all upper bounds of \\(X\\) is a thing (even if it's just the empty set \\(\emptyset\\)). This set is an [upper set](https://en.wikipedia.org/wiki/Upper_set); we might consider this to be the "certain kind of" set analogous to Cauchy sequences that we want to use to complete our preorder. We want every such set to have an infimum -- a limit point of the set -- giving the least upper bound of \\(X\\). As with the real numbers, we might investigate taking the collection of all upper sets to be our completed preorder.

In fact, this condition is precisely what characterizes [directed complete partial orders](https://en.wikipedia.org/wiki/Complete_partial_order), or "dcpo"s. The quote from Wikipedia below shows some more of the connections:

> Requiring the existence of directed suprema can be motivated by viewing directed sets as generalized approximation sequences and suprema as limits of the respective (approximative) computations. This intuition, in the context of denotational semantics, was the motivation behind the development of domain theory.

It would be very interesting to see if there are any results giving a means of producing a dcpo from a preorder! My hunch is that it would only really make sense for posets, and even then there might need to be some extra conditions before such a procedure gives meaningful results.

(**EDIT:** It would probably make more sense to consider the _lower set_ \\(\operatorname{\downarrow}X\\), rather than the upper set of upper bounds of \\(X\\), too. Seems like an [open set](https://en.wikipedia.org/wiki/Open_set) / [closed set](https://en.wikipedia.org/wiki/Closed_set) kind of distinction, but it might matter here.)