An Approach to Heuristic Problem Solving and Theorem Proving in the Propositional Calculus