isTopology top = hasEmpty && hasFull && hasIntersections && hasUnions where

hasEmpty = top empty

hasFull = top full

hasIntersections = forevery ((p,q) -> (top p && top q)

`implies`

top (intersection p q))hasUnions = forevery ((p,q) -> (top p && top q)

`implies`

top (union p q))
Should that last line not read:

hasUnions = forevery ((p,q) -> (top p || top q) `implies`

top (union p q))

?

]]>