Cevap, Term Rewrite System ile ne demek istediğinize bağlı .
Tanıtıldığında, Term Rewrite Systems veya TRSes kavramı , şimdi formun hesaplama kurallarından oluşan bir dizi olan birinci dereceden TRS'ler olarak adlandırılan şeyi açıkladı.
l→r
burada ve olan birinci derece terimleri formununlr
t:= x ∣ f(t1,…,tn)
burada bir değişkendir ve , keyfi olarak adlandırılan ancak imza olarak adlandırılan sabit set alınan bir işlev sembolüdür ve her bir için bir dizi argümanı da düzeltir .xfΣf∈Σ
Kurallara uygulanan birkaç yaygın kısıtlama vardır, örneğin ancak bunlara buradan gerekmiyor.Var(r)⊆Var(l)
Bu tanım, her zamanki lambda hesabı ile birlikte : Kural
, yapıcı "olarak ifade edilemez " bağlanan oluşumu in (uygulama olsa iyi). Olası bir çözüm ve yeniden yazma sistemlerinin kendisinden daha eski olan bir çözüm, her bir terimini bağlayıcılığı içermeyen başka bir terime dönüştürmektir.β
(λx.t) u→t[u/x]
λxtλ
Bunun bir yolu, imzalı bir yeniden yazma kuralı ve
imzalı bir ünlü birleştirici hesabıdır.
ve
SKΣ={S, K,app}
app(app(K,x),y)→x
app(app(app(S,x),y),z)→app(app(x,z),app(y,z))
De Bruijn endeksleri ve açık ikameler ile lambda terimlerini içeren başka, daha sezgisel bir kodlama var, ancak buraya girmeyeceğim.
Birinci dereceden kodlamalara rağmen, hesabının indirgeme davranışıyla ilgili teknik sorunların , TRS kavramının bağlayıcıları olan yapıcıları içerecek şekilde genişletilmesiyle daha iyi ele alındığı anlaşıldı . Buna genellikle Yüksek Dereceli Yeniden Yazım Sistemleri terimi denir . Şartlar artık formdan alınmıştırλ
t := x(t1,…,tn) ∣ f(x11…x1i1.t1,…,xn1…xnin.tn)
Yine nerede , ama şimdi her edilir bağlı olarak . İmzaların her bir bağımsız değişken tarafından kaç değişkenin bağlı olduğunu belirtmesi gerekir. Şimdi temsil eden terim için yazabiliriz . Küçük bir çalışma ile uygun ikame kavramlarını tanımlayabilirsiniz.f∈Σxijtiabs(x.t)λx.t
Burada, yeniden yazma kuralını neyin oluşturduğu konusunda daha az fikir birliği vardır . Bir sorun, yeniden yazmanın karar verilebilir olmasını istiyoruz ve bu nedenle sol tarafın bir terimle eşleşip eşleşmeyeceğine karar verilmesi gerekiyor. Ancak bu genellikle karar verilebilir olduğuna inanılan modulo kabul edilir, ancak sadece son derece karmaşık ve yavaş algoritmalarla (ve sadece kararsızdır!).βηβ
Bu nedenle sol taraflar, genellikle "Miller kalıpları" olmak üzere bazı hoş alt kümelerde olmakla sınırlıdır. Birinci dereceden dava için bir takım sonuçlar genelleştirilir, ancak birkaç kötü sürpriz vardır.
Sadece birinci dereceden sistemleri almak ve ad hoc ve indirimleriyle birlikte terim yapısına ve uygulama eklemek de yaygındır . Bu, (bazı) genellik pahasına oldukça makul sistemler sağlar.λ βη
Tabii ki olağan hesabı doğrudan bu sistemlere yazılabilir. Örneğin, kuralı:λβ
app(abs(x.y(x)),z)→y(z)
Tanımlar ve temel sonuçlar hakkında oldukça iyi bir genel bakış burada Nipkow ve Prehofer tarafından verilmektedir .