Logika temporalna

Wikipedia:Weryfikowalność
Ten artykuł od 2012-11 wymaga zweryfikowania podanych informacji.
Należy podać wiarygodne źródła w formie przypisów bibliograficznych.
Część lub nawet wszystkie informacje w artykule mogą być nieprawdziwe. Jako pozbawione źródeł mogą zostać zakwestionowane i usunięte.
Sprawdź w źródłach: Encyklopedia PWN • Google Books • Google Scholar • Federacja Bibliotek Cyfrowych • BazHum • BazTech • RCIN • Internet Archive (texts / inlibrary)
Dokładniejsze informacje o tym, co należy poprawić, być może znajdują się w dyskusji tego artykułu.
Po wyeliminowaniu niedoskonałości należy usunąć szablon {{Dopracować}} z tego artykułu.

Logika temporalna – logika umożliwiająca rozważanie zależności czasowych bez wprowadzania czasu explicite. Pierwotnie służyła jako narzędzie do filozoficznych rozważań nad naturą czasu, dzisiaj jest używana głównie w informatyce.

Czas można wprowadzić do zwykłego rachunku predykatów pierwszego rzędu. Np. aby powiedzieć, że zawsze, kiedy jedzie pociąg, szlaban musi być opuszczony (żeby uniknąć wypadku), oraz że dla każdej chwili szlaban kiedyś się podniesie (aby samochody mogły w końcu przejechać), możemy napisać:

t . pociag jedzie ( t ) ¬ szlaban podniesiony ( t ) , {\displaystyle \forall t.\;{\mbox{pociag jedzie}}(t)\to \neg {\mbox{szlaban podniesiony}}(t),}
t . t > t . szlaban podniesiony ( t ) . {\displaystyle \forall t.\;\exists t'>t.\;{\mbox{szlaban podniesiony}}(t').}

Dowodzenie twierdzeń w tak ogólnej notacji może być jednak trudne.

Z tego powodu dodaje się do rachunku zdań bez kwantyfikatorów pewne operatory modalne. Brak kwantyfikatorów umożliwia nam łatwe dowodzenie twierdzeń, zaś operatory modalne umożliwiają nam rozważanie zależności czasowych.

Logik temporalnych jest wiele. Można je jednak podzielić na dwie grupy – te, które zakładają liniową strukturę czasu, oraz te, które zakładają rozgałęzioną strukturę czasu. Logiki temporalne zazwyczaj operują czasem składającym się z wydarzeń dyskretnych, choć możliwe są też logiki używające czasu ciągłego.

Operatory G i F

Stwórzmy prostą logikę temporalną, w której czas się nie rozgałęzia, i nie interesuje nas, czy jest dyskretny, czy ciągły. W takiej logice dozwolone są dowolne zmienne zdaniowe ( p , {\displaystyle p,} q , {\displaystyle q,} r {\displaystyle r} itd.), wszystkie spójniki logiczne ( , {\displaystyle \land ,} , {\displaystyle \lor ,} , {\displaystyle \to ,} , {\displaystyle \equiv ,} ¬ {\displaystyle \neg } itd.), oraz para operatorów – G {\displaystyle G} i F . {\displaystyle F.}

  • G ϕ {\displaystyle G\phi } oznacza, że od danego momentu już zawsze będzie miało miejsce ϕ . {\displaystyle \phi .}
  • F ϕ {\displaystyle F\phi } oznacza, że kiedyś w przyszłości będzie miało miejsce ϕ . {\displaystyle \phi .}

W tak prostej logice można już zbudować kilka twierdzeń na temat czasu:

G ϕ F ϕ {\displaystyle G\phi \to F\phi } – jeśli ϕ {\displaystyle \phi } będzie zachodziło zawsze, to ϕ {\displaystyle \phi } zajdzie w pewnym konkretnym momencie w przyszłości.
G ϕ ¬ F ¬ ϕ {\displaystyle G\phi \equiv \neg F\neg \phi } ϕ {\displaystyle \phi } zachodzi zawsze wtedy i tylko wtedy, gdy w żadnym momencie przyszłości nie będzie zachodziło ¬ ϕ . {\displaystyle \neg \phi .}

