lojix/prolog/src/main/com/thesett/aima/logic/fol/prolog/expressions/Minus.java
protected NumericType evaluate(NumericType firstNumber, NumericType secondNumber)
    {
        // If either of the arguments is a real number, then use real number arithmetic, otherwise use integer arithmetic.
        if (firstNumber.isInteger() && secondNumber.isInteger())
        {
            return new IntLiteral(firstNumber.intValue() - secondNumber.intValue());
        }
        else
        {
            return new DoubleLiteral(firstNumber.doubleValue() - secondNumber.doubleValue());
        }
    }
protected NumericType evaluate(NumericType firstNumber, NumericType secondNumber)
    {
        // If either of the arguments is a real number, then use real number arithmetic, otherwise use integer arithmetic.
        if (firstNumber.isInteger() && secondNumber.isInteger())
        {
            return new IntLiteral(firstNumber.intValue() - secondNumber.intValue());
        }
        else
        {
            return new DoubleLiteral(firstNumber.doubleValue() - secondNumber.doubleValue());
        }
    }
Evaluates the arithmetic operator on its two numeric arguments.

@param  firstNumber  The first argument.
@param  secondNumber The second argument.

@return The result of performing the arithmetic operator on its arguments.