La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

La aritmetización de la sintaxis Capítulo 15. INTRODUCCIón El objetivo será establecer una relación entre las expresiones de una teoría formal y un código.

Presentaciones similares


Presentación del tema: "La aritmetización de la sintaxis Capítulo 15. INTRODUCCIón El objetivo será establecer una relación entre las expresiones de una teoría formal y un código."— Transcripción de la presentación:

1 La aritmetización de la sintaxis Capítulo 15

2 INTRODUCCIón El objetivo será establecer una relación entre las expresiones de una teoría formal y un código numérico. En particular, vamos a intentar asociar las expresiones del lenguaje de la aritmética L A con números. Luego lo haremos para secuencias de expresiones. Veremos, entonces, que existe un correlato entre ciertas propiedades sintácticas y ciertas propiedades numéricas. ¿Podremos decir que ciertas propiedades sintácticas son propiedades numéricas? Disctutir.

3 Existe más de una forma de asociar expresiones sintácticas con números. Sin embargo, vamos a presentar la idea original de Gödel. Ésta es la clave para hacer hablar a la matemática de sí misma. Pero antes, vamos a contar algunos resultados matemáticos involucrados en la idea original de Gödel.

4 TEOREMA FUNDAMENTAL DE LA ARITMÉTICA Todo número natural mayor que 1 se puede representar de forma única (salvo por el orden de los factores) como el producto de números primos. Llamaremos a dicha representación: factorización de un número = = = = Este teorema requiere dos demostraciones clásicas: existencia y unicidad.

5 ¿qué es un número primo? Se dice que un número natural p es primo si y sólo si tiene exactamente dos divisores: 1 y p (uno y sí mismo) ¿El número 1 es primo? ¿Cuántos primos pares hay? ¿Cuántos números primos hay? ¿Por qué? La propiedad de ser primo es verificable en una serie finita de pasos mecánicos. (11.8 R3. Prime(n) es p.r)

6 Algoritmo: Dado un número natural n Si n = 1: Responder: n no es primo Terminar Si no: Para cada número primo p i n: Realizar la división entera de n por p i Si el resto de dividir n por p i es igual a 0: Responder: n no es primo Terminar Si no: Continuar Responder: n es primo Terminar

7 A partir del algoritmo anterior, podemos construir otro algoritmo que genere la lista de todos los números primos. (11.8 R4. π(n) es p. r.) La factorización de un número se puede obtener en una serie finita de pasos mecánicos.

8 Algoritmo: Dado un número natural n 2 Para cada número primo p i n : c = 0 Mientras n sea divisible por p i : n = n div p i c = c + 1 Si c > 0: Responder: p i c. Continuar Si no: Continuar Responder: 1 Terminar

9 Sea el lenguaje de la aritmética L A con los símbolos lógicos usuales (conectivas, cuantificadores, identidad, paréntesis), los símbolos de cero y sucesor y las funciones suma y multiplicación. Vamos a codificar a los símbolos anteriores con números impares. Además, en el lenguaje de la aritmética, tenemos una cantidad inagotable de variables. A estas últimas las vamos a numerar con números pares. Entonces, obtenemos el siguiente esquema de codificación: Numeración de Gödel

10 Símbolo s ¬ =()0S+xxyz… Código c … ESQUEMA DE CODIFICACIÓN Sea la expresión e una secuencia de k+1 símbolos de L A s 0, s 1, s 2,… s k. El número de Gödel (g. n.) de la expresión e se calcula multiplicando los primeros k+1 números primos π i, cada uno elevado a la potencia c i, donde c i es el código del símbolo s i (con i desde 0 hasta k).

11 S tiene g. n = SS0 tiene g. n = (no llega la calculadora) y(S0+y)=SS0 tiene g. n = (un número muy grande) Símbolo s ¬ =()0S+xxyz… Código c …

12 Otra forma de verlo: Dada una expresión del lenguaje, considerar la cadena de símbolos involucrada. Utilizar los números primos para codificar la posición de cada símbolo dentro de la cadena. Elevar cada número primo a la potencia correspondiente según el esquema de codificación. Multiplicar.

