Jump to content
Main menu
Main menu
move to sidebar
hide
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Special pages
Niidae Wiki
Search
Search
Appearance
Create account
Log in
Personal tools
Create account
Log in
Pages for logged out editors
learn more
Contributions
Talk
Editing
Self-reference
(section)
Page
Discussion
English
Read
Edit
View history
Tools
Tools
move to sidebar
hide
Actions
Read
Edit
View history
General
What links here
Related changes
Page information
Appearance
move to sidebar
hide
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.
Summary:
Please note that all contributions to Niidae Wiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
Encyclopedia:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Search
Search
Editing
Self-reference
(section)
Add topic