Symbolic computation can provide the computational power to discover and understand deep and rich theorems.
Many applications arise in number theory, group theory and combinatorics.
In this talk we will survey a number of algorithms for solving such Diophantine systems and for computing normal forms which describe the structure of all solutions. The emphasis here will be on provable efficiency, both in terms of time and memory use. We will also discuss some important applications which require the solution of systems which are extremely large but sparse, i.e., many of the coefficients are zero. For these it becomes essential to exploit this sparsity, and we will demonstrate how recent algorithms for solving large sparse systems over finite fields can be adapted to this case. At first glance it seems that theorem provers could provide support for computer algebra systems by verifying their algorithms.