concepts related to computing problems) from specific instances which implement details. This means that the program code can be written so that code doesn't have to depend on the specific details of supporting applications, operating system software, or hardware, but on a categorical concept of the solution. A solution to the problem can then be integrated into the system framework with minimal additional work. This allows programmers to take advantage of another programmer's work, while requiring only an abstract understanding of the implementation of another's work, apart from the problem that it solves. In general semantics Abstractions and levels of abstraction play an important role in the theory of general semantics originated by Alfred Korzybski. Anatol Rapoport wrote "Abstracting is a mechanism by which an infinite variety of experiences can be mapped on short noises (words)." In history Francis Fukuyama defines history as "a deliberate attempt of abstraction in which we separate out important from unimportant events". In linguistics Researchers in linguistics frequently apply abstraction so as to allow an analysis of the phenomena of language at the desired level of detail. A commonly used abstraction, the phoneme, abstracts speech sounds in such a way as to neglect details that cannot serve to differentiate meaning. Other analogous kinds of abstractions (sometimes called "emic units") considered by linguists include morphemes, graphemes, and lexemes. Abstraction also arises in the relation between syntax, semantics, and pragmatics. Pragmatics involves considerations that make reference to the user of the language; semantics considers expressions and what they denote (the designata) abstracted from the language user; and syntax considers only the expressions themselves, abstracted from the designate. In mathematics Abstraction in mathematics is the process of extracting the underlying structures, patterns or properties of a mathematical concept or object, removing any dependence on real-world objects with which it might originally have been connected, and generalizing it so that it has wider applications or matching among other abstract descriptions of equivalent phenomena. The advantages of abstraction in mathematics are: It reveals deep connections between different areas of mathematics. Known results in one area can suggest conjectures in another related area. Techniques and methods from one area can be applied to prove results in other related area. Patterns from one mathematical object can be generalized to other similar objects in the same class. The main disadvantage of abstraction is that highly abstract concepts are more difficult to learn, and