code: public Op.Pair<Double, Term> highestMembership(double x) {
          Op.Pair<Double, Term> result = new Op.Pair<Double, Term>(0.0, null);
          for (Term term : terms) {
              double y = term.membership(x);
              if (Op.isGt(y, result.getFirst())) {
                  result.setFirst(y);
                  result.setSecond(term);
              }
          }
          return result;
      }
docs: Gets the term which has the highest membership function value for
  
  `x`.
  
  @param x is the value of interest
  @return a pair containing the highest membership function value and the
  term `i` that maximizes `\mu_i(x)`.