If you have a distinction that is made by \\(A\wedge B\\) you know more then that distinction is made by A and that it is made by B, there must be a common partition into two parts, that both A and B refine.

Conversely if you use the atoms, (partitions into exactly two parts) as your element analog, then an atom refined by \\(A \vee B\\) might not be refined by either A or B.

You can see this in the lattice of partitions of the 3 element set. Both {1|2,3} and {1,2|3} distinguish between 1 and 3, but their meet, is the blob: {1,2,3} which makes no distinguishments.

Similarly, the join of {1|2,3} and {1,2|3} is {1|2|3} also refines the atom {1,3|2}.

Which all has to do with transitively closing the equivalence relation that a partition is equivalent too. (by the closure adjunction of normal logic, a function that gives you the membership function of the elements in the same box has type A->(A->Bool) while an equivalence relation has type (A,A) -> Bool, though in practice haskell almost always uses A->B->C instead of (A,B)->C because the syntax ends up being way less noisy.

Conversely if you use the atoms, (partitions into exactly two parts) as your element analog, then an atom refined by \\(A \vee B\\) might not be refined by either A or B.

You can see this in the lattice of partitions of the 3 element set. Both {1|2,3} and {1,2|3} distinguish between 1 and 3, but their meet, is the blob: {1,2,3} which makes no distinguishments.

Similarly, the join of {1|2,3} and {1,2|3} is {1|2|3} also refines the atom {1,3|2}.

Which all has to do with transitively closing the equivalence relation that a partition is equivalent too. (by the closure adjunction of normal logic, a function that gives you the membership function of the elements in the same box has type A->(A->Bool) while an equivalence relation has type (A,A) -> Bool, though in practice haskell almost always uses A->B->C instead of (A,B)->C because the syntax ends up being way less noisy.