Algorithms for the parallel evaluation of expressions and arithmetic circuits may be considered as extractors of the intrinsic parallelism contained in sequential programs; far beyond the parallelism that can be read from the dependence graph, this parallelism comes from the meaning of the operators that are employed. The knowledge of their algebraic properties, such as associativity or distributivity, allows the reorganization of the computations without affecting the results. The more the algebraic structure used in the program possesses such properties, the more they can be taken into account to speed up the parallel evaluation of the program. We generalize the algorithms designed for programs over semi-rings in order to propose an algor...