Analogy-making as a Core primitive in the software engineering toolbox

  title={Analogy-making as a Core primitive in the software engineering toolbox},
  author={Matthew Sotoudeh and Aditya V. Thakur},
  journal={Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software},
  • Matthew Sotoudeh, Aditya V. Thakur
  • Published 2020
  • Computer Science
  • Proceedings of the 2020 ACM SIGPLAN International Symposium on New Ideas, New Paradigms, and Reflections on Programming and Software
An analogy is an identification of structural similarities and correspondences between two objects. Computational models of analogy making have been studied extensively in the field of cognitive science to better understand high-level human cognition. For instance, Melanie Mitchell and Douglas Hofstadter sought to better understand high-level perception by developing the Copycat algorithm for completing analogies between letter sequences. In this paper, we argue that analogy making should be… Expand

Figures from this paper


Metacat: a self-watching cognitive architecture for analogy-making and high-level perception
Metacat is able to monitor its own processing, allowing it to recog- nize, remember, and recall patterns that occur in its “train of thought” as it makes analogies, giving the program a high degree of flexibility and self-control. Expand
A heuristic program to solve geometric-analogy problems
A program now in existence which is capable of solving a wide class of the so-called 'geometric-analogy' problems frequently encountered on intelligence tests, which consists of a set of labeled line drawings. Expand
Using Bridging Analogies and Anchoring Institutions to Seal with Students' Preconceptions in Physics
Lessons were designed to deal with students' alternative conceptions in three areas of mechanics: static normal forces, frictional forces, and Newton's third law for moving objects. InstructionalExpand
Learning text editor semantics by analogy
A formal method of analysis is proposed that compares operators in two problem spaces and generates misconceptions and the comparison of these predicted misconceptions with verbal comments, error data, and task difficulty lends support to this analysis. Expand
The Structure-Mapping Engine: Algorithm and Examples
SME has been built to explore Gentner's structure-mapping theory of analogy, and provides a "tool kit" for constructing matching algorithms consistent with this theory, making it a useful component in machine learning systems as well. Expand
Analogical Mapping by Constraint Satisfaction
A theory of analogical mapping between source and target analogs based upon interacting structural, semantic, and pragmatic constraints is proposed here and is able to account for empirical findings regarding the impact of consistency and similarity on human processing of analogies. Expand
The Copycat project: a model of mental fluidity and analogy-making
The current version of Copycat is not able to create two simultaneous bonds between two given objects, so the program is at present unable to get what many people consider to be the best answer to Problem 6. Expand
Programming by examples: applications, algorithms, and ambiguity resolution
This work presents a divide-and-conquer based search paradigm that inductively reduces the problem of synthesizing a program with a certain top-level operator to simpler synthesis problems over its sub-programs by leveraging the operator's inverse semantics. Expand
Structure‐Mapping: A Theoretical Framework for Analogy*
A theory of analogy must describe how the meaning of on analogy is derived from the meonings of its parts. In the structure-mapplng theory, the interpretation rules ore characterized OS implicitExpand
Automating string processing in spreadsheets using input-output examples
The design of a string programming/expression language that supports restricted forms of regular expressions, conditionals and loops is described and an algorithm based on several novel concepts for synthesizing a desired program in this language is described from input-output examples. Expand