"By reflexion general ideas are acquired" (Locke).
"Reflexion is the instrument of philosophy" (Hegel).
"Reflexion is the way to reach the concepts" (Kant).
"Reflexivity is the very essence of consciousness" (Frederick Peters).
The Reflexion
There are many theories about reflexion, a term derived from the Latin reflexio. We highlight the following:
To reflex is to re-analyze a subject, in order to make a more appropriate decision. It is a "re-reflexion", a change of direction, a "turning back" the attention from what has already been seen to contemplate the subject from a higher point of view to analyze it in a broader context, looking for connotations and new aspects or points of view not previously considered.
To reflex is to think about our thoughts, to observe our thoughts or to be aware of our thoughts. It is a way of questioning or subjecting our own thoughts to criticism because it is possible that the ideas conceived are wrong or because it is possible that there are better ones.
Reflexing is the process of thinking about our experiences and assigning meanings to them. Reflexion is linked to learning, for we do not learn from our experience but from assigning meanings. The metaphor eating/digesting has been proposed for experiencing/reflexing.
Reflexion is introspection: a self-analysis of mental states and processes. It is a faculty specific to human beings and distinguishes us from animals.
Reflexion is the same as apperception.
Perception is associated with the external senses (the objective). Apperception is associated with the internal senses (the subjective). According to the dictionary of the RAE, to apperceive is to perceive something by recognizing it or interpreting it with reference to something already known. For Leibniz, apperception is the awareness of perception.
Reflexion is a dialectic between the particular (the perceived) and the general or universal (the meaning of the perceived). The mechanism that connects both levels is consciousness, and the result of that union produces awareness. In general, consciousness is the mechanism that unites the opposite levels: the objective and the subjective, the internal and the external world, the conscious and the unconscious.
Reflexion is the same as consciousness.
Reflexivity is the true essence of consciousness. Consciousness has a reflexive nature since it contemplates at all times its own essence. Without reflexivity there is no consciousness. Sometimes the term "apperception" is used as a synonym for consciousness.
In Buddhist philosophy, Svasamvedana (and also Svasamvitts) is a term referring to the self-reflexive nature of consciousness. A Tibetan metaphor for the reflexivity of consciousness is that of a lamp in a dark room that, in the act of illuminating objects in the room, also illuminates itself.
Reflexion is the same as abstraction, that is, going from the particular to the general. Transcendental reflexion is the supreme reflexion or abstraction, which leads to philosophical categories.
Reflexion vs. Reflexivity
A distinction must be made between reflexion and reflexivity. Reflexivity is a generic mechanism that appears in many domains and consists of a circular relationship of an entity with itself or its environment. An entity is continuously interacting with its environment and both reflect each other. Reflexion (mental) is a type of reflexivity between the subject and the medium with which it interacts.
A system is self-reflexive if it is self-sufficient in the process of reflexion. Self-reflexion is a mechanism used by nature to optimize its resources to the maximum. The universe is self-reflexive. The mind, reflexion of the universe, considered in itself, is also self-reflexive.
Orders of reflexivity
When a subject receives data or information, perceives or experiences, immediately a reflexive process takes place, since the subject tries to interpret it, that is, to assign a meaning to it. The mind always goes from the particular to the general, trying to fit an experience into a conceptual category. The greater the novelty of the input received, the greater the reflexive process. This is first-order reflexivity. If he subsequently reflexes on his reflexion, then it is second-order reflexion. And so on.
A thermostat is a first-order reflexive system because it automatically adjusts the temperature according to a reference temperature t, according to a rule. If the reference temperature t is changed, the system that does so would be a reflexive system of order 2.
Direct and reflexive knowledge
Direct knowledge is automatic, where there is no distinction between subject and environment, and therefore no reflexion. Knowledge is reflexive when the subject is confronted with a new problem that produces a certain imbalance and has to adapt or modify his conceptual schemes to achieve a new equilibrium.
In classical Greece, a distinction was made between knowledge doxa (vulgar or ordinary knowledge, not subjected to critical reflexion) and episteme (knowledge elaborated with rigor).
Conceptual Reflexion
Conceptual reflexion is applying a concept on itself. The result is a concept of order 2. By reapplying the concept on the concept of order 2, we obtain a concept of order 3, etc. Some examples of order 2 concepts are:
Entities.
Algorithm of algorithms, set of sets, data of data, derivative of derivatives, dictionary of dictionaries, function of functions, group of groups, infinite infinite, infinite infinite, information of information, book of books, list of lists, object of objects, rule of rules, sequence of sequences, meaning of meaning, variable of variables.
Sciences.
Cybernetics of cybernetics, science of science, philosophy of philosophy, language of language, logic of logic, mathematics of mathematics.
A distinction must be made between conceptual reflexion and autological concepts. Concepts that can be applied to themselves are called "autological" and those that cannot be applied to themselves are called "heterological". Usually these concepts are adjectives. Examples of autological concepts are "polysyllabic" (it is a polysyllabic word) and "esdrújula" (it is an esdrújula word). Examples of heterological concepts are "blue" (it is not blue), "round" (it is not round) and "German" (it is not German).
Reflexive levels
In conceptual reflexion there are two levels:
Base. It corresponds to the initial or first order concept.
The prefix "meta" means "beyond". At the philosophical level it is identified with transcendence since the appearance of Aristotle's Metaphysics. At the conceptual level it is the first level of reflexion.
Evidently, there can be more levels, being possible to build the so-called "reflexive tower", with the levels base, meta, meta-meta, meta-meta-meta, etc., in which each level or conceptual layer refers to the level immediately below, with concepts of order 1, 2, 3, etc.
Reflexive tower
Reflexive Systems
A reflexive system is a system with base and target levels.
The base level is the level of system functionality, consisting of one or more processes.
The meta level is the system that obtains information, at all times, from the base level, i.e. it obtains meta-information. It uses this meta-information to observe, control, monitor, adapt or dynamically manage the base system as a whole or some aspect of it. When the meta-level observes or inspects the base level, without modifying it, the meta-level process is called "introspection".
Variants of reflexive systems
A system is mutually reflexive when a change in one of the two levels (base or goal) is immediately reflected in the other and vice versa. The scheme would be as follows:
Mutually reflexive system
A representative image of this type of system is Escher's drawing of two hands drawing each other.
A self-reflexive system is one that acts on itself, that is, the base and goal levels are confused.
Representative images or symbols of a self-reflexive system are the Moebius strip (a single-sided, single-contour surface) and the Ouroboros, the snake that bites its own tail. Both can be considered to be symbols of consciousness, as they unite opposites.
Moebius strip
Ouroboros
Ideally, there should be unification between base and all possible target levels, where all can communicate with each other, without restrictions. Therefore, the most interesting systems are the self-reflexive ones.
Linguistic Reflexion
At the linguistic level, reflexivity is the ability of language to refer to itself. Every natural language has a reflexive dimension, so the metalinguistic capacity is universal to all natural languages. And it is a capacity specific to human beings.
In logic and philosophy of language, a metalanguage is a language that is used to talk about another language (called an "object language").
A metalanguage can be the same or different from the object language.
A metalanguage may itself be the object language of another higher-order metalanguage, and so on.
There may be different metalanguages to deal with different aspects of the same object language. For example, a grammar is a metalanguage that describes the sentence structure of an object language.
The term "metalanguage" was introduced by Alfred Tarski in the 1930s as a solution to semantic paradoxes and inconsistencies in natural language, such as the liar's paradox ("This sentence is false"). He distinguished between object language and metalanguage. Object language is the base language. Metalanguage is the language that talks about the object language. To distinguish the two types of languages, Tarski enclosed object language sentences in single quotation marks (apostrophes). For example, "The sentence 'snow is white' is true if snow is white" is a reflexive sentence because it speaks of the language itself. The predicate "true" belongs to the metalanguage. According to Tarski, no language can contain its own truth predicate.
Bertrand Russell proposed in his introduction to Wittgenstein's Tractatus the need to establish a hierarchy of languages, based on his "type theory", such that a language can only refer to lower-level languages. A language cannot refer to the language itself without falling into inconsistencies or logical paradoxes.
Reflexive Programming Languages
A reflexive programming language is a language that has linguistic resources for the base level and for the target language. The reflexion can be explicit or implicit:
Explicit reflexion occurs when explicitly commanded by the program.
Implicit reflexion occurs when the reflexive process is automatically triggered when a certain event occurs.
A self-reflexive programming language is one that can reference itself, that is, it can reference the language's own resources with the language's own resources. The base and meta levels are confused. With self-reflexive language we can build self-reflexive systems.
Computers are not conscious, they do not "know" what they are doing, they act mechanically according to the previously designed program. Computer programs are not conscious, but they can act with reflexive mechanisms if the programming language has those reflexive resources.
Meta-circular languages and systems
A meta-circular language is a self-reflexive language that can be extended by the language itself. A meta-circular system is a system that can be extended by its own resources. For example:
A compiler that uses the progressive development technique (bootstrapping).
An interpreter or compiler of a language written in that language (or a subset of it).
The term "meta-circular" was first used by John McCarthy in an implementation of the Lisp language in Lisp.
Reification and reflexion
Reification is closely related to reflexion, for reification is a type of reflexion.
In the context of programming languages, reification is a process by which something that was implicit or unexpressed at runtime is explicitly formulated and made available for handling by the language as data. There are two types:
Refication of static semantics. For example, discovering whether a certain expression exists in the program code,
Reification of dynamic semantics. For example, knowing when a variable has a certain value, when an assignment of a certain type occurs, when a certain function is used, and so on.
The reification mechanism can be contemplated in the programming language and used in the program design.
Reflexive languages
Languages that support reflexion are mainly artificial intelligence languages. Languages with different reflexive properties are, for example:
Lisp and Scheme (Lisp dialect) support reflexive functions.
CLOS (an object-oriented version of Lisp).
Open C++. Version of C++ with a Metaobject Protocol. You can redefine the syntax and behavior of objects, as well as develop extensions to C++.
Java. Reflexion allows introspection (examining oneself) and manipulating internal properties of the program. For example, get the names of all available classes.
ABCL (Actor-Based Concurrent Language). Object-oriented language, allows to create objects at the meta level.
KRS. Every object is linked to a meta-object that represents certain characteristics of the object.
Dylan. Functional, object-oriented, dynamic language with reflexion.
Teiresias. Rule-based expert system, including meta-rules. It was the first system in which two domain levels were clearly differentiated: object-level knowledge and control knowledge (meta-level knowledge).
The problem with these languages is twofold:
Reflexion is usually associated with a single paradigm, i.e., reflexion is not generic. Depending on the type of paradigm used, there are meta-programs, meta-functions, meta-rules, meta-objects, meta-procedures, and so on.
There is no self-reflexion, i.e., the base and meta levels are clearly differentiated.
Some object-oriented languages include at the meta level a single monolithic meta-object, with consequent complexity of use. Others allow multiple meta-objects, but require a meta-level protocol: a set of rules for handling and communicating meta-objects. They are usually limited to reflexion on variable values.
In some object-oriented programming languages, such as Java, reflexion allows run-time introspection of classes, interfaces, attributes, and methods, without knowing the names.
Homoiconic languages
A homoiconic language −from the Greek homo, equal, and icon, representation− is one in which the representation of the code is the same as that of the data, i.e., the syntax and semantics are the same. This qualifier was first used by Alan Kay in his 1968 doctoral thesis. This property is related to consciousness, to the union of opposites, in this case, data and code.
An example of a homoiconic language is Lisp, which uses the list as the only system for representing code and data. Lists can be nested.
Other languages that are considered homoiconic are: Curl, Elixir, Io, Ioke, Julia, Mathematica, Prolog, Rebol, Red, Snobol, Tcl, Xslt, Refal, and Wolfram.
Languages that follow the von Neumann architecture are homoiconic, since the code is stored in memory and can be treated as data. It was precisely this idea, that of storing code in memory, that was the great driving force behind the development of computing in general and programming languages in particular.
The advantages of a homoiconic language are many:
It facilitates metaprogramming, since data can be converted into programs.
Facilitates code modification, since the code is seen as data.
Facilitates, in general, reflexion, since data representing code can be passed from the base level to the target level.
Facilitates language extension with the language itself.
Advantages of reflexion in programming
The reflexive mechanism in programming provides enormous advantages. We can highlight the following:
It simplifies developments. Developments with self-reflexive languages are simpler and more direct. Reflexive mechanisms involve greater expressive power, greater freedom, greater flexibility and greater creativity.
Greater ease in making modifications. For example, different versions or adaptations of a program could be created with the same code base. This is close to the old ideal of "open programming".
A higher degree of modularity is achieved by being able to create modules at higher levels.
Allows recursion at base, meta or both levels.
Facilitates program testing and problem detection.
Allows to define much more sophisticated control mechanisms than traditional structures, since control decisions can be made based on the state of the base system.
Allows meta-programming, i.e. the development of programs that generate programs.
Allows dynamic and evolutionary programming, i.e. programs that self-modify and evolve during execution.
Allows the integration of different programming paradigms, such as event-driven, aspect-driven, agent-driven programming, etc.
Facilitates the development of applications for internal protection (fault tolerance), defense against external attacks, automatic backupi>, etc.
It facilitates the development of concurrent applications, since operations related to concurrent access to resources can be intercepted. The process at the target level acts as a higher instance that manages and solves this type of problems.
It facilitates the development of distributed applications, with location transparency, since operations related to elements located in other environments or spaces can be intercepted (from the target level).
In short, reflexion in programming makes it possible to relate and integrate topics or areas as disparate as operating systems, language definition, compilers and interpreters, program debugging, meta-programming, protection against external attacks, etc. In addition, due to the possibility of implementing different programming paradigms, it is considered as a new programming paradigm: reflexion-oriented programming.
Self-Reflexion in MENTAL
Conceptual Reflexion.
MENTAL supports conceptual reflexion, which is really semantic self-combination. For example, set of sets, sequence of sequences, functions of functions, rules of rules, generic expressions of generic expressions, etc.
Homoiconic language.
In MENTAL the same primitives are always used to represent expressions, both for code and data. Every expression is evaluated and the result may or may not be the same expression. If the expression is self-evaluating, the expression is data. For an expression that is code to be self-evaluating, it is indicated by the "no evaluation" operator. This system is the opposite of the one used by Lisp, since this language assumes that every expression is data, and for it to be evaluated, the function Eval (evaluate) must be used.
Just as the idea of storing code in memory was the driving force behind the development of computing, the homoiconic idea, the idea of making the representation of code and data the same, must also be a driving force of evolution.
Metalanguage.
MENTAL is also a meta-language, since it is a language that allows the definition of new languages. Moreover, it blurs the boundary between the language itself, the definition of new languages and the development of applications.
Target level.
MENTAL is a language that directly supports reflexivity through the universal semantic primitive "Generalization". Using generic expressions (parameterized or not) we construct the meta level. Higher order meta levels are implemented through hierarchies of generic expressions.
The "Generalization" primitive is the primitive that allows the integration of all programming paradigms. Functions, rules, events, aspects, agents, etc. can be expressed. And also higher order expressions: functions of functions, rules of rules, etc. The primitive belongs to the language and also to the metalanguage. Language and metalanguage are the same.
Self-reflexion.
MENTAL is a language of consciousness and is therefore self-reflexive. It can refer to one's own language resources with the same language resources. In language, the base and meta levels are confused, for they are the same. The base level and all target levels can communicate/modify without restriction. For example:
〈( f(x) = (x*x + k) )〉
f(3) // ev. 9+k
(k = 7) // the target level is indirectly modified through k
f(3) // ev. 16
Meta-circularity.
MENTAL is a meta-circular language: it can be extended with the language itself.
Explicit reflexion.
The base level explicitly invokes the target level when using particular expressions (instances) of previously defined generic expressions. For example, when we have the function (meta level).
〈( f(xy) = (x+yx*y) )〉
and we use it at the base level by, for example, f(3 4). The function call is the call to a higher instance that performs an auxiliary or secondary process, after which the system continues the main process of the base level. Another example is:
〈( c = a+b )〉 // calculate c always as a+b
((a = 3) (b = 4))
c // ev. 7
(a = 10)
c // ev. 14
Implicit reflexion.
The target level observes the base level by specifying conditional generic expressions (parameterized or not) to detect events produced in the base level, e.g., variable values, function invocation, etc. When the event occurs, the target level takes control and performs the corresponding action, which may even be the modification of the base level or the target level itself. It then returns control to the base level. For example,
〈( x>4 → (x = 4) )〉 // if x is greater than 4, make it equal to 4
(x = 7)
x // ev. 4
Reification of static semantics.
MENTAL reifies static semantics. The structure of the code of a program is the same as that of the data, being able to obtain information from it or to modify it dynamically. Example: If the expression (x = 3) exists in the abstract space, carry out the process p:
〈( (x = 3)° → p)〉
This mechanism is analogous to Tarski's notation, which uses apostrophes to refer to the base language.
Reification of dynamic semantics.
MENTAL also reifies dynamic semantics. The target level observes the execution of a program. To do so, it specifies a condition and its associated action. Example:
Count the number n of times the value of the variable v is updated:
Universal reflexion.
The universal reflexion is that everything is a manifestation (or reflexion) of the same primary archetypes. Since everything has the same structure, everything is reflected in everything, like the pearls of Indra. This common structure is a reflexion of consciousness as the supreme simplicity.
Addenda
Reflexion and rationale
Reflexion has played an important role in foundationalist theories of mathematics and computer science, as they have helped to reveal inconsistencies and prove properties. There are three historical cases:
In 1901, Russell demonstrated that Frege's proposal to ground set theory in logic was nonsensical by discovering an inconsistency with the following self-referential expression: "Is the set of sets that are not members of themselves members of themselves? After this discovery, in order to circumvent this problem, set theory had to be formulated axiomatically.
In 1931, Gödel proved the incompleteness of formal axiomatic systems formalizing arithmetic. He used the self-referential expression "This sentence is unprovable".
The Universal Turing machine is a machine U which has as input a concrete Turing machine A (which encodes an algorithm) with its data. Turing proved that the halting problem of a Universal Turing machine is incomputable, that is, there is no meta-algorithm H capable of determining whether a concrete algorithm A will terminate with a result. To do so, he used the following self-referenced expression: does H stop with input data H.
Reflexivity applications
Psychology.
Reflexivity is inherent in psychology, as psychologists use consciousness to investigate the nature of consciousness. In cognitive psychology, reflexivity has given rise to the field of meta-cognition, which has had great influence on artificial intelligence.
Linguistics.
In natural languages, reflexion is generally called "self-reference" and occurs when a sentence refers to itself. Hilbert called these expressions, "eigen" expressions or self-expressions. For example, "This sentence is false," "This sentence is undemonstrable," "This sentence has five words."
Self-referential sentences are paradoxical when they involve two values, as in the case of the first two examples, where the values are true/false and provable/undemonstrable, respectively.
Biology.
"Autopoiesis" (from the Greek poiesis, production) is a neologism created in 1971 by Humberto Maturana and Francisco Varela to explain the organization of biological systems as self-referent entities. Self-reference is a type of autonomy. A living being is capable of self-regeneration through a circular, self-referential or reentrant organization. An autopoietic system continuously produces itself using resources from the environment, so that producer and product, doing and being, subject and object, are the same thing. Varela developed a calculus based on three values: the two values of classical logic plus a third value: self-reference.
Literature.
In literature, the book "Gödel, Escher, Bach. An Eternal Graceful Loop," by Douglas R. Hofstadter [1987] refers to itself and in it deals with the theme of unified consciousness, attempting to blur the boundaries between form and content, between syntax and semantics, and between medium and message.
Economy.
The "circular economy" is being talked about and promoted to combat climate change and move towards a more sustainable world. The circular economy is based on a production and consumption model based on closing flows and reusing waste.
Religion.
The supreme reflexion reflects the infinity of God through his name: "I am who I am". (Exodus 3,13-14) , the being who reflects himself to infinity, like two mirrors facing each other.
Mythology.
In Buddhist mythology, the sky of the god Indra, the chief god of the primitive Vedic (pre-Hindu) religion of India, is a web of silken strings extending in all directions and containing at each intersection a pearl in which all the others are reflected, so that the entire universe is reflected in each pearl. Indra's net symbolizes the interrelation between all the elements of the universe.
Mathematics.
A reflexive relation is a binary relation R on a set C such that every element is related to itself: ∀x, xRx. For example, mathematical equality (x=x), set inclusion (C⊆C), "less than or equal" relation (r≤r).
Fractals have the property of self-similarity: each part of the fractal reflects the whole fractal. It is a self-reflexive symmetry.
Cosmology.
The mind and consciousness of human beings is part of the universe and evolves with it. Therefore, part of the universe is conscious of itself. The universe observes itself through us. If we know the universe it is so that the universe knows itself. "Humans are a way for the universe to know itself" (Carl Sagan).
Philosophy.
Philosophy should be understood as a continuous reflexion in search of the ultimate foundation of things, to open consciousness and fundamental and integral knowledge.
For Descartes and his famous "I think, therefore I am", it can be considered a reflexion, with two levels: the being and its thinking mind. Behind the thinking there is a conscious being. Thinking is a manifestation of conscious being.
For Locke, all ideas arise from experience, which has two sources: sensation (external perception) and reflexion (internal perception). Through reflexion one passes from the particular to the general, one acquires the general ideas.
For Hume, impressions are also of two kinds: sensations and reflexions. For Hume (and also for Locke), reflexion is a secondary operation in the sense that it is subordinate to sense data.
For Kant. Reflexion is the way to reach the concepts. In all judgments there are reflexions. Reflexion can be logical (comparative) or transcendental. The latter leads to the philosophical categories.
For Hegel, the reflexivity of reason is the fundamental principle of philosophy and the instrument of philosophy. Without the reflexivity of reason, philosophical work is not possible. From the reflexion on thesis and antithesis is born the synthesis, the union of opposites, the higher consciousness. In all thought the philosophical categories, which are of an ideal nature, are implied. The spirit is the only reality that knows and reflects upon itself.
Logic is the science of pure ideas, without concrete contents, the science that deals with the structure of thinking. In logic the thought and the thought, the subject and the object, are the same. Logic cannot be conceptualized outside of logic. Logic is not just another discipline, but the fundamental rational activity.
For Husserl, reflexion is the path that leads from immanent to transcendent perception. The phenomenological method is based on reflexion. Phenomenology, as a doctrine of the essence of experiences, uses reflexion as an instrument. Husserl's phenomenology is a reflexive philosophy.
For Amit Goswami, the two reflexive levels are being and freedom of choice: "I choose, therefore I am". Freedom is the characteristic of consciousness. Consciousness manifests itself in choice.
Epistemology.
Epistemology is a branch of philosophy whose object of study is knowledge itself: how it is acquired, the mechanisms involved, its rational basis, and so on. It is the discipline or science of reflexivity.
Alan Kay, the visionary
Alan Kay (1940-), inventor of the term "homoiconic", is a visionary. He invented object-oriented programming with the SmallTalk programming language. He conceived the book-like personal computer (what today is a laptop or tablet) that he called Dynabook, based on the object paradigm. He invented a graphical user interface based on the desktop metaphor. An eternal seeker of the simple and functional, he intended the object-oriented programming language to be a model of the human mind. Kay predicted that one day all users would be programmers at the same time.
Bibliography
Barrow, John D. World within the World. Oxford University Press, 1988.
Clavel, Manuel. Reflexion in Rewriting Logic: Metalogical Foundations and Metaprogramming Applications. Center for the Study of Language and Inf., 2001.
Dawkins, Richard. The Evolution of Evolubility. En Langton, C. (ed.), Artificial Life, Addison-Wsley, 1989.
Forman, Ira R.; Forman, Nate. Java Reflexion in Action. Manning Publications, 2004.
Goswami, Amit. The Self-Aware Universe. Tarcher-Penguin, 1995.
Nishida, Kitaro. Intuition and Reflexion in Self-Consciousness. Suny Press, 1987.
Peters, Frederic. Theories of Consciousness as Reflexivity. The Philosophical Forum 44: 341-372, 2013. Disponible online.
Poundstone, William. The Recursive Universe: Cosmic Complexity and the Limits of Scientific Knowledge. Contemporary Books, 1985. (Libro popular sobre autómatas celulares y complejidad.)
Putnam, Hilary. El significado de significado. UNAM. Instituto de Investigaciones Filosóficas, México, 1984. El original inglés “The Meaning of Meaning” está disponible en Internet.
Reflexion'99. Meta-Level Architectures and Reflexion. Second International Conference, Saint-Malo, France, July 19-21, 1999 Proceedings (Lecture Notes in Computer Science), Springer, 1999.
Reflexion 2001. Metalevel Architectures and Separation of Crosscutting Concerns. Third International Conference, Kyoto, Japan, September 25-28, 2001 Proceedings (Lecture Notes in Computer Science), Springer, 2001.
Rosen, Steven M. Science, Paradox, and the Moebius Principle. The Evolution of a “Transcultural” Approach to Wholeness. State University of new York Press, 1994.
Sobel, Jonathan M.; Friedman, Daniel P. An Introduction to Reflexion-Oriented Programming. Internet.
Tarski, Alfred. The semantic conception of truth and the foundations of semantics. Philosophy of Phenomenological Research, 4: 341-376, 1944.
Young, Arthur M. The reflexive Universe. Evolution of Consciousness. Anodos Publications, 1999.
Van den Bussche, J.; Van Gucht, D.; Vossen, G. Reflexive programming in the relational algebra. Internet.
Williams, Paul. The Reflexive Nature of Awareness. Motilal Banarsidass, 2000.