Düzenlidir. İlk önce herhangi bir tabanda genelleme yapacak olan ikili olarak çalışalım> 1. söz konusu dil olsun. A = 1, b = 0 için elde ederizMa,b
M1,0={1,10,11,100,101,...}
bu, üzerindeki tüm dizelerdir ve bunların önünde sıfır yoktur, bu da normaldir (bunun için düzenli bir ifade oluşturun).{0,1}
Şimdi herhangi biri için , hala b 0 ile aldığımız dan olan bir tarafından sayısal olarak çarparak, dönüşümü gerçekleştirerek her dizesi . Bu, sabit dizge a'nın bitlerine bağlı olan bir dizi kaydırma ve ekleme ile bitsel olarak yapılabilir . İhtiyacımız olan iki dönüşüm:M a , 0 M 1 , 0 ˉ x → ¯ a x M a , 0aMa,0M1,0x¯→ax¯¯¯¯¯¯Ma,0ˉ axa¯
ˉ x → ˉ x 0x¯→2x¯¯¯¯¯ ,x¯→x¯0
ve
x¯→2x+x¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Sağda 0'ı birleştirmek düzenliliği açıkça korur. Bu nedenle, sadece ikinci operasyonun düzenliliği koruduğunu kanıtlamamız gerekir. Bunu yapmanın yolu , sağdan sola üzerinde çalışan bir sonlu durum dönüştürücüsüdür . Bu en zor adım. Durumları kullanmak yerine, sözde kod programı ve bazı sınırlı yardımcı bellek (bazı bit değişkenleri gibi) ile yapmayı öneririm. Bellek tüm girişler üzerinde sabit bir boyutta olduğu ve kesinlikle sağdan sola taradığınız sürece, sonlu bir durum aktarımıdır ve düzenliliği korur.x¯
Son olarak, dan elde etmek için her dizeye sayısal olarak eklememiz gerekir , ancak bu , sabit sayı b'ye bağlı olan benzer bir dönüştürücü ile yapılır . M a , 0 b T bMa,bMa,0bTb
Herhangi bir tabanda aynısını yapmak için, ek olarak d'ye bağlı bir dönüştürücü kullanarak, bu tabanda tek bir basamak çarpma işleminin nasıl yapılacağını gösterin . Bununla, çok basamaklı sayılarla çarpabilir ve yine de normal dillerde kalabiliriz. Veya, ile çarpmanın sadece tekrarlanan bir ekleme olduğunu söyleyerek bu durumdan keyif alabiliriz .S d ddSdd
Sadece ipuçları istedin. Bu adımların her biri oldukça karmaşık bir teorem / tekniğe bağlıdır, bu yüzden tam bir kanıt elde etmenin kanıtlanması ekstra çalışma olacaktır.