La respuesta es que depende de lo que quiere decir con Sistema de reescritura de términos .
Cuando se introdujo, el concepto de Sistemas de reescritura de términos , o TRSes, describió lo que ahora se llama TRS de primer orden , que es simplemente un conjunto de reglas de cálculo de la forma
l → r
donde y son términos de primer orden de la formarlr
t : = x ∣ f ( t1, ... , tnorte)
donde es una variable es un símbolo de función tomado de un conjunto arbitrario, pero fijo , llamado firma , que también corrige varios argumentos para cada .XFΣf∈Σ
Hay un par de restricciones comunes impuestas a las reglas, por ejemplo, pero no necesitamos entrar en ellas aquí.Var(r)⊆Var(l)
Con esta definición, el cálculo lambda habitual, con la regla :
no se puede expresar, ya que el constructor " " une la aparición de en (Sin embargo, la aplicación está bien). Una posible solución, y una que es más antigua que la teoría de reescribir los sistemas en sí, es convertir cada término en otro tipo de término, que no implique vinculación.β
(λx.t) u→t[u/x]
λxtλ
Una forma es el famoso cálculo del combinador , que es una regla de reescritura con la firma y las reglas
y
SKΣ={S, K,app}
app(app(K,x),y)→x
app(app(app(S,x),y),z)→app(app(x,z),app(y,z))
Hay otra codificación más intuitiva que implica términos lambda con índices de Bruijn y sustituciones explícitas, pero no voy a entrar aquí.
A pesar de las codificaciones de primer orden, quedó claro que los problemas técnicos con el comportamiento de reducción del cálculo se abordaron mejor extendiendo la noción de TRS para incluir constructores con aglutinantes. Esto a menudo se conoce con el término Sistemas de reescritura de orden superior . Ahora se toman los términos del formularioλ
t := x(t1,…,tn) ∣ f(x11…x1i1.t1,…,xn1…xnin.tn)
Donde nuevamente , pero ahora cada está enlazado en . Las firmas necesitan especificar cuántas variables están unidas por cada argumento. Ahora podemos escribir para el término que representa . Con un poco de trabajo, puede definir nociones apropiadas de sustitución.x i j t i a b s ( x . t ) λ x . tf∈Σxijtiabs(x.t)λx.t
Aquí hay menos consenso sobre lo que constituye una regla de reescritura . Un problema es que queremos que la reescritura sea decidible, por lo que debe ser decidible si un lado izquierdo coincide con un término. Pero esto generalmente se toma como módulo que se cree que es decidible, pero solo con algoritmos extremadamente complejos y lentos (¡y solo es indecidible!).ββηβ
Por lo tanto, los lados izquierdos están restringidos a estar en algún subconjunto agradable, a menudo los "patrones de Miller". Se generalizan varios resultados para el caso de primer orden, aunque hay algunas sorpresas desagradables.
También es común tomar sistemas de primer orden y simplemente agregar y aplicación a la estructura de términos, junto con reducciones ad hoc y . Esto produce sistemas bastante razonables, a costa de (alguna) generalidad.β ηλ βη
Por supuesto, el cálculo habitual se puede escribir directamente en estos sistemas. Por ejemplo, la regla :βλβ
app(abs(x.y(x)),z)→y(z)
Nipkow y Prehofer dan una descripción bastante decente de las definiciones y resultados básicos aquí .