code: @Override
      public double membership(double x) {
          if (Double.isNaN(x)) {
              return Double.NaN;
          }
  
          if (Op.isLt(x, vertexA) || Op.isGt(x, vertexC)) {
              return height * 0.0;
          } else if (Op.isEq(x, vertexB)) {
              return height * 1.0;
          } else if (Op.isLt(x, vertexB)) {
              return height * (x - vertexA) / (vertexB - vertexA);
          } else {
              return height * (vertexC - x) / (vertexC - vertexB);
          }
      }
docs: Computes the membership function evaluated at `x`
  
  @param x
  @return `\begin{cases} 0h & \mbox{if $x \not\in [a,c]$}\cr 1h & \mbox{if
  $x = b$}\cr h (x - a) / (b - a) & \mbox{if $x < b$} \cr h (c - x) / (c - b)
  & \mbox{otherwise} \end{cases}`
  
  where `h` is the height of the Term, `a` is the first vertex of the
  Triangle, `b` is the second vertex of the Triangle, `c` is the
  third vertex of the Triangle