CTL'deki formül örneklerini zaten okudum, ancak LTL ve tersi değil, ama LTL formülleri üzerinde zihinsel bir kavrayış elde etmekte sorun yaşıyorum ve gerçekten de kalbin farkı nedir.
CTL'deki formül örneklerini zaten okudum, ancak LTL ve tersi değil, ama LTL formülleri üzerinde zihinsel bir kavrayış elde etmekte sorun yaşıyorum ve gerçekten de kalbin farkı nedir.
Yanıtlar:
LTL ve CTL arasındaki farkı gerçekten anlamak için her iki dilin anlambilimini de incelemeniz gerekir. LTL formülleri, bir programın her yürütmesinde yorumlanacak özellikleri belirtir. Bir satırdaki bir olay veya durum dizisi olarak görülebilen her olası yürütme (bir çalışma) için - ve bu yüzden "doğrusal zaman" olarak adlandırılır - başka bir çalışmaya geçme olasılığı olmadan koşuda tatmin edilebilirlik kontrol edilir kontrol sırasında. Öte yandan, CTL semantiği olası tüm çalışmalarda bir formülü kontrol eder ve bir şubeye bakarken tüm olası çalışmaları ( A işleci) veya yalnızca bir çalışmayı ( E işleci) dener .
Uygulamada bu, her dilden bazı formüllerin diğer dilde belirtilemeyeceği anlamına gelir. Örneğin, reset özelliği (devre tasarımı için önemli bir erişilebilirlik özelliği) , hiçbir zaman gerçekte ulaşılmasa bile bir durum sırasında bir duruma ulaşma olasılığının her zaman olduğunu belirtir ( AG EF sıfırlama ). LTL, yalnızca sıfırlama durumuna ulaşıldığını söyleyebilir, ulaşılamaz.
Öte yandan, LTL, formül CTL tercüme edilemez. Bu formül stabilite özelliğini belirtmektedir: programın her yürütülmesinde, s son programı (ya da program sonsuza ise sonuna kadar doğru olacak hiç durdurur). CTL yalnızca çok katı ( AF AG ) veya çok geçirgen ( AF EG ) bir formül sağlayabilir . İkincisi açıkça yanlış. Birincisi için o kadar basit değil. Ancak AF AG ler hatalı. Üzerinde döngüler bir sistem düşünün A1 , gelen gidebilir A1 için B ve ardından gidecek A2bir sonraki hamlede. Daha sonra sistem sonsuza dek A2 durumunda kalacaktır . Sonra "sistem sonunda bir A durumunda kalacaktır " türünde bir özelliktir . Bu özelliğin sistem üzerinde bulunduğu açıktır. Bununla birlikte, AF AG ler tam tersi olduğu için bu özelliği yakalayamaz: sistemin her zaman bir çalışmanın sonunda A olmayan bir duruma geçeceği durumda olacağı bir çalışma vardır .
Bunun sorunuza cevap verip vermediğini bilmiyorum, ancak bazı yorumlar eklemek istiyorum.
Yazılım doğrulaması için özellikleri ifade etmek için en iyi mantık hakkında çok fazla tartışma var ... ama asıl tartışma başka bir yerde. CTL, bunları ifade etmek için yeni bir semantiğe (yeni bir tatmin edilebilirlik ilişkisi) sahip olması gerektiğinde, yazılım sistemi modellemesi (adalet) için önemli özellikleri ifade edebilir. Ancak CTL algoritmaları genellikle daha verimlidir ve BDD tabanlı algoritmalar kullanabilir. Yani ... en iyi çözüm yok. Şimdiye kadar sadece iki farklı yaklaşım.
Yorumculardan biri Vardi'nin "Doğrusal Zamana Karşı Dallanma: Son Karşılaşma" başlıklı makalesini önermektedir .
Bir nesne verilirse (örn. LTL durumunda iz), zamandaki her nokta için sadece bir geleceği düşünürsünüz , CTL'de çok sayıda var.
Özellikle, next
LTL'de benzersiz bir eylem sağlar, ancak (potansiyel olarak) CTL'de bir set oluşturur.