Age (model theory): Difference between revisions

From formulasearchengine
Jump to navigation Jump to search
en>ClueBot NG
m Reverting possible vandalism by 69.68.81.145 to version by 99.62.235.54. False positive? Report it. Thanks, ClueBot NG. (1345934) (Bot)
en>Myasuda
m sp
Line 1: Line 1:
In [[mathematics]], a '''Gödel numbering for sequences''' provides us an effective way to represent each finite sequence of natural numbers as a single natural number. Of course, the [[Injective function|embedding]] is surely possible set theoretically, but the emphasis is on the effectiveness of the functions manipulating such representations of sequences: the operations on sequences (accessing individual members, concatenation) can be "implemented" using [[total recursive function]]s, and in fact by [[primitive recursive function]]s.
Hello, my name is Andrew and my spouse doesn't like it at all. Mississippi is where his house is. Office supervising is where her primary income arrives from but she's currently utilized for another 1. To climb is something she would never give up.<br><br>Here is my blog post email psychic readings ([http://myoceancounty.net/groups/apply-these-guidelines-when-gardening-and-grow/ visit their website])
 
It is usually used to build sequential “[[data type]]s” in the realm of arithmetic-based formalizations of some fundamental notions of mathematics. It is a specific case of the more general idea of [[Gödel numbering]].
 
E.g. [[Mu-recursive function|recursive function theory]] can be regarded as a formalization of notion “[[algorithm]]”, and if we regard it as a [[programming language]], we can mimic arrays, [[List (computing)|list]]s by encoding a sequence of natural numbers in a single natural number — to achieve this, we can use various [[Number theory|number theoretic]] ideas. Using the [[fundamental theorem of arithmetic]] is a straightforward way, but there are also more economic approaches, e.g. using [[pairing function]] combined with [[Chinese remainder theorem]] in a sophisticated way.<ref name=chinese_pairing>[[#Mon76|Monk 1976]]: 56–58</ref><ref name=chinese_pairing2>[[#Csir94|Csirmaz 1994]]: 99–100 (see [http://www.renyi.hu/~csirmaz/l10.ps.gz online])</ref>
 
== Gödel numbering ==
{{Main|Gödel numbering}}
 
Gödel numbering can be used to not only encode unique sequences of symbols into unique natural numbers (i.e. place numbers into [[mutually exclusive]] or [[one-to-one correspondence]] with the sequences) but also to encode whole “architectures” of sophisticated “machines”. For example we can encode [[Markov algorithm]]s,<ref name=Markov>[[#Mon76|Monk 1976]]: 72–74</ref> or [[Turing machine]]s<ref name=Turing>[[#Mon76|Monk 1976]]: 52–55</ref> into natural numbers and thereby prove that the expressing power of recursive function theory is no less than that of the former machine-like formalizations of algorithms.
 
== Accessing members ==
 
We expect from any such representation of sequences that we can get back all the information from it that is contained by the original sequence: most important, to access each individual member. It is not strictly necessary that the length can be also obtained directly: even if we want to handle sequences of different length, we can store length data as a surplus member,<ref name="rem"/> or as the other member of an ordered pair by using a [[pairing function]].
 
Anyway, we expect that this obtaining back information can be done in an effective way, by an appropriate total recursive function.
 
We want a totally recursive function ''f'' that satisfies:
For all ''n'' and for any ''n''-length sequence of natural numbers <math>\langle a_0,\dots a_{n-1} \rangle</math>, there exists an appropriate natural number ''a'', called the Gödel number of the sequence such that for all ''i'' in the range of 0, …, ''n'' - 1,
:<math>f(a,i) = a_i</math>.
 
There exist effective functions enabling us to obtain back each member of the original sequence from a Gödel number of the sequence. Moreover, there are ways to define some in a [[Constructive proof|constructive]] way, thus we are not forced to be satisfied with mere  [[Nonconstructive proof|proofs of existence]].
 
=== Gödel's β-function lemma ===
{{see also|Gödel's β function}}
 
By an ingenious use of [[Chinese remainder theorem]], we can define constructively such a recursive function  <math>\beta</math> (using simple number-theoretical functions, all of which can be defined in a total recursive way) fulfilling the "[[specification]]s" given above. Also Gödel defined the <math>\beta</math> function using the Chinese remainder theorem in his article written in 1931. This is a [[primitive recursive function]].<ref>[[#Smu03|Smullyan 2003]]: 56 (= Chpt IV, § 5, note 1)</ref>
 
Thus, for all ''n'' and for any ''n''-length sequence of natural numbers <math>\langle a_0,\dots a_{n-1} \rangle</math>, there exists an appropriate natural number ''a'', called the Gödel number of the sequence such that<ref name=Godel_beta>[[#Mon76|Monk 1976]]: 58 (= Thm 3.46)</ref>
:<math>\beta(a,i) = a_i</math>
 
==== Using a pairing function ====
{{Main|Pairing function}}
 
Our specific solution will depend on a pairing function — there are several ways to implement the latter, let us select one. Now, we can [[Abstraction|abstract]] from the details of the “[[implementation]]” of the pairing function, we need only to know its “[[Interface (computer science)|interface]]”: let <math>\pi</math>, ''K'', ''L'' denote the pairing function and its two [[Projection (mathematics)|projection]] functions, respectively, satisying [[specification]]
:<math>K\left(\pi\left(x,y\right)\right) = x</math>
:<math>L\left(\pi\left(x,y\right)\right) = y</math>
we shall not discuss and formalize the axiom for excluding alien objects here, it is now not so important.
 
==== Remainder for natural numbers ====
 
We shall use another auxiliary function: it will compute the [[Remainder#The remainder for natural numbers|remainder for natural numbers]]. Examples:
 
* <math>\mathrm{rem}(5, 3) = 2</math>
* <math>\mathrm{rem}(7, 2) = 1</math>
 
It can be proven that this function can be "implemented" as a recursive function.
 
==== Using the Chinese remainder theorem ====
 
===== Implementation of the β function =====
 
Using the [[Chinese remainder theorem]], we can prove that implementing <math>\beta</math> as
:<math>\beta(s,i) = \mathrm{rem}\left(K\left(s\right),\left(i+1\right)\cdot L\left(s\right)+1\right)</math>
will work, according to the specification we expect <math>\beta</math> to satisfy. We can use a more concise form by an [[abuse of notation]] (sort of [[pattern matching]]):
:<math>\beta\left(\pi\left(x_0,m\right),i\right) = \mathrm{rem}\left(x_0, \left(i+1\right)\cdot m+1\right)</math>
Let us achieve even more readability by more [[Modularity (programming)|modularity]] and [[Code reuse|reuse]] (as these notions are used in computer science<ref name=whyfp>[[#Hugh89|Hughes 1989]] (see [http://www.math.chalmers.se/~rjmh/Papers/whyfp.html online])</ref>): defining <math>\forall i<n</math> the sequence <math>m_i = (i+1)\cdot m+1</math>,
enables us to write
:<math>\beta\left(\pi\left(x_0,m\right),i\right) = \mathrm{rem}\left(x_0, m_i\right)</math>
We shall use this <math>m_i</math> notation also in the proof.
 
===== Hand-tuned assumptions =====
 
For proving the correctness of the above definition of <math>\beta</math> function, we shall use (and prove) several auxiliary theorems, lemmas. These have their own assumptions. Now we try to find out these assumptions, calibrating and tuning their strength carefully: they should not be said in an either superfluously sharp, or unsatisfactorily weak form.
 
Let <math>a_0,\dots a_{n-1}</math> be a sequence of natural numbers.
Let ''m'' be chosen to satisfy
:<math>\forall i \in \overline n \setminus \left\{0\right\} \left(i \mid m\right)</math>
:<math>\forall i < n \left( a_i < m_i \right)</math>
The first assumption is meant as
:<math>1 \mid m \land \dots \land n-1 \mid m</math>
It is needed to meet an assumption of the Chinese remainder theorem (that of being pairwise [[coprime]]). In the literature, sometimes this requirement is replaced with a stronger one, e.g. [[Constructive proof|constructively]] built with the [[factorial]] function,<ref name=chinese_pairing/> but the proof uses just as much strength as formulated here.<ref name=chinese_pairing2/>
 
The second assumption does not concern the Chinese remainder theorem in any way. It will have importance in proving that the specification for <math>\beta</math> is met eventually.  It ensures that an <math>\tilde x</math> solution of the simultaneous congruence system
:<math>x \equiv a_i \pmod{m_i}</math> for each ''i'' ranging 0,… , n-1
also satisfies
:<math>a_i = \mathrm{rem}(\tilde x, m_i)</math><ref name=rem>[[#Csir94|Csirmaz 1994]]: 100 (see [http://www.renyi.hu/~csirmaz/l10.ps.gz online])</ref><ref name=ArithmeticI>[[#Bur98|Burris 1998]]: Supplementary Text, [http://www.math.uwaterloo.ca/~snburris/htdocs/scav/fo_arith/fo_arith.html Arithmetic I], Lemma 4</ref>
A stronger assumption for ''m'' requiring <math>\forall i < n \; (a_i < m)</math> automatically satisfies it (if we define the notation <math>m_i</math> as above).
 
=== Proof that (coprimality) assumption for Chinese remainder theorem is met ===
 
We shall prove that the (coprimality) assumption for Chinese remainder theorem is met.
 
As mentioned in section [[#Hand-tuned assumptions|Hand-tuned assumptions]], we prescribed that
:<math>\forall i \in \overline n \setminus \left\{0\right\} \left(i \mid m\right)</math>
thus we can use it.
 
What we want to prove is that we can produce a sequence of pairwise [[coprime]] numbers in a way that will turn out to correspond to the [[#Implementation of the β function|Implementation of the β function]] in a sense.
 
In details:
:<math>\forall i<n,j < n \; \left( i \neq j \rightarrow \mathrm{coprime}\left(m_i,m_j\right) \right)</math>
let us remember, <math>\forall i<n</math> we defined <math>m_i = (i+1)\cdot m+1</math>.
 
Let us use [[reductio ad absurdum]]!
 
Negation of the original statement:
:<math>\exists i<n,j < n \; \left( i \neq j \land \lnot \mathrm{coprime}\left(m_i,m_j\right) \right)</math>
 
==== First steps ====
 
We know what “coprime” relation means (in a lucky way, its negation can be formulated in a concise form), thus, let us substitute  in the appropriate way:
:<math>\exists i<n,j < n \; \left( i \neq j \land \exists p \in \mathrm{Prime} \; \left( p \mid m_i \land p \mid m_j \right) \right)</math>
Using a “more” [[prenex normal form]] (but note allowing a constraint-like notation in quantifiers):
:<math>\exists i<n,j < n,p \in \mathrm{Prime} \; \left( i \neq j \land p \mid m_i \land p \mid m_j \right)</math>
 
Because of a theorem on [[Divisor|divisibility]], <math>p \mid m_i \land p \mid m_j</math> allows us to say also
:<math>p \mid m_i - m_j</math>
 
Substituting the [[Definition|definens]] of <math>m_k</math>-sequence notation, we get <math>m_i - m_j = (i-j) \cdot m</math>, thus (as [[Equality (mathematics)|equality]] axioms postulate identity to be  a [[congruence relation]] <ref name=congid>see also related notions, e.g. “equals for equals” ([[Referential transparency (computer science)|referential transparency]]), and another related notion Leibniz's law / [[identity of indiscernibles]]</ref>) we get
:<math> p \mid (i-j) \cdot m</math>
Using that ''p'' is a [[prime element]] (note: not the [[irreducible element]] property is used!), we get
:<math>p \mid i-j \lor p \mid m</math>
 
==== Resorting to the first hand-tuned assumption ====
 
Now this is the point in the proof where we must resort to our assumption
:<math>\forall i \in \overline n \setminus \left\{0\right\} \left(i \mid m\right)</math>
let us remember, we have planned this assumption calibrated carefully to be as weak as possible, but strong enough to enable us to use it now.
 
The assumed negation of the original statement (let us remember, we use reductio ad absurdum) contains an appropriate existential statement using indices <math>i<n\land j<n \land i\neq j</math>, this entails <math>i-j \in \overline n \setminus \left\{0\right\}</math>, thus the mentioned assumption can be applied, so <math>i-j \mid m</math> holds.
 
==== Using an (object) theorem of the propositional calculus as a lemma ====
 
We can prove by several means <ref>either proof theoretic (algebraic steps); or semantic ([[truth table]], [[method of analytic tableaux]], [[Venn diagram]], [[Karnaugh map|Veitch diagram / Karnaugh map]])</ref> known in [[propositional calculus]], that
:<math>\left(A \land \left( A \rightarrow B\right)\right) \rightarrow B</math>
holds.
 
Because <math>i-j \mid m</math> entails (by the [[Transitive relation|transitivity]] property of the [[Divisor|divisibility]] relation) that <math>p \mid i-j \rightarrow p \mid m</math>, thus (as equality axioms postulate identiy to be  a congruence relation <ref name=congid>see also related notions Referential transparency, and also a dual notion Leibniz's law / [[identity of indiscernibles]]</ref>)
:<math>p \mid m</math>
can be proven.
 
==== Reaching the contradiction ====
 
The negation of original statement contained
:<math>p \mid m_i</math>
and we have just proved
:<math>p \mid m</math>
thus also
:<math>p \mid m_i - \left(i+1\right)\cdot m</math>
should hold.
But, after substituting the [[Definition|definiens]] for <math>m_i</math>, we shall see
:<math>m_i - \left(i+1\right)\cdot m = 1</math>
Thus, summarizing the above three statements, by [[Transitive relation|transitivity]] of the [[Equality (mathematics)|equality]], also
:<math>p \mid 1</math>
should hold. But let us look up the quantification of ''p'' in the negation of the original statement: ''p'' is [[Existential quantifier|existentially quantified]] and restricted to primes <math>\exists p \in \mathrm{Prime}</math>
 
The above statement together with the above quantification of ''p'' establish the contradiction we wanted to reach.
 
==== End of reductio ad absurdum ====
 
By reaching contradiction with its negation, we have just proven the original statement:
:<math>\forall i<n,j<n \; \left( i \neq j \rightarrow \mathrm{coprime}\left(m_i,m_j\right)\right)</math>
 
=== The system of simultaneous congruences ===
 
We build a system of simultaneous congruences
:<math>x \equiv a_0 \pmod{m_0}</math>
::<math>\vdots</math>
:<math>x \equiv a_{n-1} \pmod{m_{n-1}}</math>
 
We can write it in a more concise way:
:<math>\forall i < n \; \left(x \equiv a_i \pmod{m_i}\right)</math>
 
In the followings, many statements will be said, all beginning with <math>\forall i < n \; \left(\dots\right)</math>. To achieve a more ergonomic treatment, from now on all statements will be regarded in the scope of an <math>\forall i < n \; \left(\dots\right)</math> qantification. Thus: <math>\forall i < n (</math> begins!
 
Let us chose a solution <math>x_0</math> for the system of simultaneous congruences. At least one solution must exist, because <math>m_0,\dots m_{n-1}</math> are pairwise comprime (that's what we have been proving so long in the previous sections!), thus we can refer to the Chinese remainder theorem's ensuring solution. Thus, from now on, we can regard <math>x_0</math> satisfying
:<math>x_0 \equiv a_i \pmod{m_i}</math>
it means (by definition of [[modular arithmetic]]) that
:<math>\mathrm{rem}\left(x_0,m_i\right) = \mathrm{rem}\left(a_i,m_i\right)</math>
 
==== Resorting to the second hand-tuned assumption ====
 
Again, we must resort to the assumptions whose strength we specifically “tuned” for using in the proof. But now, it is the second assumption (which does not concern the Chinese remainder theorem in any way) that we need: “<math>\forall i < n \; \left(a_i < m_i \right)</math>”. Let us remember: we are now in the scope of a “big” quantification for ''i'', thus we don't repeat its quantification for each statement.
 
The second hand-tuned assumption <math>a_i < m_i</math> will join in at this point, because it entails that
:<math>\mathrm{rem}\left(a_i,m_i\right) = a_i</math>
Now by [[Transitive relation|transitivity]] of [[Equality (mathematics)|equality]] we get
:<math>\mathrm{rem}\left(x_0,m_i\right) = a_i</math>
 
==== QED ====
 
Our original goal was to prove that the definition
:<math>\beta\left(\pi\left(x_0,m\right),i\right) = \mathrm{rem}\left(x_0,m_i\right)</math>
is good for achieving what we declared in the specification of <math>\beta</math>: we want <math>\beta\left(\pi\left(x_0,m\right),i\right) = a_i</math> to hold.
 
That's it, it can be seen now by [[Transitive relation|transitivity]] of [[Equality (mathematics)|equality]], looking at the above three equations.
 
Scope of ''i'' ends here.
 
=== Existence and uniqueness ===
 
We have just proven the correctness of the definition of <math>\beta</math>: its specification requiring
:<math>\forall a_0,\dots, a_{n-1}\;\exists s\;\forall i < n \; \beta(s,i) = a_i</math>
is met. Although proving this was the most important, if we want to establish an encoding scheme for sequences, but we have to fill in some gaps yet. These are related notions similar to [[Existential quantification|existence]] and [[Uniqueness quantification|uniqueness]] (although on uniqueness, “at most one” should be meant here, and the conjunction of both is delayed as a final result).
 
==== Uniqueness of encoding, achieved by minimalization ====
 
Because let us remember, our ultimate question is: what number should stand for the encoding of sequence <math>\left\langle a_0,\dots,a_{n-1}\right\rangle</math>? The specification declares only an existential quantification, not yet a functional connection. We want a [[Constructive proof|constructive]] and algorithmic way, even more, a (total) recursive function for the encoding.
 
==== Totality, because minimalization is restricted to special functions ====
 
This gap can be filled in in a straightforward way: we shall use [[Mu operator|minimalization]], and the totality of the resulting function is ensured by everything we have proven till now (i.e. the correctness of the definition of <math>\beta</math> by meeting its specification). In fact, the specification
:<math>\forall a_0,\dots, a_{n-1}\;\exists s\;\forall i < n \; \beta(s,i) = a_i</math>
plays a role here of a more general notion (“special function”<ref name=special_function>[[#Mon76|Monk 1976]]: 45 (= Def 3.1.)</ref>). The importance of this notion is that it enables us to split off the (sub)class of  (total) recursive functions from the (super)class of partial recursive functions. In brief, the specification says exactly: a function ''f''
<ref>E.g. defined by
:<math>f : \mathbb N^{n+1} \to \mathbb N</math>
:<math>f\left(a_0,\dots, a_{n-1}, s\right) = \begin{cases}0 & \mathrm{if}\;\forall i < n \; \left(\beta(s,i) = a_i\right) \\ 1 & \mathrm{if}\;\exists i < n \; \left( \beta(s,i) \neq a_i \right)\end{cases}</math>
</ref>
satisfying specification
:<math>f\left(a_0,\dots, a_{n-1}, s\right) = 0 \leftrightarrow \forall i < n \; \left(\beta(s,i) = a_i\right)</math>
is a special function, i.e. for each fixed combination of all-but-last arguments, the function ''f'' has [[root of a function|root]] in its last argument:
:<math>\forall a_0,\dots,a_{n-1}\;\exists s\; \left(f\left(a_0,\dots,a_{n-1},s\right)=0\right)</math>
 
==== The Gödel numbering function g can be chosen to be total recursive ====
 
Thus, let us choose the minimal possible number that fits well in the specification of the <math>\beta</math> function:<ref name="rem" />
:<math>g : \mathbb N^n \to \mathbb N</math>
:<math>\left\langle a_0,\dots,a_{n-1}\right\rangle \longmapsto \mu a . \left[ \forall i < n \; \left(\beta\left(a,i\right) = a_i\right)\right]</math>
and it can be proven (using the notions of the previous section ) that ''g'' is (total) recursive.
 
=== Access of length ===
 
If we use the above scheme for encoding sequences only in contexts where the length of the sequences is fixed, then no problem arises. In other words, we can use them in an [[Analogy|analogous]] way as arrays are used in programming.
 
But sometimes we need dynamically stretching sequences, or we need to deal with sequences whose length cannot be [[Typeful programming|type]]d in a static way. In other words, we may encode sequences in an analogous way as we use [[List (computing)|list]]s in programming.
 
An example for both cases: if we make the Gödel numbering of a Turing machine, then the each row in matrix of the “program” can be represented with tuples, sequences of fixed length (thus, without storing the length), because the number of the columns is fixed.<ref name=stat>[[#Mon76|Monk 1976]]: 53 (= Def 3.20, Lem 3.21)</ref> But if we want to reason about configuration-like things (of Turing-machines), and specially, we want to encode the significant part of the tape of a running Turing machine, then we have to represent sequences together with their length. Moreover, we can mimic dynamically stretching sequences by representing sequence concatenation (or at least, augmenting a sequence with one more element) with a [totally] recursive function.<ref name=dyn>[[#Csir94|Csirmaz 1994]]: 101 (=Thm 10.7, Conseq 10.8), see [http://www.renyi.hu/~csirmaz/l10.ps.gz online]</ref>
 
Length can be stored stored simply as a surplus member:<ref name="rem" />
:<math>g : \mathbb N^* \to \mathbb N</math>
:<math>\left\langle a_0,\dots,a_{n-1}, a_n\right\rangle \longmapsto \mu a . \left[ a_0 = n \land \forall i < n \; \left(\beta\left(a,i+1\right) = a_i\right)\right]</math>
 
The corresponding modification of the proof is straightforward, by adding a surplus
:<math>x \equiv n \pmod{m_0}</math>
to the system of simultaneous congruences (provided that the surplus member index is chosen to be 0). Also the assumptions etc. have to be modified accordingly.
 
== Notes ==
 
<references/>
 
== References ==
 
* {{cite book |last=Burris |first=Stanley N. |title=Logic for Mathematics and Computer Science |publisher=Prentice Hall |year=1998 |isbn=0-13-285974-2 |chapter=Supplementary Text, Arithmetic I |chapterurl=http://www.math.uwaterloo.ca/~snburris/htdocs/scav/fo_arith/fo_arith.html |ref=Bur98}}
* {{cite book |last=Csirmaz |first=László |coauthors=[[András Hajnal|Hajnal, András]] |title=Matematikai logika |chapter=Rekurzív függvények |publisher=Eötvös Loránd University |location=Budapest |year=1994 |language=Hungarian |format=postsript + gzip |chapterurl=http://www.renyi.hu/~csirmaz/l10.ps.gz |ref=Csir94}} Each chapter is downloadable verbatim on [http://www.renyi.hu/~csirmaz/ author's page].
* <cite id=Hugh89>{{cite journal |last=Hughes |first=John |title=Why Functional Programming Matters |journal=Computer Journal |volume=32 |issue=2 |pages=98–107 |year=1989 |url=http://www.math.chalmers.se/~rjmh/Papers/whyfp.html |doi=10.1093/comjnl/32.2.98 }} {{dead link|date=June 2010}}</cite>
* {{cite book |last=Monk |first=J. Donald |title=Mathematical Logic |series=Graduate Texts in Mathematics |publisher=Springer-Verlag |location=New York • Heidelberg • Berlin |year=1976 |ref=Mon76}}
* {{cite book |last=Smullyan |first=Raymond Merrill |authorlink=Raymond Smullyan |title=Gödel's Incompleteness Theorems |publisher=Oxford University Press |year=1992 |isbn=0-19-504672-2 |ref=Smu92}}
* {{cite book |last=Smullyan |first=Raymond Merrill |authorlink=Raymond Smullyan |title=Gödel nemteljességi tételei |publisher=Typotex |location=Budapest |year=2003 |language=Hungarian |isbn=963-9326-99-2 |ref=Smu03}} Translation of [[#Smu92|Smullyan 1992]].
 
== External links ==
 
* {{cite book |last=Burris |first=Stanley N. |title=Logic for Mathematics and Computer Science |publisher=Prentice Hall |year=1998 |isbn=0-13-285974-2 |chapter=Supplementary Text, Arithmetic I |chapterurl=http://www.math.uwaterloo.ca/~snburris/htdocs/scav/fo_arith/fo_arith.html}}
 
{{DEFAULTSORT:Godel Numbering For Sequences}}
[[Category:Computability theory]]
[[Category:Articles containing proofs]]

Revision as of 04:59, 4 March 2014

Hello, my name is Andrew and my spouse doesn't like it at all. Mississippi is where his house is. Office supervising is where her primary income arrives from but she's currently utilized for another 1. To climb is something she would never give up.

Here is my blog post email psychic readings (visit their website)