CTL * это надмножество вычислительная древовидная логика (CTL) и линейная темпоральная логика (LTL). Он свободно комбинирует кванторы путей и временные операторы. Как и CTL, CTL * - это логика времени ветвления. Формальная семантика формул CTL * определяется по отношению к заданному Структура Крипке.
История
LTL был впервые предложен для проверки компьютерных программ Амир Пнуели в 1977 г. Четыре года спустя, в 1981 г. Э. М. Кларк и Э. А. Эмерсон изобрел проверку моделей CTL и CTL. CTL * был определен Э. А. Эмерсон и Джозеф Ю. Халперн в 1983 г.[1]
CTL и LTL были разработаны независимо до CTL *. Обе подлогики стали стандартами в проверка модели community, в то время как CTL * имеет практическое значение, поскольку обеспечивает выразительную тестовую площадку для представления и сравнения этих и других логик. Это удивительно[нужна цитата ] поскольку вычислительная сложность проверки моделей в CTL * не хуже, чем у LTL: они оба лежат в PSPACE.
Синтаксис
В язык из правильно сформированные формулы CTL * генерируется следующим однозначным (в скобках) контекстно-свободная грамматика:
![{displaystyle Phi :: = ot mid op mid pmid (например, Phi) mid (Phi land Phi) mid (Phi lor Phi) mid (Phi Rightarrow Phi) mid (Phi Leftrightarrow Phi) mid Aphi mid Ephi}](https://wikimedia.org/api/rest_v1/media/math/render/svg/465263d90373421cf94ea8075eff6e5a0243f789)
![{displaystyle phi :: = Phi mid (например, phi) mid (phi land phi) mid (phi lor phi) mid (phi Rightarrow phi) mid (phi Left rightarrow phi) mid Xphi mid Fphi mid Gphi mid [phi uphi] mid [phi Rphi]}](https://wikimedia.org/api/rest_v1/media/math/render/svg/81d01dae7e3e0849f8fcb9e05517c1c02c0efa35)
куда
колеблется в пределах набора атомарные формулы. Действительные CTL * -формулы строятся с использованием нетерминального
. Эти формулы называются формулы состояния, а созданные символом
называются формулы пути. (Вышеупомянутая грамматика содержит некоторые избыточности; например,
а также импликация и эквивалентность могут быть определены как просто для Булевы алгебры (или же логика высказываний ) от отрицания и конъюнкции, а временные операторы Икс и U находятся достаточно, чтобы определить два других.)
Операторы в основном такие же, как в CTL. Однако в CTL каждый темпоральный оператор (
) должен непосредственно предшествовать квантификатор, в то время как в CTL * это не требуется. Квантор универсального пути может быть определен в CTL * так же, как и для классического исчисление предикатов
, хотя это невозможно во фрагменте CTL.
Примеры формул
- Формула CTL *, которой нет ни в LTL, ни в CTL:
![{displaystyle EX (p) land AFG (p)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/edf44a65aceebfc0796c98092a59d659bd6b9703)
- Формула LTL, которой нет в CTL:
![AFG (p)](https://wikimedia.org/api/rest_v1/media/math/render/svg/9303369bf269babeafeeb964145b297b4e52e099)
- Формула CTL, которой нет в LTL:
![EX (p)](https://wikimedia.org/api/rest_v1/media/math/render/svg/5dff42a1a9397fad16835f6b1fd229d729186ceb)
- Формула CTL *, которая находится в CTL и LTL:
![AG (p)](https://wikimedia.org/api/rest_v1/media/math/render/svg/abeb39b43eb2075ed63030804e3cc10fe7a64417)
Примечание: при использовании LTL как подмножества CTL * любая формула LTL неявно имеет префикс универсального квантификатора пути.
.
Семантика
Семантика CTL * определяется относительно некоторых Структура Крипке. Как следует из названий, формулы состояний интерпретируются относительно состояний этой структуры, в то время как формулы путей интерпретируются по путям на ней.
Формулы состояний
Если государство
структуры Крипке удовлетворяет формуле состояния
это обозначено
. Это отношение определяется индуктивно следующим образом:
![{Big (} ({mathcal {M}}, s) модели оп {Big)} приземляются {Big (} ({mathcal {M}}, s) от моделей {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/33f267a82d4b3171584ebc4223c8dcf4dda9dc6f)
![{Big (} ({mathcal {M}}, s) models p {Big)} Leftrightarrow {Big (} pin L (s) {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/3a05f2e40a319619c299b98b816d4e41b6e89e77)
![{Big (} ({mathcal {M}}, s) модели, например, Phi {Big)} Leftrightarrow {Big (} ({mathcal {M}}, s) от моделей Phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/ed14e1815fb2aa910c6a1fc74ea3a1e49164ed83)
![{Big (} ({mathcal {M}}, s) модели Phi _ {1} land Phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} ({mathcal {M}}, s) модели Phi _ {1} {ig)} land {ig (} ({mathcal {M}}, s) модели Phi _ {2} {ig)} {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/46e26a645cb663e70d8facd767a2cb2eb4d7d835)
![{Big (} ({mathcal {M}}, s) модели Phi _ {1} lor Phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} ({mathcal {M}}, s) модели Фи _ {1} {ig)} lor {ig (} ({mathcal {M}}, s) models Phi _ {2} {ig)} {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/37cc3d4a990566a8c921f649daf8cf29a235347a)
![{Big (} ({mathcal {M}}, s) модели Phi _ {1} Rightarrow Phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} ({mathcal {M}}, s) ot модели Phi _ {1} {ig)} lor {ig (} ({mathcal {M}}, s) models Phi _ {2} {ig)} {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/795954424f67a1c0090422c7193f9234870bfe59)
![{igg (} ({mathcal {M}}, s) models Phi _ {1} Leftrightarrow Phi _ {2} {igg)} Leftrightarrow {igg (} {Big (} {ig (} ({mathcal {M}}) , s) модели Phi _ {1} {ig)} land {ig (} ({mathcal {M}}, s) models Phi _ {2} {ig)} {Big)} lor {Big (} например {ig (} ({mathcal {M}}, s) модели Phi _ {1} {ig)} land eg (ig (} ({mathcal {M}}, s) models Phi _ {2} {ig)} {Big )} {igg)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/40d6e3ad83a859ccfa70668136e5e22da9d30c2f)
для всех путей
начиная с ![s {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/def20604bb82ccca0032b5514febff60de140838)
для некоторого пути
начиная с ![s {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/def20604bb82ccca0032b5514febff60de140838)
Формулы пути
Отношение удовлетворения
для формул пути
и путь
также определяется индуктивно. Для этого пусть
обозначить подпуть
:
![{Big (} pi models Phi {Big)} Leftrightarrow {Big (} ({mathcal {M}}, s_ {0}) модели Phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/2166818d22f15b1be4c482fd00182f17dcb5632a)
![{Big (} модели pi, например, phi {Big)} Leftrightarrow {Big (} pi ot models phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7216c4f488d2cd1f03919e36b01773b3622b8959)
![{Big (} pi models phi _ {1} land phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} pi models phi _ {1} {ig)} land {ig (} pi models phi _ {2} {ig)} {Большой)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4e3f3d55866f09be049de962bea38f2aaae913a3)
![{Big (} pi models phi _ {1} lor phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} pi models phi _ {1} {ig)} lor {ig (} pi models phi _ {2} {ig)} {Большой)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/932c53afb92d3e003ce1c0a321fd246ea034f802)
![{Big (} pi models phi _ {1} Rightarrow phi _ {2} {Big)} Leftrightarrow {Big (} {ig (} pi ot models phi _ {1} {ig)} lor {ig (} pi models phi _ {2} {ig)} {Большой)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/52e66f566f79d888b85ec5667f9f26781882493f)
![{igg (} pi models phi _ {1} Leftrightarrow phi _ {2} {igg)} Leftrightarrow {igg (} {Big (} {ig (} pi models phi _ {1} {ig)} land {ig (} pi models phi _ {2} {ig)} {Big)} lor {Big (} например {ig (} pi models phi _ {1} {ig)} land eg {ig (} pi models phi _ {2} { ig)} {Большой)} {igg)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/41ab1e5d6107b7ecbfe4a403462d5327f868423a)
![{Big (} pi модели Xphi {Big)} Leftrightarrow {Big (} pi [1] модели phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/04dc9d7d8cb60f98cd33398acf7fb45bb26a8592)
![{Big (} pi models Fphi {Big)} Leftrightarrow {Big (} exists ngeqslant 0: pi [n] models phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/b7bdd34c50fa3ceacf7396882111071010f2e0be)
![{Big (} pi models Gphi {Big)} Leftrightarrow {Big (} forall ngeqslant 0: pi [n] models phi {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/7fb83dfdb1df0f09b527556d2f7ace263da21590)
![{Big (} pi models [phi _ {1} Uphi _ {2}] {Big)} Leftrightarrow {Big (} exists ngeqslant 0: {ig (} pi [n] models phi _ {2} land forall 0leqslant k < n: ~ pi [k] models phi _ {1} {ig)} {Big)}](https://wikimedia.org/api/rest_v1/media/math/render/svg/4509e544a4ffe97e923a6d0b581a5ecfcf39da25)
Проблемы с решением
Проверка модели CTL * завершена PSPACE[2] а проблема выполнимости - 2EXPTIME-complete.[2][3]
Смотрите также
Рекомендации
- Амир Пнуели: Временная логика программ. Материалы 18-го ежегодного симпозиума по основам информатики (FOCS), 1977, 46–57. DOI = 10.1109 / SFCS.1977.32
- Э. Аллен Эмерсон, Джозеф Ю. Халперн: «Иногда» и «не никогда» снова: о временной логике ветвления и линейного времени. J. ACM 33, 1 (январь 1986), 151–178. DOI = http://doi.acm.org/10.1145/4904.4999
- Ф. Шнебелен: Сложность проверки модели временной логики. Успехи модальной логики 2002: 393–436
внешняя ссылка