Analogical thinking involves mapping relationships between concepts in different domains. An analogy asserts that a relational structure in one domain can be applied to another domain. Structure mapping theory provides interpretation rules for analogy, such as discarding object attributes and preserving relations. Analogical reasoning serves functions like problem solving, argumentation, and understanding unfamiliar topics. Constraint satisfaction models of analogy mapping, like ACME, represent correspondences between concepts as a constraint network to identify feasible mappings. Improvements could make the models handle richer semantics, re-representations, many-to-many mappings, and flexible constraints.