Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Self-reference
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
==In logic, mathematics and computing == In classical [[philosophy]], [[paradoxes]] were created by self-referential concepts such as the [[omnipotence paradox]] of asking if it was possible for a being to exist so powerful that it could create a stone that it could not lift. The [[Epimenides paradox]], 'All Cretans are liars' when uttered by an ancient Greek Cretan was one of the first recorded versions. Contemporary philosophy sometimes employs the same technique to demonstrate that a supposed concept is meaningless or ill-defined.<ref>{{cite book| url = https://plato.stanford.edu/entries/liar-paradox/| title = ''Liar Paradox''| year = 2020| publisher = Metaphysics Research Lab, Stanford University}}</ref> In [[mathematics]] and [[computability theory]], self-reference (also known as [[impredicativity]]) is the key concept in proving limitations of many systems. [[Gödel's incompleteness theorems|Gödel's theorem]] uses it to show that no formal [[Consistency|consistent]] system of mathematics can ever contain all possible mathematical truths, because it cannot prove some truths about its own structure. [[The halting problem]] equivalent, in computation theory, shows that there is always some task that a computer cannot perform, namely reasoning about itself. These proofs relate to a long tradition of mathematical paradoxes such as [[Russell's paradox]] and [[Berry's paradox]], and ultimately to classical philosophical paradoxes. In [[game theory]], undefined behaviors can occur where two players must model each other's mental states and behaviors, leading to infinite regress. In [[computer programming]], self-reference occurs in [[Reflection (computer science)|reflection]], where a program can read or modify its own instructions like any other data.<ref>{{cite web|last1=Malenfant|first1=J.|last2=Demers|first2=F-N|title=A Tutorial on Behavioral Reflection and its Implementation|url=http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf|publisher=PARC|archive-url=https://web.archive.org/web/20170821214626/http://www2.parc.com/csl/groups/sda/projects/reflection96/docs/malenfant/malenfant.pdf|access-date=17 May 2015|archive-date=21 August 2017}}</ref> Numerous programming languages support reflection to some extent with varying degrees of expressiveness. Additionally, self-reference is seen in [[recursion]] (related to the mathematical [[recurrence relation]]) in [[functional programming]], where a code structure refers back to itself during computation.<ref name="Drucker2008">{{cite book |last=Drucker |first=Thomas |title=Perspectives on the History of Mathematical Logic |url=https://books.google.com/books?id=R70M4zsVgREC&pg=PA110 |date=4 January 2008 |publisher=Springer Science & Business Media |isbn=978-0-8176-4768-1 |page=110}}</ref> 'Taming' self-reference from potentially paradoxical concepts into well-behaved recursions has been one of the great successes of [[computer science]], and is now used routinely in, for example, writing [[compilers]] using the 'meta-language' [[ML (programming language)|ML]]. Using a compiler to compile itself is known as [[bootstrapping (compilers)|bootstrapping]]. [[Self-modifying code]] is possible to write (programs which operate on themselves), both with [[Assembly language|assembler]] and with functional languages such as [[Lisp (programming language)|Lisp]], but is generally discouraged in real-world programming. Computing hardware makes fundamental use of self-reference in [[Flip-flop (electronics)|flip-flops]], the basic units of digital memory, which convert potentially paradoxical logical self-relations into memory by expanding their terms over time. Thinking in terms of self-reference is a pervasive part of programmer culture, with many programs and acronyms named self-referentially as a form of humor, such as [[GNU]] ('GNU's not Unix') and [[Pine (email client)|PINE]] ('Pine is not Elm'). The [[GNU Hurd]] is named for a pair of mutually self-referential acronyms. [[Tupper's self-referential formula]] is a mathematical curiosity which plots an image of its own formula.
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)