An approach to heuristic problem-solving and theorem proving in the propositional calculus