Dynamic evaluation is a technique for producing multiple results according to a decision tree which evolves with program execution. Sometimes it is desired to produce results for all possible branches in the decision tree, while on other occasions it may be sufficient to compute a single result which satisfies certain properties. This technique finds use in computer algebra where computing the correct result depends on recognising and properly handling special cases of parameters. In previous work, programs using dynamic evaluation have explored all branches of decision trees by repeating the computations prior to decision points. This paper presents two new implementations of dynamic evaluation which avoid recomputing intermediate results. The first approach uses Scheme “continuations” to record state for resuming program execution. The second implementation uses the Unix “fork” operation to form new processes to explore alternative branches in parallel. These implementati...
Peter A. Broadbery, T. Gómez-Díaz, S