13 En forma análoga, se pueden asociar expresiones de distintos lenguajes formales con números modificando el esquema de codificación. Tenemos un procedimiento mecánico para ver si un número es primo o no. Tenemos un procedimiento mecánico para factorizar números. Tenemos un procedimiento mecánico para codificar expresiones de un lenguaje formal.

14 A partir de nuestro esquema de codificación anterior, tenemos dos algoritmos: Uno para transformar una expresión en un número. Otro para transformar un número en una expresión.

15 Dada una secuencia de expresiones de un lenguaje: e 0, e 1, e 2,… e n Codificarlas con su número de Gödel correspondiente: g 0, g 1, g 2,… g n Y luego volver a utilizar los números primos: 2 g0. 3 g1. 5 g2 … π gn ¿Podemos codificar secuencias de secuencias? CODIFICANDO SECUENCIAS de expresiones

16 Propiedades sintácticas como propiedades numéricas. Ahora vamos a intentar definir algunas propiedades sintácticas como propiedades numéricas. Term(n) es verdadero sii la expresión de código n es un término de L A. Atom(n) es verdadera sii la expresión de código n es una fórmula atómica de L A. Wff(n) es verdadera sii la expresión de código n es una fórmula bien formada de L A. Sent(n) es verdadera sii la expresión de código n es una sentencia de L A. Prf(m, n) es verdadera sii m es el código de la demostración de la sentencia de código n. ¿Las funciones anteriores son verificables en un número finito de pasos mecánicos? ¿Cómo?

17 Comencemos con Term(n). Recordemos del capítulo 4.3: Los símbolos no lógicos de L A son {S, 0, +, ×} 0 es una constante. S es una función de ariadad 1. + y × son funciones de aridad 2. +(a, b) ×(a, b) Luego, por comodidad, nos permitimos escribir cosas como (a+b) o (a×b). Luego, la definición recursiva: 0 es un término Las variables son términos Si φ y ψ son términos, entonces +(φ, ψ) y ×(φ, ψ) son términos. Nada más es un término.

18 Term(n): Decodificar n y obtener e = s 0 s 1 s 2 …s k, dónde cada s i es un símbolo de L A y la longitud de e es k+1 Si k = 0 y s 0 es 0 o s 0 es una variable (x, y, z …): Responder: true Terminar Si no: Si s 0 es S: Sea e = s 1 s 2 …s k Responder: Term ( e ) Terminar

19 Si s 0 es + o s 0 es × : Sea e = s 2 s 3 …s k-1 Para símbolo s de e : Si s j es,: Sea a = s 2 s 3 …s j-1 y sea b = s j+1 s j+2 …s k-1 Responder: Term ( a ) Term ( b ) Terminar Si no: Continuar Responder: false Terminar

20 El único símbolo de predicado de L A es la identidad, por lo cual las fórmulas atómicas son todas de la forma (φ = ψ). Suponemos que siempre aparecen los paréntesis. Atom(n): Decodificar n y obtener e = s 0 s 1 s 2 …s k, dónde cada s i es un símbolo de L A y la longitud de e es k+1 Sea e = s 1 s 2 s 3 …s k-1 Para cada simbolo s de e : Si s j es =: Sea a = s 1 s 2 …s j-1 y sea b = s j+1 s j+2 …s k-1 Responder: Term ( a ) Term ( b ) Terminar Si no: Continuar Responder: false Terminar

21 Las fórmulas bien formadas de L A se construyen a partir de las fórmulas atómicas y la aplicación de conectivas lógicas y cuantificadores. De nuevo, suponemos todos los paréntesis. Wff(n): Decodificar n y obtener e = s 0 s 1 s 2 …s k, dónde cada s i es un símbolo de L A y la longitud de e es k+1 Si s 0 es o s 0 es o s 0 es ¬: Sea e = s 1 s 2 …s k Para cada simbolo s de e : Si s j no es una variable: Responder: Wff ( e ) Terminar Si no: Continuar

