code: public Formula not(final Formula operand) {
      if (operand.type() == LITERAL || operand.type() == FALSE || operand.type() == TRUE || operand.type() == NOT)
        return operand.negate();
      Not not = this.nots.get(operand);
      if (not == null) {
        not = new Not(operand, this);
        this.nots.put(operand, not);
      }
      return not;
    }
docs: Creates the negation of a given formula.
  <p>
  Constants, literals and negations are negated directly and returned.
  For all other formulas a new {@code Not} object is returned.
  @param operand the given formula
  @return the negated formula