45 votos

¿Todos los "números" son sólo un valor unitario transformado por una función?

Soy un programador, y he estado pensando en esto durante algún tiempo. Tengo un dicho:

Sólo hay tres números específicos: 0, 1, y ∞. ∞ es sólo un caso especial de 1.

Nuestra función de base realmente sólo convierte un valor unario en una cadena (ejemplo: "101") que podemos analizar en una base dada.

Esta noche, he estado pensando en esto, y me doy cuenta - creo que el conjunto de números naturales puede ser representado por una función recursiva que sólo funciona en un valor unitario, de la siguiente manera (me disculpo de antemano por la terrible notación, este no es mi fuerte):

// Please ignore the fact that this is invalid code for various, various reasons
N (the set of natural numbers) = add(1) where add(x) = return x + add(x);

A continuación, creo que el conjunto de números enteros se puede encontrar como una unión de la función de número natural y una función similar utilizando subtract en lugar de add (lo que da como resultado el conjunto completo de números negativos).

Yendo más allá, apliqué más pensamiento - quizás el conjunto de números reales puede ser aplicado a través de funciones de división para el conjunto de todos los números enteros dividido por el conjunto de todos los números enteros (que ya hemos establecido a través de las funciones anteriores).

Supongo que mi pregunta es esta: por extraño que parezca, ¿hay sólo un valor unitario? (O, posiblemente, un subconjunto muy pequeño de números de semillas - tal vez 0 y 1 (y tal vez -1 para el plano complejo?)) ¿Nuestro sistema numérico es sólo un sistema de transformaciones sobre un valor unitario?

Si esta es una pregunta realmente estúpida, me disculpo. Es sólo que cuanto más pienso en esto, más me lo pregunto. Hay una buena posibilidad de que me esté perdiendo algo o que esto ya haya sido derivado, pero me gustaría saberlo. Estoy seguro de que esta comunidad sabe mucho más que yo sobre esto. Espero que esto les interese a todos ustedes tanto como a mí.

9 votos

Si se introduce una división sobre números enteros, sólo se obtienen números racionales, no todos los números reales. La construcción de $\mathbb{R}$ es algo bastante delicado, que normalmente se realiza mediante cortes Dedekind o completando un espacio métrico.

0 votos

@JackD'Aurizio Entiendo tu afirmación - y desde mis clases de matemáticas elementales, lo sé. Sin embargo, no puedo dejar de preguntarme cómo un conjunto de infinito dividido por infinito no puede producir un número infinito de valores que satisfagan el conjunto real....Aprendí esto, y sé que tengo que leer un poco, pero también tengo mucho que pensar.

2 votos

Pero son diferentes "tipos" de infinito. Véase es.wikipedia.org/wiki/Cantor%27s_argumento_diagonal

73voto

6005 Puntos 19982

todo el conjunto de números naturales puede representarse mediante una función recursiva que sólo funciona con un único valor unario

Bravo -- esto es exactamente la idea clave que se explota en la mayoría de las formalizaciones estándar de los números naturales (la más famosa de las cuales se llama Aritmética Peano si tiene curiosidad por conocer los detalles). La función recursiva a la que te refieres, que denotó add(1) suele denominarse función sucesora y por escrito $S$ . Es una función de los números naturales a los números naturales, que toma un número natural $n$ y devuelve $n+1$ .

Para definir los números naturales $\mathbb{N}$ decimos que $0$ es un número natural, y para cualquier número natural $n$ , $Sn$ es un número natural. Esto nos da todos los números naturales: $0$ , $1 = S0$ , $2 = SS0$ , $3 = SSS0$ etc. También podemos decir que $Sn$ es un nuevo número natural, uno que no se ha definido antes (así, por ejemplo, $4 = SSSS0$ no es igual a $2 = SS0$ ).

Algunas lógicas son tan fuertes que sólo esta definición es suficiente para definir y demostrar lo que queramos sobre los números naturales. Parece que te interesa formalizarlo como un programa. En el asistente de prueba Coq podemos definir los números naturales como:

Inductive naturals : Type :=
  | O : naturals
  | S : naturals -> naturals.

Esto es similar a tu fragmento de código, pero a diferencia del tuyo (que era código inválido) este es código perfectamente válido definiendo los naturales. Sí, realmente es así de simple -- no se necesita nada más. Aún más sorprendente, podemos ir desde aquí para definir la suma, multiplicación, exponenciación, números primos, y cualquier otra cosa que nos gusta, y pruebe (La mayoría de las definiciones serán recursivas y las pruebas se harán por inducción). Una vez que tenemos la función sucesora $S$ todo lo demás viene después.

Siguiendo esto, creo que el conjunto de los números enteros se puede encontrar como unión de la función de los números naturales y una función similar que utilice la resta en lugar de la suma (dando como resultado el conjunto completo de los números negativos).

Sí, esta idea básica funcionará para definir los enteros $\mathbb{Z}$ de $\mathbb{N}$ . Los números enteros podrían definirse mediante $0$ la función sucesora $S$ y una función predecesora $P$ que lleva $n$ a $n-1$ . A diferencia de lo que ocurre con los números naturales, tenemos que definir una igualdad especial (relación de equivalencia) en los números enteros, de modo que $PSn$ y $SPn$ equivalen a $n$ .

Una definición alternativa (quizás más común) es que un número entero es un par ordenado $(a,b)$ donde $a$ y $b$ son números naturales, y esto representa informalmente el número entero $a-b$ . Entonces tenemos que definir lo que significa que dos números enteros sean iguales (una relación de equivalencia), y decimos que $(a,b) = (c,d)$ si $a + d = b + c$ .

Una vez más, cualquiera de las dos definiciones puede formalizarse fácilmente en un lenguaje de programación como Coq .

