Cancellative semigroup on a distributive lattice Let $(S,\le)$ be a distributive lattice. Is there a semigroup structure on $S$ such that $S$ is cancellative and always $(x\wedge y)(x\vee y)=xy$?
 A: Exhaustive search confirms that the 18-element lattice of down-sets of the poset
$P=(\{a,b,c,u,v,w\},\{(a,u),(a,v),(b,u),(b,w),(c,v),(c,w)\})$ is a counterexample.
EDIT: I used an ad hoc C program for the check. The code is posted below, but let me first explain how it works.
Let $L$ be a finite distributive lattice. Since the condition in the OP forces the semigroup to be commutative, and finite cancellative semigroups are groups, the condition is equivalent to the existence of an abelian group $A$, and a bijective mapping $\mu\colon L\to A$ satisfying
$$\tag{$*$}\mu(x)+\mu(y)=\mu(x\land y)+\mu(x\lor y),\qquad x,y\in L.$$
By subtracting $\mu(0)$ if necessary, we may assume without loss of generality
$$\tag{${*}{*}$}\mu(0)=0.$$
I will call a mapping $\mu$ satisfying $(*)$ and $(**)$ an $A$-valued measure on $L$. Now, how do such measures look like?
Let $(I,\le)$ be the Birkhoff dual of $L$, i.e., the poset of join-irreducible elements of $L$ under the induced order. $L$ is isomorphic to the lattice $D(I)$ of down-sets of $I$, wherefrom it is easy to see that for any sequence $\{a_i:i\in I\}$ of elements of $A$,
$$\tag{${*}{*}{*}$}\mu(x)=\sum_{i\le x}a_i$$
defines a measure on $L$. On the other hand, let $\mu$ be a measure, and define
$$a_i=\mu(i)-\sum_{\substack{j\in I\\j<i}}a_j$$
by well-founded induction on $i\in I$. Let $\mu'$ be as in $(*{*}*)$. Then $\mu'$ is a measure on $L$ that coincides with $\mu$ on join-irreducible elements. It follows by induction that $\mu(x)=\mu'(x)$ for all $x\in L$: if $x\ne0$ is not join-irreducible, we can write it as $x=y\lor z$ with $y,z<x$, hence
$$\mu(x)=\mu(y)+\mu(z)-\mu(y\land z)=\mu'(y)+\mu'(z)-\mu'(y\land z)=\mu'(x)$$
by the induction hypothesis. Thus, measures on $L$ are exactly the mappings of the form $(*{*}*)$.
In the particular case of $P$, the lattice $D(P)$ has 18 elements, and the only abelian groups of that size are $C_{18}$ and $C_6\times C_3$. The code below does a brute-force search for a sequence $\{a_i:i\in P\}$ such that the corresponding measure $\mu\colon D(P)\to A$ as in $(*{*}*)$ is injective; the choice of $A$ is controlled by uncommenting the appropriate definition of the A(x,y) macro (the first line implements addition in $C_{18}$, the second one in $C_6\times C_3$).
#include <stdio.h>
#include <assert.h>

#define N 18
#define A(x,y) ((x + y) % N)
// #define A(x,y) ((x + y - 3 * (((x % 3) + (y % 3)) >= 3)) % N)

#define TEST(s,x) { unsigned tmp = 1 << (x); if (tmp & s) { cnt++; continue; } s |= tmp; }

int main (void)
{
  unsigned a, cnt = 0;
  for (a = 1; a < N; a++) {
    unsigned b, sa = 1;
    TEST(sa, a);
    for (b = 1; b < N; b++) {
      unsigned c, sb = sa, ab = A(a, b);
      TEST(sb, b);
      TEST(sb, ab);
      for (c = 1; c < N; c++) {
        unsigned u, sc = sb, ac = A(a, c), bc = A(b, c), abc = A(ab, c);
        TEST(sc, c);
        TEST(sc, ac);
        TEST(sc, bc);
        TEST(sc, abc);
        for (u = 1; u < N; u++) {
          unsigned v, su = sc, abu = A(ab, u), abcu = A(abc, u);
          TEST(su, abu);
          TEST(su, abcu);
          for (v = 1; v < N; v++) {
            unsigned w, sv = su, acv = A(ac, v), abcv = A(abc, v), abcuv = A(abcu, v);
            TEST(sv, acv);
            TEST(sv, abcv);
            TEST(sv, abcuv);
            for (w = 1; w < N; w++) {
              unsigned sw = sv, bcw = A(bc, w), abcw = A(abc, w), abcuw = A(abcu, w), abcvw = A(abcv, w), abcuvw = A(abcuv, w);
              TEST(sw, bcw);
              TEST(sw, abcw);
              TEST(sw, abcuw);
              TEST(sw, abcvw);
              TEST(sw, abcuvw);
              assert (sw == (1 << N) - 1);
              printf ("%u,%u,%u;%u,%u,%u\n", a, b, c, u, v, w);
              return 1;
            }
          }
        }
      }
    }
  }

  printf ("no (%u)\n", cnt);
  return 0;
}

