Asıl soruları yanıtlamadan önce, şu ana kadar yaptığınız iş hakkında bir açıklama: 2.a'daki sol iptal. genel olarak doğru değilse, kritik çift sadece . Sonuç olarak, kritik çifti 2.b almazsınız. Bu iptal ile ilgili sorun, aldığınız denklemin genel olarak başladığınız aksiyomlardan takip etmemesidir; örneğin, halkalar dilinde çalışıyorsanız, bir noktada kritik çifti türetebilirsiniz , ancak y'yi çıkarmak yanlış olur (bu yalnızca önemsiz bir model). Huet dahil hiçbir ses yeniden yazma prosedürü bu azalmaya izin vermemelidir.x ∘ ( e ∘ z) ≈ x ∘ z0 ∗ x ≈ 0 ∗ yx ≈ y
Öte yandan, sen (değişken-adını versiyonları) birleştirerek Alacağınız kritik çiftleri eksik veya tümü ile (yani kullanarak ikinci ). Ortaya çıkan kritik çiftlerx ∘ ex ∘ i ( x )( x ∘y) ∘ z∘
- x ∘ ( y∘ E ) ← ( x ∘ y) ∘ e → x ∘ y ; azaltma işleminden sonra önemsiz denklem vex ∘ y≈ x ∘ y
- x ∘ ( y∘ I ( x ∘ y) ) ← ( x ∘ y) ∘ i ( x ∘ y) → e , bu daha da azaltılamaz ve kuralını verir) ( tıpkı yaptığınız gibi LPO'yu tanımlamak için kullanılan önceliğinde varsayalım ).x ∘ ( y∘ I ( x ∘ y) ) → e∘ ▹ e▹x ∘ i ( x ) ≈ e
Temel tamamlama prosedürü için:
- Kritik bir çift oluşturduğunuzda, geçerli kurallar dizisini kullanarak her iki tarafı da mümkün olduğunca azaltırsınız. Sonuçta elde edilen normal formlar eşit değilse, yeni bir kural oluşturursunuz. Örneğin, 2.c. yeni bir kural verir . Öte yandan, ile arasındaki birleştirmenin kritik çifti , önemsiz ve atıldı.x ∘ ( i ( x ) ∘ z) → e ∘ z( x ∘ y) ∘ zx1∘ y1( x ∘ y) ∘ ( z∘ z1) ← ( ( x ∘ y) ∘ z) ∘ z1→ ( x ∘ ( y∘ z) ) ∘ z1x ∘ ( y∘ ( z∘ z1) ) ≈ x ∘ ( y∘ ( z∘ z1) )
- Eğer yeni bir kural oluşturduğunuzda , bunu arasındaki tüm kritik çiftleri ve mevcut kuralları göz önüne almalıyız ait unifiability denetleme olmayan her değişken subterm ile ve tersine. Ayrıca, üst üste binme için yaptığımız gibi , kendiliğinden çakışmaları, yani nin kendi alt terimleriyle birleştirilemezliğini kontrol etmeyi unutmayın . Yalnızca mevcut kuralların tüm kritik çiftleri incelendiğinde ve yeni kurallar üretildiğinde veya atıldığında durursunuz.l → rl1→ r1, … , Ln→ rnllbenl
Bu prosedür biraz geliştirilebilir. Özellikle, eski kuralları basitleştirmek için yeni kurallar kullanabilirsiniz (ve önemsiz hale gelirlerse onları atmak, yani yeni kural tarafından kabul edilirler) ve incelemek üzere bir sonraki kritik çifti seçmek için iyi bir sezgisel tarama, kural miktarı.