Bitácora · Lógica · Concepto

Mordisqueo y lectura única de términos

Guía 9 · tramos, el único mordisqueo posible, la cancelación, el Teorema 3 y las funciones definidas por recursión sobre los términos

Un término de tipo τ es una palabra, y una palabra no trae marcados sus cortes. f(t1,…,tn) es la concatenación de f, «(», t1, «,», …, tn y «)», y leída de vuelta nada dice cuál de sus comas separa a t1 de t2. La Guía 9 prueba que, si las piezas tienen que ser términos, hay una sola manera de leerla. La pieza clave es un lema sobre cómo pueden encimarse dos términos —el mordisqueo—, y la consecuencia que la guía remarca es que sobre Tτ se pueden definir funciones por recursión, caso por caso, sin que el valor dependa de cómo se lea el término.

01 · Tramo inicial y tramo final

La guía los define así: β es un tramo inicial de α si hay una palabra γ tal que α=βγ, y es propio si además β∉{ε,α}. En forma similar, β es un tramo final de α si α=γβ para alguna γ, y es propio con la misma condición. En +(X1,X2), +( es tramo inicial propio, X2) es tramo final propio, y la palabra entera es tramo inicial y final de sí misma, pero no propio.

Un hecho de palabras que se usa en todas las pruebas de abajo: dos tramos iniciales de una misma palabra están uno adentro del otro. Si α=βγ=β′γ′, los dos son los primeros símbolos de α, así que el más corto de β y β′ es tramo inicial del más largo. Lo mismo con dos tramos finales. Es una obviedad, y es la mitad de cada prueba de lectura única; la otra mitad es saber que dos términos en esa situación tienen que ser iguales.

02 · Constantes que se mordisquean

La definición de tipo exige que ningún nombre de constante sea subpalabra propia de otro nombre de constante. Eso garantiza que un nombre de constante nunca es tramo inicial ni tramo final propio de otro. Lo que sí puede pasar es que un tramo final propio de un nombre de constante c sea un tramo inicial propio de otro nombre de constante d: que haya palabras x,y,z, las tres distintas de ε, tales que c=xy y d=yz. En ese caso se dice que c y d se mordisquean.

El ejemplo de la guía es τ=({uno,noli},∅,∅,∅). Es un tipo, porque ninguno de los dos nombres es subpalabra del otro, y uno y noli se mordisquean: con x=u, y=no y z=li, uno=xy y noli=yz. Los dos son términos de tipo τ —están en T0τ=Var∪{uno,noli}—, así que dos términos sí pueden encimarse: el final de uno es el principio del otro.

03 · El Lema 2: el único mordisqueo posible

El lema siguiente dice que ése es el único caso de mordisqueo de términos.

Lema 2 (Mordisqueo de términos). Sean s,t∈Tτ y supongamos que hay palabras x,y,z, con y≠ε, tales que s=xy y t=yz. Entonces x=z=ε o s,t∈𝒞. En particular, si un término es tramo inicial o final de otro término, entonces dichos términos son iguales.

Leído despacio: si el final y de s es el principio de t, o el encimado es total —x=z=ε, y entonces s=y=t— o los dos son nombres de constante, como uno y noli. Con una variable o un término compuesto en juego, no hay mordisqueo que no sea la igualdad.

