Введение

Вычислительная древесная логика (CTL) — это логика ветвящегося времени, что означает, что её модель времени имеет древовидную структуру, в которой будущее не предопределено; существует множество возможных путей развития событий, и любой из них может быть реализован. Она используется для формальной верификации программных или аппаратных средств, как правило, с помощью программных приложений, известных как модели-проверщики, которые определяют, обладает ли данное средство свойствами безопасности или живости. Например, CTL может задавать, что если выполняется некоторое начальное условие (например, все переменные программы положительны или на шоссе нет машин, занимающих одновременно две полосы), то все возможные сценарии выполнения программы избегают нежелательного состояния (например, деления на ноль или столкновения двух машин на шоссе). В этом примере свойство безопасности может быть проверено модели-проверщиком, который исследует все возможные переходы из состояний программы, удовлетворяющих начальному условию, и удостоверяется, что все такие сценарии удовлетворяют свойству. Вычислительная древесная логика относится к классу темпоральных логик, в который также входит линейная темпоральная логика (LTL). Хотя существуют свойства, которые можно выразить только в CTL и свойства, которые можно выразить только в LTL, все свойства, выразимые в любой из этих логик, также могут быть выражены в CTL*.

История

CTL был впервые предложен Эдмундом М. Кларком и Э. Алленом Эмерсоном в 1981 году, которые использовали его для синтеза так называемых скелетов синхронизации, то есть абстракций параллельных программ. С момента появления CTL ведутся споры о сравнительных преимуществах CTL и LTL. Благодаря более высокой вычислительной эффективности при проверке моделей, CTL получила более широкое распространение в промышленности, и многие из наиболее успешных инструментов проверки моделей используют CTL как язык спецификаций.

Логические операторы

Логические операторы стандартные: ¬, ∨, ∧, ⇒ и ⇔. Наряду с этими операторами, формулы CTL также могут использовать булевы константы true и false.

Отношения с другими логиками

Вычислительная древесная логика (CTL) является подмножеством CTL* и модальной μ-логики. CTL также является фрагментом альтернативной временной логики Алура, Хензингера и Купфермана (ATL). Вычислительная древесная логика (CTL) и линейная временная логика (LTL) являются подмножествами CTL*. CTL и LTL не эквивалентны, и у них есть общее подмножество, которое является собственным подмножеством как CTL, так и LTL. FG. P существует в LTL, но не в CTL. AG(P⇒((EX Q)∧(EX¬Q))) и AG EF P существуют в CTL, но не в LTL.

Расширения

CTL был расширен квантификацией второго порядка и превращен в квантифицированную вычислительную древесную логику (QCTL). Существуют две семантики:

семантика дерева. Мы помечаем узлы дерева вычислений. QCTL* = QCTL = MSO над деревьями. Проверка моделей и задача выполнимости являются башнево-полными. семантика структуры. Мы помечаем состояния. QCTL* = QCTL = MSO над графами. Проверка моделей является PSPACE-полной, но задача выполнимости неразрешима. Предложено сведение задачи проверки моделей QCTL с семантикой структуры к TQBF (истинно квантифицированным булевым формулам) для использования преимуществ решателей QBF.