Operatory te można składać:

F F ϕ = F ϕ {\displaystyle FF\phi =F\phi } – kiedyś zajdzie, że kiedyś zajdzie ϕ {\displaystyle \phi } oznacza po prostu, że kiedyś zajdzie ϕ . {\displaystyle \phi .}
G G ϕ = G ϕ {\displaystyle GG\phi =G\phi } – zawsze będzie, że zawsze będzie ϕ {\displaystyle \phi } oznacza po prostu, że zawsze będzie ϕ . {\displaystyle \phi .}
F G ϕ {\displaystyle FG\phi } – kiedyś zajdzie, że już zawsze będzie ϕ {\displaystyle \phi } – czyli od pewnego momentu, ϕ {\displaystyle \phi } zachodzić już będzie zawsze.
G F ϕ = ¬ F G ¬ ϕ {\displaystyle GF\phi =\neg FG\neg \phi } – zawsze będzie, że kiedyś zajdzie ϕ {\displaystyle \phi } – czyli w każdym momencie mamy gdzieś przed sobą jakieś wystąpienie ϕ . {\displaystyle \phi .} Czyli nigdy nie będzie tak, że już nigdy nie nastąpi ϕ . {\displaystyle \phi .} W przypadku dyskretnym oznacza to, że ϕ {\displaystyle \phi } zajdzie nieskończenie wiele razy.

Mając te operatory, łatwo możemy zdefiniować zachowanie szlabanu kolejowego:

G ( pociag jedzie ¬ szlaban podniesiony ) {\displaystyle G\;({\mbox{pociag jedzie}}\to \neg {\mbox{szlaban podniesiony}})} – zawsze jeśli pociąg jedzie, to szlaban jest opuszczony.
G F szlaban podniesiony {\displaystyle GF\;{\mbox{szlaban podniesiony}}} – nigdy nie będzie tak, że szlaban będzie już cały czas opuszczony.

Operatory U i R

G {\displaystyle G} i F {\displaystyle F} pozwalają na umiejscawianie zjawisk w czasie, ale nie dają nam wielu możliwości przedstawiania zależności czasowych pomiędzy zjawiskami. Do tego służą dwa kolejne operatory:

ϕ U ψ {\displaystyle \phi U\psi } – kiedyś nastąpi ψ . {\displaystyle \psi .} Do czasu jego pierwszego wystąpienia zawsze będzie ϕ . {\displaystyle \phi .}
ϕ R ψ {\displaystyle \phi R\psi } ψ {\displaystyle \psi } będzie zachodziło tak długo, aż nie zajdzie ϕ . {\displaystyle \phi .}

Zależności między nimi to:

ϕ U ψ = ( F ψ ) ( ψ R ϕ ) , {\displaystyle \phi U\psi =(F\psi )\land (\psi R\phi ),}
ϕ R ψ = ( G ¬ ϕ ) ( ψ U ϕ ) , {\displaystyle \phi R\psi =(G\neg \phi )\lor (\psi U\phi ),}
ϕ U ψ = ¬ ( ¬ ψ R ¬ ϕ ) , {\displaystyle \phi U\psi =\neg (\neg \psi R\neg \phi ),}
ϕ R ψ = ¬ ( ¬ ψ U ¬ ϕ ) . {\displaystyle \phi R\psi =\neg (\neg \psi U\neg \phi ).}

Używając tych operatorów można przedstawić G {\displaystyle G} oraz F : {\displaystyle F{:}}

F ϕ = U ϕ , {\displaystyle F\phi =\top U\phi ,}
G ϕ = ϕ R . {\displaystyle G\phi =\phi R\bot .}

Tak więc wszystkie 4 operatory można przedstawić używając jedynie U {\displaystyle U} lub jedynie R . {\displaystyle R.} Nie jest to jednak rozwiązanie praktyczne.

