anchor.diff:  
       // a * -b = - (a / b)
       exp = new Divide('a', new UnaryMinus('b'));
  -    expect(exp.simplify(), new isInstanceOf<UnaryMinus>());
  -    expect((exp.simplify() as UnaryMinus).exp, new isInstanceOf<Divide>());
  +    expect(exp.simplify(), new TypeMatcher<UnaryMinus>());
  +    expect((exp.simplify() as UnaryMinus).exp, new TypeMatcher<Divide>());
       expect(
           _isVariable(((exp.simplify() as UnaryMinus).exp as Divide).first, 'a'),
           isTrue);
  
positive.code:      */
      // tan(0) = 0
      exp = new Tan(new Number(0));
      expect(exp.simplify(), new isInstanceOf<Number>());
      expect((exp.simplify() as Number).value == 0, isTrue);
  
      /*
       * Abs
       */
      exp = new Abs(new Number(0));
      expect(exp.simplify(), new isInstanceOf<Abs>());
      expect((exp.simplify() as Abs).arg, new isInstanceOf<BoundVariable>());
  
      /*
       * Ceil
       */
      exp = new Ceil(new Floor(new Variable('x')));
      expect((exp.simplify() as Floor).arg, new isInstanceOf<Variable>());
  
      /*
       * Floor
       */
      exp = new Floor(new Ceil(new Variable('x')));
      expect((exp.simplify() as Ceil).arg, new isInstanceOf<Variable>());
  
      /*
       * Sgn
       */
      exp = new Sgn(new Number(0));
      expect(exp.simplify(), new isInstanceOf<Sgn>());
      expect((exp.simplify() as Sgn).arg, new isInstanceOf<BoundVariable>());
    }
  
    /// Tests differentiation of default functions.
  
negative.code: 
      // -a * -b = a * b
      exp = new Times(new UnaryMinus('a'), new UnaryMinus('b'));
      expect(exp.simplify(), new TypeMatcher<Times>());
      expect(_isVariable((exp.simplify() as Times).first, 'a'), isTrue);
      expect(_isVariable((exp.simplify() as Times).second, 'b'), isTrue);
  
      // a * 0 = 0
      exp = new Times(new UnaryMinus('a'), 0);
      expect(exp.simplify(), new TypeMatcher<Number>());
      expect((exp.simplify() as Number).value == 0, isTrue);
  
      // 0 * a = 0
      exp = new Times(0, new Variable('a'));
      expect(exp.simplify(), new TypeMatcher<Number>());
      expect((exp.simplify() as Number).value == 0, isTrue);
  
      // a * 1 = a
  