Guía 9 · un invariante que la palabra viola, o suponer que es y leerla de afuera hasta el absurdo; cuándo conviene cada una, y por qué contar paréntesis no alcanza
«Está mal escrita» no es una prueba. Que una palabra no sea un término quiere decir que no está en ningún , y esos conjuntos se arman de adentro hacia afuera, sin fin: no hay una lista donde buscarla y no encontrarla. La guía da dos maneras de probarlo, en la p. 4, a propósito del Ejercicio 8. La primera es encontrar una propiedad que tienen todos los términos y la palabra no. La segunda es suponer que es un término y leerla de afuera hacia adentro hasta que algo no cierre. Las dos sirven igual para fórmulas, y casi siempre se terminan usando juntas.
Un término de tipo es una palabra: una sucesión finita de símbolos. , y agrega a todas las palabras con y . es la unión de todos los niveles. Entonces quiere decir que para todo , y es una afirmación sobre infinitos conjuntos a la vez. Mirar los primeros niveles no prueba nada: la palabra podría aparecer más arriba. Hay dos maneras de cubrir todos los de una vez.
Un invariante. Una propiedad de palabras que cumplen todos los términos. Se prueba una sola vez, en general por inducción en el nivel: vale en , y si vale en vale en . Después alcanza con mirar que no cumple .
El absurdo. Suponer . Entonces para algún , y el Lema 1 de la guía —el menú— dice qué forma tiene: si , o con los en . Leyendo así, pieza por pieza, se llega a una pieza que no puede ser lo que la forma exige.
La guía lo dice así: «encontrar una propiedad que posean todos los términos la cual no cumpla dicha palabra». Éstas son las que da la guía o salen de ella. Para todo término , escribiendo para el símbolo de la posición y para la cantidad de veces que aparece el símbolo :
Para fórmulas hay cuatro con la misma forma. , por inducción: las atómicas tienen un par más los de sus términos, agrega uno, y ninguno. El primer símbolo es el de un nombre de relación, , , o «(» (Ejercicio 14(b)). El último es siempre «)» (Ejercicio 14(a)): las atómicas terminan así, y y se agregan adelante. Y después de una coma empieza un término, porque en una fórmula las comas sólo viven adentro de las atómicas.
Usar uno es una línea. , el 8(a), tiene dos «(» y un «)»: por el Ejercicio 3 no es un término. El 8(e) tiene seis «(», uno por cada y el de , y siete «)». En el Ejercicio 15, sobre el tipo , el (a) tiene una coma seguida de y el (b) una coma seguida de «(»: ninguno de los dos símbolos empieza un término, y ninguna de las dos es fórmula. El (b) dicho de otro modo: es una fórmula, no un término, y no puede ser argumento de .
Lo que la línea no muestra es que el invariante es un resultado. La cátedra corrige con una regla: si se usa un resultado de una guía, hay que enunciarlo y probarlo. «Por el Ejercicio 3» va acompañado de la inducción del Ejercicio 3, aunque sean cuatro renglones; las que salen sin inducción, como el primer símbolo, se justifican con el menú en una frase.
El tipo del Ejercicio 8 es , con y . El (d) es , y la guía lo resuelve suponiendo que es un término. Desarmado:
La elección de la coma separadora se puede hacer también por casos: si es la primera, ; si es la segunda, . Las dos piezas empiezan con y tienen una coma, y (∗) las descarta igual. Es la misma idea: el paso 3 fija la aridad, la aridad dice cuántas comas separan, y las separadoras se eligen entre las que hay.
El 8(b) es más corto. Si fuera un término, , , y hay una sola coma, que tiene que ser la separadora: . Pero no es una variable ni un nombre de constante, y tiene largo 1 < 4, así que por el Ejercicio 4 no es un término. El 8(c) es igual: en , , el numeral normal, que no es una constante ——, ni una variable, y tiene largo 1.
Con fórmulas, el primer símbolo decide la forma, como en la tabla del Teorema 7: con es , con o es , con «(» es o , y si no, una atómica . El 15(c) es . Si fuera fórmula, como empieza con sería ; la variable termina en el primer negrita, así que y . empieza con «(», y no es : empezaría con , y ningún término empieza con un símbolo de un nombre de relación. Es , y como es el único nexo binario, . Pero termina en el negrita de , y toda fórmula termina en «)». Absurdo.
Fijate cómo terminan las cuatro lecturas: con un invariante. En el 8(b) y el 8(c) es el largo, en el 15(c) el último símbolo, en el 8(d) el (∗). La palabra entera los cumple a todos; una pieza no. Leer de afuera no reemplaza al invariante: lo lleva hasta la pieza donde falla.
Primero el invariante, porque cuando funciona es una línea. De las ocho palabras de los Ejercicios 8 y 15, cuatro caen con uno de la lista: el 8(a) y el 8(e) contando paréntesis, el 15(a) y el 15(b) por la coma. Las otras cuatro —8(b), 8(c), 8(d) y 15(c)— cumplen todos, enteras, y piden la lectura.
Se ve venir mirando dónde está el error. Si está en una juntura —una coma seguida de algo que no empieza un término, un «)» seguido de una letra, un paréntesis de más—, algún invariante lo ve, porque los invariantes miran símbolos sueltos, pares de símbolos vecinos o conteos. Si la palabra está bien armada y lo que falla es qué hay adentro —un argumento que no es término, como o , o una cantidad de argumentos que no es la aridad—, hay que leerla: los invariantes de la lista no saben qué es un nombre de constante ni cuántos argumentos lleva .
La guía dice que con esta estrategia «se pueden hacer todos los incisos restantes». Es cierto, pero para el 8(d) el invariante habría que inventarlo. Por ejemplo, contar comas: cada «(» de un término abre un y viene pegado a su nombre, y ese aporta comas. En el 8(d) el único «(» sigue a , así que un término tendría una coma, y la palabra tiene dos. Es correcto, y probarlo es otra inducción; leer de afuera cuesta menos.
La lectura, en cambio, nunca se queda sin respuesta. Mirar el primer símbolo, elegir la forma, cortar y seguir con las piezas es un procedimiento que siempre termina, porque las piezas son más cortas: así se ve que decidir si una palabra es fórmula es efectivamente computable, que es lo que desarrolla El primer símbolo ya dice qué forma tiene. El precio es el largo de la prueba, y que cada corte hay que justificarlo.
Es el primer invariante que uno prueba, y el más débil. Tener tantos «(» como «)» es necesario para ser término o fórmula, no suficiente: el conteo no mira dónde están ni qué hay entre ellos. El 15(a)
tiene seis y seis, y además bien anidados: cada «(» tiene su pareja, y la de la posición 2 cierra al final. Lo que falla es la coma de la posición 27, que pega dos fórmulas como si fueran argumentos. El 15(b) tiene ocho y ocho, el 15(c) tres y tres, y el 8(b), el 8(c) y el 8(d), uno y uno. De las ocho palabras, el conteo delata dos.
La guía tiene otro ejemplo, en la p. 10: no es una fórmula del tipo de los reticulados con como relación, y la guía avisa que eso «no es trivial de la definición de fórmula y requiere de una demostración». Un «(» y un «)», empieza con «(», termina en «)», no tiene comas: ningún invariante de la lista la toca. La lectura la resuelve en un renglón: si fuera fórmula, por empezar con «(» sería o , y no tiene ni ni nexo. La forma correcta es .
Lo mismo pasa con , a la que le faltan los paréntesis de afuera: dos y dos, empieza y termina bien. Leída, si fuera sin los paréntesis de afuera quedaría , y empezaría con , que no es primer símbolo de ninguna fórmula; si fuera , empezaría con y por (∗) sería , y sería una variable con un «)». De nuevo, el que cierra es un invariante sobre una pieza.