Ważniejsze twierdzenia logiki

( p q ) U r ( p U r ) ( q U r ) {\displaystyle (p\wedge q)Ur\equiv (pUr)\wedge (qUr)}
p U ( q r ) p U ( q r ) {\displaystyle pU(q\vee r)\equiv pU(q\vee r)}
( p U r ) ( q U r ) ( p q ) U r {\displaystyle (pUr)\vee (qUr)\implies (p\vee q)Ur}
p U ( q r ) p U ( q r ) {\displaystyle pU(q\wedge r)\implies pU(q\wedge r)}
G ( p q ) ( ( G p ) ( G q ) ) {\displaystyle G(p\wedge q)\equiv ((Gp)\wedge (Gq))}
G ( p q ) ( ( G p ) ( G q ) ) {\displaystyle G(p\implies q)\implies ((Gp)\implies (Gq))} – Jeśli zawsze z tego że p {\displaystyle p} wynika że q , {\displaystyle q,} to jeśli zawsze p {\displaystyle p} to zawsze q {\displaystyle q}

Czas dyskretny i operator X

Podzielmy czas na dyskretne momenty, tak że w każdym momencie stan świata nie ulega zmianie, a przejścia z jednego momentu do drugiego są natychmiastowe.

Struktura czasu w świecie rzeczywistym jest inna, ale np. jest nią struktura wydarzeń zachodzących wewnątrz procesora – każde wydarzenie potrafimy przyporządkować konkretnemu wskazaniu zegara. Jeśli struktura czasu jest nam właściwie obojętna, możemy traktować ją jako dyskretną, nawet jeśli nie ma ona takiego charakteru, gdyż upraszcza to wiele obliczeń.

W logikach z czasem dyskretnym można zdefiniować operator X ϕ {\displaystyle X\phi } oznaczający, że ϕ {\displaystyle \phi } nastąpi w następnej chwili. X X ϕ {\displaystyle XX\phi } oznacza więc, że nastąpi za 2 chwile, X X X X X ϕ {\displaystyle XXXXX\phi } za 5 chwil itd.

Przykłady twierdzeń z użyciem X : {\displaystyle X{:}}

G ( p X ¬ p ) {\displaystyle G(p\implies X\neg p)} – zawsze, jeśli w pewnej chwili zachodzi p , {\displaystyle p,} to w następnej nie będzie zachodziło,
F ( p X ¬ p ) {\displaystyle F(p\land X\neg p)} p {\displaystyle p} kiedyś będzie prawdziwe, a potem przestanie, równoważne F ( p F ¬ p ) , {\displaystyle F(p\land F\neg p),}
F ( p X ¬ q ) {\displaystyle F(p\land X\neg q)} p {\displaystyle p} kiedyś będzie prawdziwe, a w następnej chwili q {\displaystyle q} będzie fałszywe (niemożliwe do wyrażenia bez X {\displaystyle X} ).

Logika LTL

 Osobny artykuł: Logika LTL.

Do najprostszych logik temporalnych należy linear temporal logic (liniowa logika temporalna), używająca dyskretnego i liniowego modelu czasu.

Operatorami tej logiki są:

  • G ϕ {\displaystyle G\phi } (globally ϕ {\displaystyle \phi } ) mówiący, że ϕ {\displaystyle \phi } zachodzi w tej chwili, oraz że będzie zachodziło w każdym momencie w przyszłości (choć być może nie zachodziło w przeszłości),
  • F ϕ {\displaystyle F\phi } (finally ϕ {\displaystyle \phi } ) mówiący, że kiedyś w przyszłości zajdzie ϕ , {\displaystyle \phi ,}
  • X ϕ {\displaystyle X\phi } (next ϕ {\displaystyle \phi } ) mówiący, że w następnej chwili czasu zajdzie ϕ , {\displaystyle \phi ,}
  • ϕ U ψ {\displaystyle \phi U\psi } ( ϕ {\displaystyle \phi } until ψ {\displaystyle \psi } ) mówiący, że kiedyś w przyszłości zajdzie ψ , {\displaystyle \psi ,} a do tego czasu będzie zachodzić ϕ , {\displaystyle \phi ,}
  • ϕ R ψ {\displaystyle \phi R\psi } ( ϕ {\displaystyle \phi } release ψ {\displaystyle \psi } ) mówiący, że ψ {\displaystyle \psi } zachodzi tak długo, aż zajdzie ϕ {\displaystyle \phi } lub zachodzi zawsze, gdy ϕ {\displaystyle \phi } nigdy nie zajdzie.

