wren ng thornton wren at freegeek.org
Wed Feb 22 06:30:46 CET 2012

```On 2/21/12 11:27 AM, MigMit wrote:
> Ehm... why exactly don't domain products form domains?

One important property of domains is that they have a unique bottom
element. Given domains A and B, let us denote the domain product as:

(A,B) def= { (a,b) | a <- A, b <- B }

Which will inherit an ordering in the obvious/free way from the domain
orderings on A and B. Since both A and B are domains, they have bottom
elements:

exists a0:A. forall a:A. (a0  <=_A  a)
exists b0:B. forall b:B. (b0  <=_B  b)

However, there is no free ordering on:

{ (a0,b) | b <- B } \cup { (a,b0) | a <- A }

So all of those are minimal elements of (A,B) but none of them is a
unique minimum; hence (A,B) is not a domain.

The smash product gets around this because it takes all those elements
and makes them equal, just like a strict tuple would in Haskell.

 This is in the sense of domain theory. It has nothing (per se) to do
with the many other uses of the term "domain" in mathematics.

--
Live well,
~wren

```