La guía lo acepta sin prueba, y su Ejercicio 9 es, textual, «No haga la prueba del lema anterior». Ésa es la consigna: el lema se usa como herramienta. La idea de por qué vale, cuando s es compuesto, está en contar paréntesis: s termina en «)», así que y tiene alguno; un tramo final de s que deja afuera algún paréntesis de s tiene más «)» que «(», y ningún tramo inicial de un término tiene más «)» que «(». Entonces y se lleva todos los paréntesis de s, y de ahí, con un poco más de trabajo, sale el resto.

El «en particular» sí conviene saber sacarlo, porque es la forma en que el lema se usa. Si s es tramo inicial de t, hay w con t=sw. Se aplica el lema al par s,t con x=ε, y=s —que no es vacía, porque ningún término lo es— y z=w: s=εs y t=sw. Entonces w=ε, y t=s; o s,t∈𝒞, y como s es subpalabra de t y ningún nombre de constante es subpalabra propia de otro, también s=t. Si s es tramo final de t, t=ws, y el lema va al par t,s con x=w, y=s, z=ε; los dos casos terminan igual.

Dicho al revés: ningún término es tramo inicial propio ni tramo final propio de otro. Tampoco uno y noli, que se mordisquean sin que ninguno sea tramo del otro.

04 · Cancelar términos

El primer uso es el Ejercicio 10:

Ejercicio 10. Sea τ un tipo. Si t1,t2,s1,s2∈Tτ y t1t2=s1s2, entonces t1=s1 y t2=s2.

Prueba. t1 y s1 son tramos iniciales de la misma palabra t1t2=s1s2, así que uno es tramo inicial del otro. En cualquiera de los dos casos, por el «en particular» del Lema 2, t1=s1. Entonces t1t2=t1s2, y como las dos palabras coinciden símbolo a símbolo, lo que sigue a los primeros |t1| símbolos también coincide: t2=s2. ∎

Sin la hipótesis de que las cuatro piezas son términos no se cancela nada: la palabra abc es ab seguida de c y también a seguida de bc. Con términos, en cambio, el corte entre t1 y t2 está forzado.

05 · El Teorema 3: lectura única de términos

Teorema 3 (Lectura única de términos). Dado t∈Tτ se da una y sólo una de las siguientes:

  1. t∈Var∪𝒞;
  2. hay únicos n≥1, f∈ℱn, t1,…,tn∈Tτ tales que t=f(t1,…,tn).

Más aún, si t∈Tk+1τ, entonces cuando se da (2) los términos t1,…,tn están en Tkτ.

Prueba. Son excluyentes. Ni las variables ni los nombres de constante tienen paréntesis, y f(t1,…,tn) sí.

Se da alguna. t∈Tkτ para algún k. Si k=0, vale (1). Si k≥1, el Lema 1 (Menú para términos) da (1) o la existencia de lo que pide (2). Falta la unicidad en (2).

Unicidad. Supongamos t=f(t1,…,tn)=g(s1,…,sm), con n,m≥1, f∈ℱn, g∈ℱm y todos los tj, sj términos. Ningún nombre de función tiene paréntesis, así que f y g son, los dos, el tramo de t anterior al primer «(»: f=g, y entonces n=m=a(f). Sacando «f(» de las dos escrituras queda

t1,t2,…,tn)=s1,s2,…,sn)

así que t1 y s1 son tramos iniciales de una misma palabra, uno es tramo inicial del otro, y por el Lema 2 t1=s1. Se cancela t1 con la coma que lo sigue, queda t2,…,tn)=s2,…,sn), y el mismo razonamiento da t2=s2, y así hasta tn=sn.

Más aún. Sea t∈Tk+1τ y supongamos que se da (2). El Menú dice que t está en Var∪𝒞, cosa que (2) excluye, o que t=g(s1,…,sm) con s1,…,sm∈Tkτ. Por la unicidad, n=m, f=g y tj=sj, así que t1,…,tn∈Tkτ. ∎

La prueba también dice cómo leer un término de afuera hacia adentro: el nombre de función es lo que está antes del primer «(», su aridad dice cuántas piezas buscar, y cada pieza es el único tramo inicial de lo que queda que es un término. Quien lee de esta forma no elige nada, y por eso decidir si una palabra es término es un procedimiento.

06 · Las piezas tienen que ser términos

La unicidad del Teorema 3 es entre descomposiciones cuyas piezas son términos. Sin eso, falla. Es el Ejercicio 2(h):

Ejercicio 2(h). Sea τ un tipo. Si f∈ℱ2 y α,β son palabras tales que f(α,β)∈Tτ, entonces α,β∈Tτ.

Es falso. En el tipo de los reticulados terna, con f=s, tomá α=s(X1 y β=X2),X3. Entonces f(α,β) es la concatenación de s, «(», s(X1, «,», X2),X3 y «)», o sea s(s(X1,X2),X3), que es un término de T2τ. Pero α tiene un «(» y ningún «)», y β empieza con X sin ser una variable: ninguna de las dos piezas es término. La coma que separa a α de β no es la que separa los argumentos. La prueba del Teorema 3 no se aplica porque compara t1 con s1 usando el mordisqueo, y el mordisqueo sólo habla de términos.

Lo que sí vale es saber que una de las piezas es término. Es el Ejercicio 11:

Ejercicio 11. Sea τ un tipo. Si f∈ℱ2 y f(α,t),t∈Tτ, entonces α∈Tτ.

Prueba. Sea u=f(α,t). Tiene paréntesis, así que no está en Var∪𝒞, y por el Teorema 3 hay g∈ℱm y s1,…,sm∈Tτ con u=g(s1,…,sm). Como en la prueba del teorema, f y g son el tramo de u anterior al primer «(», así que g=f y m=2. Sacando «f(» queda α,t)=s1,s2). Lo que se sabe que es término es t, así que se compara por atrás: sacando el «)» final, t y s2 son tramos finales de una misma palabra, uno es tramo final del otro, y por el Lema 2 t=s2. Cancelando t y la coma que lo precede, α=s1∈Tτ. ∎

Por adelante no se podía: comparar α con s1 pide que α sea término, que es justo lo que había que probar. Los Ejercicios 10 y 11, con el 12, están resueltos en Se compara por el lado de lo que ya se sabe, y qué pasa con cada coma que uno prueba como separadora está en Un corte equivocado rompe las dos piezas.

07 · Definir funciones por recursión

