Qual é a diferença entre LTL e CTL?


12

Eu já li exemplos de fórmulas em CTL, mas não em LTL e vice-versa, mas estou tendo problemas para entender melhor as fórmulas de LTL e , na verdade , qual é a diferença.


1
Muitas anotações nas interwebs lidam com esse problema. Pesquisaram no Google "a diferença entre LTL e CTL"?
Dave Clarke

1
Tente escrever fórmulas simples e avaliar sua semântica nas estruturas Kripke.
Vijay D

Respostas:


21

Para realmente entender a diferença entre LTL e CTL, você deve estudar a semântica dos dois idiomas. As fórmulas LTL denotam propriedades que serão interpretadas em cada execução de um programa. Para cada execução possível (uma execução), que pode ser vista como uma sequência de eventos ou estados em uma linha - e é por isso que é chamado de "tempo linear" - a satisfação é verificada na execução, sem possibilidade de alternar para outra execução durante a verificação. Por outro lado, a semântica do CTL verifica uma fórmula em todas as execuções possíveis e tenta todas as execuções possíveis ( operador A ) ou apenas uma execução ( operador E ) ao enfrentar uma ramificação.

Na prática, isso significa que algumas fórmulas de cada idioma não podem ser declaradas no outro idioma. Por exemplo, a propriedade reset (uma importante propriedade de acessibilidade para o projeto de circuitos) afirma que sempre existe a possibilidade de que um estado possa ser alcançado durante uma execução, mesmo que nunca seja realmente alcançado ( redefinição AG EF ). O LTL pode apenas afirmar que o estado de redefinição foi realmente alcançado e não que pode ser alcançado.

Por outro lado, a fórmula LTL não podem ser traduzidos em CTL. Essa fórmula indica a propriedade da estabilidade: em cada execução do programa, s será finalmente verdadeiro até o final do programa (ou para sempre, se o programa nunca parar). Os CTL podem fornecer apenas uma fórmula muito rigorosa ( AF AGs ) ou muito permissiva ( AF EG s ). O segundo está claramente errado. Não é tão simples para o primeiro. Mas a AF AG s está errada. Considere um sistema que faça um loop na A1 , possa ir de A1 para B e depois vá para A2sno próximo passo. Então o sistema permanecerá no estado A2 para sempre. Então, "o sistema irá finalmente ficar em uma Um estado" é uma propriedade do tipo . É óbvio que essa propriedade se mantém no sistema. No entanto, os AG AG não podem capturar essa propriedade, pois o oposto é verdadeiro: existe uma execução na qual o sistema sempre estará no estado em que uma execução finalmente entra em um estado não A.s

Não sei se isso responde à sua pergunta, mas gostaria de adicionar alguns comentários.

Há muita discussão sobre a melhor lógica para expressar propriedades para verificação de software ... mas o verdadeiro debate está em outro lugar. O LTL pode expressar propriedades importantes para modelagem de sistema de software (justiça) quando o CTL deve ter uma nova semântica (uma nova relação de satisfação) para expressá-las. Mas os algoritmos CTL são geralmente mais eficientes e podem usar algoritmos baseados em BDD. Então ... não há melhor solução. Apenas duas abordagens diferentes, até agora.

Um dos comentaristas sugere o artigo de Vardi "Branching versus Linear Time: Final Showdown" .


veja uma discussão sobre LTL vs CTL de Vardi: "Ramificação x tempo linear: confronto final"
Guy

muito obrigado, esse é exatamente o tipo de insight que eu estava procurando!
Covarde Anônimo

1

Se determinado objeto (por exemplo, rastrear no caso de LTL), você considera apenas um futuro para cada ponto no tempo, em CTL você tem uma infinidade deles.

Em particular, nextfornece uma ação exclusiva no LTL, mas (potencialmente) um conjunto inteiro no CTL.


6
Mas você normalmente aplica a fórmula LTL a todas as execuções do sistema, em vez de apenas uma, fechando assim a lacuna entre uma / muitas edições futuras. Seria mais preciso dizer que o LTL lida com o tempo linear, enquanto o CTL lida com o tempo de ramificação.
Dave Clarke

4
Dizer, em LTL você considera um futuro é como dizer em CTL você considera um estado. Satisfação é definida dessa maneira. Não se trata de quantos futuros, mas da estrutura do futuro. Em um é um traço, no outro, uma árvore.
Vijay D

@ Vijay - na verdade, a estrutura importa. Por exemplo, você não pode simplesmente pegar uma fórmula LTL, transformá-la como FGp -> AF AG pe obter uma fórmula CTL equivalente (essas duas fórmulas não são equivalentes; além disso, FGp não é expressável em CTL e AF AG p não é expressável em LTL )
Jkff 26/05

Presumi que o OP estivesse familiarizado com a definição formal e pedindo algum tipo de intuição, daí a minha tentativa. Essa resposta pode ser recuperada dizendo "um futuro por modelo"?
Raphael

Não sei dizer com o que o OP está familiarizado. Por exemplo, é claro para eles o que é um modelo em cada caso?
Vijay D
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.