답변:
LTL과 CTL의 차이점을 실제로 이해하려면 두 언어의 의미를 연구해야합니다. LTL 수식은 프로그램이 실행될 때마다 해석 될 속성을 나타냅니다. 라인에서 일련의 이벤트 또는 상태로 볼 수있는 각각의 가능한 실행 (실행)에 대해 "선형 시간"으로 명명 된 이유입니다. 실행시 다른 실행으로 전환 할 가능성없이 만족 스러운지 점검합니다. 확인하는 동안. 반면에 CTL 시맨틱은 가능한 모든 실행에서 공식을 확인 하고 분기에 직면 할 때 가능한 모든 실행 ( A 연산자) 또는 하나의 실행 ( E 연산자) 만 시도합니다 .
실제로 이것은 각 언어의 일부 수식을 다른 언어로 표현할 수 없음을 의미합니다. 예를 들어, 재설정 특성 (회로 설계에 중요한 도달 가능성 특성) 은 실제로 도달하지 않은 경우에도 실행 중 상태에 도달 할 가능성 이 항상 있음을 나타냅니다 ( AG EF reset ). LTL은 재설정 상태에 실제로 도달하고 도달 할 수없는 것만 진술 할 수 있습니다.
이것이 귀하의 질문에 대한 답변인지는 모르겠지만 의견을 추가하고 싶습니다.
소프트웨어 검증을위한 속성을 표현하는 최고의 논리에 대한 많은 논의가 있지만 실제 토론은 다른 곳입니다. LTL은 CTL에 새로운 의미 (새로운 만족도 관계)가 있어야 소프트웨어 소프트웨어 모델링 (공정성)에 대한 중요한 속성을 표현할 수 있습니다. 그러나 CTL 알고리즘은 일반적으로 더 효율적이며 BDD 기반 알고리즘을 사용할 수 있습니다. 그래서 ... 최고의 해결책은 없습니다. 지금까지 두 가지 다른 접근 방식 만 있습니다.
논평자 중 한 명이 Vardi의 논문 "Branching vs Linear Time : Final Showdown"을 제안 합니다.
하나의 객체 (예 : LTL의 경우 추적)가 제공되는 경우 모든 시점에 대해 하나의 미래 만 고려 합니다. CTL에는 많은 객체 가 있습니다.
특히, next
LTL에서는 고유 한 동작을 제공하지만 CTL에서는 전체적으로 (잠재적으로) 전체 집합을 제공합니다.