Yendo más allá, apliqué más pensamiento - tal vez el conjunto de los números reales se puede aplicar a través de funciones de división para el conjunto de todos los números enteros dividido por el conjunto de todos los números enteros (que ya hemos establecido a través de las funciones anteriores).

Introducir la división de esta manera (fracciones) te llevará de $\mathbb{Z}$ a los números racionales $\mathbb{Q}$ . Pero no te dará los números reales $\mathbb{R}$ que es un conjunto MUCHO mayor que $\mathbb{Q}$ . Hay un lote de números reales, tantos que, desde el punto de vista computacional, no podemos escribir la mayoría de ellos. Como herramienta teórica, sin embargo, es útil definir este conjunto gigante, lo que hacemos normalmente utilizando "cortes de Dedekind" o "secuencias de Cauchy". También hay otras formas menos conocidas. Puede leer sobre ello aquí .

Supongo que mi pregunta es la siguiente: por extraño que parezca, ¿existe un único valor unario? (O, posiblemente, un subconjunto muy pequeño de números semilla - quizás 0 y 1 (¿y quizás -1 para el plano complejo?)) ¿Es nuestro sistema numérico sólo un sistema de transformaciones sobre un valor unario?

Sí, la idea es que podamos empezar con $0$ como único valor base, y utilizar la función sucesora $S$ junto con una forma de construir pares ordenados (para la resta y la división) para generar todos los números que necesitamos. De forma más genérica, partimos de uno o varios valores base ( números de semillas ) y uno o varios constructores recursivos ( transforma ) para acumular todos los números posibles.

Podemos desarrollar los números complejos $\mathbb{C}$ de $\mathbb{R}$ utilizando de nuevo pares ordenados donde $(a,b)$ es $a + bi$ .

Sin embargo, debemos tener cuidado de comprender los límites de nuestra construcción. Por ejemplo, para que muchos cálculos con números naturales sean eficientes, es esencial que se representen como cadenas binarias y no como cadenas unarias de números naturales. $S$ s. Por tanto, si nos importa la eficacia, no todas las representaciones son iguales.

6 votos

+1 ¡Respuesta muy completa! El tema de las representaciones numéricas eficientes es muy amplio. Aquí tienes una pregunta más antigua de SE que sólo rasca la superficie: math.stackexchange.com/questions/446664/

1 votos

Relacionado con tu gran explicación: es.wikipedia.org/wiki/Teoría_de_los_números_tipográficos

1 votos

Cuando doy un discurso similar, me gusta ilustrar cómo aplicar $S$ en el recuento ingenuo basado en conjuntos de $S(x) := x \cup\{ x \}$ con $0 = \{\}$ . Pero tal vez no sea prudente, ya que podría confundir las cosas.

14voto

Yacoub Kureh Puntos 513

Quizá le interese leer sobre grupos, anillos y campos. Wikipedia es un buen punto de partida .

Decimos que 1 genera todos los enteros bajo adición e inversión, es decir, todo entero positivo es sólo una suma de unos, y y todo entero negativo es sólo su negación.

Si introducimos la división, obtendremos todos los números racionales. Si además permitimos raíces de polinomios, obtendremos números algebraicos que incluyen algunos números complejos. Sin embargo, no podemos obtener todos los números reales utilizando técnicas algebraicas como ésta; estos números se denominan números trascendentales, por ejemplo $\pi$ y $e$ .

Esta es una parte realmente interesante de las matemáticas y no es una pregunta estúpida en absoluto.

3 votos

+1. Las frases "definición inductiva" y (menos importante) "modelo de término" también son relevantes, especialmente teniendo en cuenta los antecedentes en CS.

4 votos

Esto es INCREIBLE! :-D ¡Quizás me gusta que me validen, pero definitivamente voy a echarle un vistazo! No soy matemático ni mucho menos, pero cuanto más pienso en esto más interesante me parece. Sé que los números trascendentales no pueden ser definidos por una sola función - deben ser definidos por una secuencia de funciones que, a falta de un término mejor, recurren unas sobre otras, pero me preguntaba si eso no está incluido dentro de la infinidad de los números reales. (De teoría de conjuntos, sé que no lo está -lo aprendí en clase- pero en términos de infinitos no estoy seguro de cómo no puede ser posible).

0 votos

@lunchmeat317 Esto realmente depende de qué tipo de funciones estás dispuesto a considerar. Ambos y e se pueden expresar simplemente en términos de series de potencias convergentes, e incluso hay una función computable que calcula el enésimo dígito hexadecimal de directamente sin necesidad de calcular cualquiera de los otros.

3voto

Vihang D Puntos 444

Quizá le interese consultar Números de la Iglesia donde cada número natural $n$ es definido como la función $f \mapsto f^n$ así que

  • $0 = f \mapsto id$
  • $1 = f \mapsto f$
  • $2 = f \mapsto f \circ f$
  • $3 = f \mapsto f \circ f \circ f$

etc. Es fácil definir una función sucesora, una suma, una multiplicación, etc. utilizando este estilo (omitiendo por convención los paréntesis innecesarios en las aplicaciones de funciones):

$$Sn = f \mapsto f \circ nf$$

$$n + m = mS\;n$$

$$n * m = m (k\mapsto n+k)\;0$$

$$n^m = m(k \mapsto n * k)\; 1$$

etc.

Aunque hoy en día se utiliza sobre todo en el contexto de la programación y los lenguajes de programación, creo que originalmente se utilizaba en el contexto de los fundamentos de las matemáticas (de modo que en matemáticas, los números naturales "significarían" las funciones anteriores). Por supuesto, la programación y los lenguajes de programación, tal y como los conocemos hoy en día, surgieron directamente de los fundamentos de las matemáticas de los años veinte y treinta.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X