1. A method for simplifying a programming element that is compilable into instructions for operating a data processing device, the programming element having at least one part, comprising: simplifying the programming element until all of the at least one part of the programming element reach a first stage to create a current stage simplified programming element; determining at least one propagator for the current stage simplified programming element, the propagator described in the programming element, associating at least one projection with the current stage simplified programming element using the at least one determined propagator; simplifying the current stage simplified programming element, based at least in part on the current stage simplified programming element and the associated projections, until all of the at least one part of the current stage simplified programming element reach a next stage to create a next stage simplified programming element.