code: protected String pbLhs(final Literal[] operands, final int[] coefficients) {
          assert operands.length == coefficients.length;
          final StringBuilder sb = new StringBuilder();
          final String mul = this.pbMul();
          final String add = this.pbAdd();
          for (int i = 0; i < operands.length - 1; i++) {
              if (coefficients[i] != 1) {
                  sb.append(coefficients[i]).append(mul).append(operands[i]).append(add);
              } else {
                  sb.append(operands[i]).append(add);
              }
          }
          if (operands.length > 0) {
              if (coefficients[operands.length - 1] != 1) {
                  sb.append(coefficients[operands.length - 1]).append(mul).append(operands[operands.length - 1]);
              } else {
                  sb.append(operands[operands.length - 1]);
              }
          }
          return sb.toString();
      }
docs: Returns the string representation of the left-hand side of a pseudo-Boolean constraint.
  
  @param operands     the literals of the constraint
  @param coefficients the coefficients of the constraint
  @return the string representation