This work demonstrates that theorem-proving methods can lead to program synthesis and algorithm implementation by using pairs of logic laws: a deductive law for proving the theorem and a constructive law for synthesizing the program or algorithm. A systematic examination of deductive laws and of constructive laws is presented. The set of all possible pairs of laws provides us with a tool for classifying the different approaches for materializing algorithms...