Reconstruction of algorithms from memory snapshots of their execution

A system is described which utilizes a trace of memory snapshots taken during the execution of an algorithm. With such traces and a description of the environment in which the algorithm was executed, the algorithm can be reconstructed. In the first phase, decomputation of the results which appear in the snapshots is performed. Decomputation is the process which produces, for each result in the trace, the set of possible instructions which could have been its cause. The construction phase then uses static and dynamic information obtained from the trace to aid in synthesizing the algorithm. A number of experiments which have been performed with system are also described.