Prueba de confluencia para un sistema de reescritura simple


14

Supongamos que tenemos un lenguaje simple que consiste en los términos:

  • true
  • false
  • si son términos, entonces también lo es i ft1,t2,t3ift1thent2elset3

Ahora asuma las siguientes reglas de evaluación lógica:

iftruethent2elset3t2[E-IfTrue]iffalsethent2elset3t3[E-IfFalse]t1t1ift1thent2elset3ift1thent2elset3[E-If]

Supongamos que también agregamos la siguiente regla funky:

t2t2ift1thent2elset3ift1thent2elset3[E-IfFunny]

Para este lenguaje simple con las reglas de evaluación dadas, deseo demostrar lo siguiente:

Teorema: Si y r t entonces hay algún término u tal que s T y T T .rsrtusutu

Estoy probando esto por inducción en la estructura de . Aquí está mi prueba hasta ahora, todo funcionó bien, pero estoy atrapado en el último caso. Parece que la inducción en la estructura de r no es suficiente, ¿alguien puede ayudarme?rr

Prueba. Por inducción en , separaremos todas las formas que r puede tomar:rr

  1. es una constante, nada que demostrar ya que una forma normal no evalúa nada.r
  2. si es verdadero, entonces r 2 más r 3 . (a) ambas derivaciones se realizaron con la regla E-IfTrue. En este caso s = t , entonces no hay nada que probar. (b) una derivación se realizó con la regla E-IfTrue, la otra con la regla E-Funny. Suponga que r s se realizó con E-IfTrue, el otro caso se prueba de manera equivalente. Ahora sabemos que s = r 2 . También sabemos que t = si es verdadero, entonces r 2 más r 3 y que existe alguna derivación r 2r=r2r3s=trss=r2t=r2r3 (la premisa). Si ahora elegimosu=r2 , concluimos el caso.r2r2u=r2
  3. si es falso entonces r 2 más r 3 . Equivalentemente probado como arriba.r=r2r3
  4. si r 1 entonces r 2 más r 3 con r 1 verdadero o falso. (a) ambas derivaciones se realizaron con la regla E-If. Ahora sabemos que s = si r 1 entonces r 2 más r 3 y t = si r 1 entonces r 2 más r 3 . También sabemos que existen derivaciones r 1r 1r=r1r2r3r1s=r1r2r3t=r1r2r3r1r1y (las premisas). Ahora podemos usar la hipótesis de inducción para decir que existe algún término r 1 tal que r 1r 1 y r 1r 1 . Ahora concluimos el caso diciendo u = si r 1 entonces r 2 más r 3 y notando que s u y t r1r1r1r1r1r1r1u=r1r2r3sutupor la regla E-If. (b) una derivación fue realizada por la regla E-If y otra por la regla E-Funny.

Este último caso, donde una derivación fue realizada por E-If y otra por E-Funny es el caso que me falta ... Parece que no puedo usar las hipótesis.

Ayuda será muy apreciada.


@Gilles extremadamente bien hecho con la edición. No sabía que el motor TeX de SE era capaz de todo eso ... :-)
codd

¿Me equivoco o este ejercicio está tomado de Pierce "Tipos y lenguajes de programación"?
Fabio F.

@FabioF. De hecho, es del libro Tipos y lenguajes de programación de Pierce. Él proporciona una prueba que no me parece clara, debido a la forma en que realiza la inducción. Es por eso que traté de demostrarlo yo mismo a través de la inducción en la estructura. Estaba pensando en mencionar que era del libro, pero pensé que sería bastante irrelevante. Bien notado, sin embargo!
codd

Respuestas:


7

Okay, so let's consider the case that r=ift1thent2elset3, s has been derived by applying the E-If rule and t has been derived by applying the E-Funny rule: So s=ift1thent2elset3 where t1t1 and t=ift1thent2elset3 where t2t2.

The u we're looking for is u=ift1thent2elset3. su follows from rule E-Funny and tu follows from rule E-If.


Beat me to it. Nice job.
Patrick87

Gosh, I was really looking too far... Thanks!
codd

You mixed them up though, su follows from E-Funny. Or am I seeing something wrong?
codd

@Jeroen You're right - I mixed them up. Fixed now.
sepp2k

8

A little terminology may help if you want to look this up: these rules are rewriting rules, they have nothing to do with type systems¹. The property you're trying to prove is called confluence; more specifically, it's strong confluence: if a term can be reduced in different ways at one step, they can converge back at the next step. In general, confluence allows there to be any number of steps and not just one: if rs and rt then there is u such that su and tu — if a term can be reduced in different ways, no matter how far they've diverged, they can eventually converge back.

The best way to prove a property of such inductively defined rewriting rules is by induction over the structure of the derivation of the reduction, rather than the structure of the reduced term. Here, either works, because the rules follow the structure of the left-hand term, but reasoning on the rules is simpler. Instead of diving into the term, you take all pairs of rules, and see what term could be a left-hand side for both. In this example, you will get the same cases in the end, but a bit faster.

In the case that gives you trouble, one side reduces the “if” part and the other side reduces the “then” part. There's no overlap between the two parts that change (t1 in [E-If], t2 in [E-IfFunny]), and there's no constraint on t2 in [E-If] or on t1 in [E-IfFunny]. So when you have a term to which both rules apply — which must be of the form ifr1thenr2elser3, you can choose to apply the rules in either order:

ifr1thenr2elser3[E-If][E-IfFunny]ifr1thenr2elser3ifr1thenr2elser3[E-IfFunny][E-If]ifr1thenr2elser3

¹ You'll sometimes see types and rewriting together, but at their core they're orthogonal concepts.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.