Mathematical Thinking Problem Solving and Proofs