La guía remarca por qué el Teorema 3 importa: permite definir recursivamente funciones con dominio contenido en Tτ. Su ejemplo es una función F:Tτ→Tτ dada por

Las cuatro ecuaciones definen una función porque cada término cae en exactamente una de ellas, con ingredientes únicos. Eso es el Teorema 3: un término es una variable, o un nombre de constante, o un f(t1,…,tn) con f, n y los tj determinados. Y el «más aún» asegura que la recursión termina: si t∈Tk+1τ, las llamadas a F del lado derecho son sobre términos de Tkτ, así que F queda definida primero en T0τ, después en T1τ, y así. La guía lo dice al revés: si la unicidad de la lectura no fuera cierta, las ecuaciones no estarían definiendo una función, porque el valor de F en un término dependería de cuál descomposición se tome.

Calculada, en el tipo τ=({0,1},{+,×,↑},∅,a) de la guía, con a(+)=2, a(×)=3 y a(↑)=1, sobre el término t=×(+(X1,X2),↑(+(0,X3)),1), de T3τ. Cada línea lee de afuera el primer F(…) que queda y aplica la única ecuación que le corresponde:

  1. F(t)=×(F(+(X1,X2)),F(↑(+(0,X3))),F(1))×∈ℱ3
  2. =×(+(X2,X1),F(↑(+(0,X3))),F(1))+∈ℱ2
  3. =×(+(X2,X1),↑(F(+(0,X3))),F(1))↑∈ℱ1
  4. =×(+(X2,X1),↑(+(X3,0)),F(1))+∈ℱ2
  5. =×(+(X2,X1),↑(+(X3,0)),1)1∈𝒞

Cinco llamadas a F, una por cada término que la recursión visita. Ojo con la cuarta ecuación: del lado derecho no aparece F. Da vuelta los dos argumentos y los deja como están, así que una binaria adentro de otra binaria no se toca: F(+(+(X1,X2),X3))=+(X3,+(X1,X2)). Con el término abierto de la guía es un solo paso:

F(+(+(↑(X4),×(X2,1,0)),×(1,X2,X3))) =+(×(1,X2,X3),+(↑(X4),×(X2,1,0)))

F da vuelta las binarias a las que se llega sin atravesar otra binaria.

Y sin lectura única, ¿qué se rompería? Si +(+(X1,X2),X3) se pudiera leer como +(α,β) con α=+(X1 y β=X2),X3, la cuarta ecuación daría +(β,α)=+(X2),X3,+(X1), que no es +(X3,+(X1,X2)) y ni siquiera es un término. F tendría dos valores en el mismo término. El Teorema 3 es lo que descarta esa segunda lectura: α y β no son términos.

Recursión F, una llamada por vez — elegí un término del tipo ({0, 1}, {+, ×, ↑}, ∅, a) y desarmá F(t): cada paso lee de afuera el primer F(…) pendiente y aplica la única ecuación que le toca.

x7 es la variable 7; * vale por × y ^ por ↑.

    pasos 0 F pendientes 1 F(t) sin calcular
    ¿Y si se pudiera cortar en otra coma?

    comas probadas 0 con dos términos 0 valores distintos de +(β, α) 0

    Para tener a mano

    1. β es tramo inicial de α si α=βγ; tramo final si α=γβ; propio si β∉{ε,α}. Dos tramos iniciales de una misma palabra están uno adentro del otro, y lo mismo dos finales.
    2. Dos nombres de constante pueden mordisquearse —uno y noli—, pero ninguno es tramo propio del otro: lo prohíbe la definición de tipo.
    3. Lema 2: si s=xy, t=yz, y≠ε, con s,t términos, entonces x=z=ε o s,t∈𝒞. La guía lo acepta sin prueba (Ejercicio 9). Se usa por su «en particular»: un término que es tramo inicial o final de otro es igual a él.
    4. Cancelación (Ejercicio 10): t1t2=s1s2 con los cuatro términos da t1=s1 y t2=s2.
    5. Teorema 3: todo término es de Var∪𝒞 o un único f(t1,…,tn), y si t∈Tk+1τ las piezas están en Tkτ. La prueba: f es lo anterior al primer «(», y las piezas se igualan una por una con el Lema 2.
    6. Las piezas tienen que ser términos: f(α,β)∈Tτ no da α,β∈Tτ (2(h)), pero si t es término, f(α,t)∈Tτ da α∈Tτ (11). Se compara por el lado de la pieza que se sabe término.
    7. Por la lectura única se definen funciones sobre Tτ por recursión: una ecuación por forma, y la recursión baja de nivel. La F de la guía da vuelta los argumentos de una binaria sin entrar en ellos.
    ← Anterior Siguiente → Inicio
    Relacionados Variables y términos de tipo τ Fórmulas de tipo τ y su lectura única Ocurrencias y reemplazos Un corte equivocado rompe las dos piezas Se compara por el lado de lo que ya se sabe