a,b,c = symmath.vars('a', 'b', 'c')
GOOD time: 0.057000ms
stack: size: 0

    x,y,z = symmath.vars('x', 'y', 'z')
    GOOD time: 0.061000ms
    stack: size: 0


      expr = a * x + b * y + c * z
      GOOD time: 0.200000ms
      stack: size: 0

        assert(expr:replace(a * x, 1) == 1 + b * y + c * z)
        GOOD time: 0.715000ms
        stack: size: 0

          assert(expr:replace(b * y, 1) == 1 + a * x + c * z)
          GOOD time: 0.827000ms
          stack: size: 0

            assert(expr:replace(c * z, 1) == 1 + a * x + b * y)
            GOOD time: 0.538000ms
            stack: size: 0

              assert(expr:replace(a * x + b * y, 1) == 1 + c * z)
              GOOD time: 0.577000ms
              stack: size: 0

                assert(expr:replace(a * x + c * z, 1) == 1 + b * y)
                GOOD time: 0.342000ms
                stack: size: 0

                  assert(expr:replace(b * y + c * z, 1) == 1 + a * x)
                  GOOD time: 0.766000ms
                  stack: size: 0

                    assert(expr:replace(b * y + c * z, 1) == 1 + a * x)
                    GOOD time: 0.383000ms
                    stack: size: 0

                      assert(expr:replace(a * x + b * y + c * z, 1) == symmath.Constant(1))
                      GOOD time: 0.268000ms
                      stack: size: 0