Wszystkie operatory można wyrazić za pomocą X ϕ {\displaystyle X\phi } oraz ϕ U ψ : {\displaystyle \phi U\psi {:}}

G ϕ = ¬ F ¬ ϕ . {\displaystyle G\phi =\neg F\neg \phi .}
Zawsze będzie ϕ . {\displaystyle \phi .}
Nieprawda, że kiedyś nastąpi nie- ϕ . {\displaystyle \phi .}
F ϕ = U ϕ . {\displaystyle F\phi =\top U\phi .}
Kiedyś nastąpi ϕ . {\displaystyle \phi .}
Kiedyś nastąpi ϕ , {\displaystyle \phi ,} a do tego czasu zawsze będzie zachodziło prawda.
¬ ( ϕ R ψ ) = ¬ ϕ U ¬ ψ . {\displaystyle \neg (\phi R\psi )=\neg \phi U\neg \psi .} (negacja przeniesiona na drugą stronę dla łatwiejszego zrozumienia)
Nieprawda, że ψ {\displaystyle \psi } będzie zachodziło aż do momentu, w którym nastąpi ϕ {\displaystyle \phi }
Zajdzie kiedyś nie- ψ , {\displaystyle \psi ,} a do czasu, w którym zajdzie, zawsze będzie zachodziło nie- ϕ {\displaystyle \phi }

Logika CTL*

 Osobny artykuł: Logika CTL*.

Logika C T L {\displaystyle CTL^{*}} (computation tree logic) to rozszerzenie logiki LTL na rozgałęziające się modele czasu. Do operatorów LTL dochodzą jeszcze:

A ϕ {\displaystyle A\phi } – dla każdej ścieżki zachodzi ϕ , {\displaystyle \phi ,}
E ϕ {\displaystyle E\phi } – istnieje taka ścieżka obliczeń, że ϕ . {\displaystyle \phi .}

Na składanie operatorów nałożone jest jedno ograniczenie: do żadnego operatora LTL-owskiego nie da się dojść, nie przechodząc przez operator ścieżkowy.

Czyli np. G ϕ {\displaystyle G\phi } nie jest poprawną formułą C T L , {\displaystyle CTL^{*},} ale A G ϕ , {\displaystyle AG\phi ,} E G ϕ , {\displaystyle EG\phi ,} ( A G ϕ ) ¬ ( E F ψ ) {\displaystyle (AG\phi )\lor \neg (EF\psi )} nimi są.

Logika CTL

 Osobny artykuł: Logika CTL.

Logika C T L {\displaystyle CTL} to ograniczenie logiki C T L , {\displaystyle CTL^{*},} w którym operatory mogą występować tylko parami – operator ścieżkowy, operator stanowy – A X , {\displaystyle AX,} E X , {\displaystyle EX,} A G , {\displaystyle AG,} E G , {\displaystyle EG,} A F , {\displaystyle AF,} E F , {\displaystyle EF,} A U , {\displaystyle AU,} E U , {\displaystyle EU,} A R {\displaystyle AR} i E R . {\displaystyle ER.}

Operatory te można przepisać za pomocą jedynie E U , {\displaystyle EU,} E G {\displaystyle EG} i E X . {\displaystyle EX.}

Linki zewnętrzne

  • p
  • d
  • e
Teorie formalne w logice matematycznej