22 Si no: Si Atom ( e ): Responder: true Terminar Si no: Recorrer los símbolos de e contando los paréntesis para deducir cuál es la conectiva principal: Sacar los paréntesis exteriores. Separar la expresión en dos partes a partir de la conectiva principal. Responder: Wff (a) Wff (b) Terminar

23 Hasta ahora, con las fórmulas bien formadas, permitimos variables libres. Las sentencias son fórmulas bien formadas cerradas, es decir, sin variables libres. Free(n) es verdadera sii la expresión de código n no tiene variables libres: el algoritmo deberá recorrer los símbolos de la expresión, contar las variables y los paréntesis. Sent(n): Responder: ¬ Free (n) Wff (n) Terminar

24 Falta la más importante: Prf(m, n) es verdadera sii m es el código de la demostración de la sentencia de código n. Una demostración es una secuencia finita de sentencias donde cada una de ellas es: Una instancia de un esquema de axioma. El resultado de la aplicación del modus ponens en sentencias anteriores. El resultado de la instanciación de un cuantificador universal. Ya mostramos antes cómo codificar secuencias de expresiones.

25 Axiom(n): es verdadera sii n es el código de una sentencia que es una instancia de un esquema de axioma. Axiom(n) es computable porque los axiomas son recursivos. MP(m, n): es verdadera sii la sentencia de código n se puede obtener a partir de aplicar modus ponens a por lo menos dos sentencias de la secuencia de sentencias de código m. Univ(m, n): es verdadera sii la sentencia de código n se puede obtener a partir de instanciar un cuantificador universal de alguna sentencia de la secuencia de sentencias de código m.

26 MP(m, n): Decodificar m y obtener los códigos de las sentencias de la secuencia g 0,g 1,g 2...g k Decodificar n y obtener t Para cada g i : Decodificar g i y obtener e i Para cada g j : Decodificar g j y obtener e j Si se puede aplicar modus ponens en e i y e j de manera tal de obtener t : Responder: true Terminar Si no: Continuar Responder: false Terminar

27 Univ(m, n): Decodificar m y obtener los códigos de las sentencias de la secuencia g 0,g 1,g 2...g k Decodificar n y obtener t Para cada g i : Decodificar g i y obtener e i Si a partir de e i se puede obtener t por instanciación de un cuantificador universal: Responder: true Terminar Si no: Continuar Responder: false Terminar

28 Prf(m, n): Decodificar m los códigos de las sentencias de la demostración d = g 0,g 1,g 2...g k Para cada g i de d : Si ¬(Axiom(g i ) MP ( (π i-1 gi-1), gi) Univ ( (π i-1 gi-1), g i )): Responder: false Terminar Si g k = n : Responder: true Terminar Si no: Responder: false Terminar

29 Teorema: Term(n), Atom(n), Wff(n), Sent(n) y Prf(m, n) son funciones primitivas recursivas. Demostramos que son computables sólo utilizando ciclos. La demostración rigurosa es bastante más compleja. Hasta ahora

30 UN POCO DE Notación Si φ es una expresión del lenguaje formal L, entonces φ es el número de Gödel (g. n.) de la expresión φ. Dentro de una fórmula φ va a ser igual a escribir el numeral correspondiente a φ. Por ejemplo: Para la expresión S, S= 2 23 = Ahora bien, si escribimos Sdentro de una fórmula, Ses equivalente a escribir su numeral: SSSSS…0, con apariciones de S.

31 Diagonalización La diagonalización de φ es y(y=φ φ) Teorema: existe una función primitiva recursiva diag(n) que devuelve el número de Gödel de la diagonalización de la fórmula bien formada de código n.


Descargar ppt "La aritmetización de la sintaxis Capítulo 15. INTRODUCCIón El objetivo será establecer una relación entre las expresiones de una teoría formal y un código."

Presentaciones similares


Anuncios Google