Reasoning by Analogy