Sunday, July 8, 2012

First steps in property-based testing of symbolic differentiation

This week Adam and Yingfu continued working on the symbolic differentiation implementation in Scala. The focus of the work was to get a property-based test up and running. The starting point was to implement a simple property - that the derivative of a monotonically increasing function (in one variable) is non-negative. The approximation of this property that was implemented uses a generator of polynomials which produces terms of odd degree and with non-negative coefficients. An issue with the current implementation is that the generator generally produces very large terms, which in turn makes the failure reports difficult to read. Future work in this direction will therefore target implementing shrinking of terms, as well as implementing additional operators which could be used to further reduce the size of the terms.