iterCompare = xyi => {
  let loneY = false;
  let loneX = false;
  for (const [_m, xc, yc] of xyi) {
    if (xc === 0n) {
      // something in y is not in x, so x is not a superset of y
      loneY = true;
    }
    if (yc === 0n) {
      // something in x is not in y, so y is not a superset of x
      loneX = true;
    }
    if (loneX && loneY) {
      return NaN;
    }
  }
  if (loneX) {
    return 1;
  } else if (loneY) {
    return -1;
  } else {
    (!loneX && !loneY) ||
      Fail`Internal: Unexpected lone pair ${q([loneX, loneY])}`;
    return 0;
  }
}
@template T
@param {Iterable<[T,bigint,bigint]>} xyi
@returns {KeyComparison}