A Lógica Temporal das Ações (Temporal Logic of Actions - TLA) foi proposta em (LAMPORT, 1994).
Seu principal conceito são ações. Uma ação é uma expressão booleana composta de variáveis, variáveis primed e constantes.
Nessa aula, vamos focar em como usar ações, com o operador primed ('
), para definir estruturas de Kripke. Mais adiante, em outra aula, falaremos sobre outros conceitos.
\(f'\) (f primed) para uma função de estado \(f\) é o valor de \(f\) no final de um passo.
Em outras palavras, para um passo composto por uma dupla de estados \((s, t)\), \(f'\) é o valor de \(f\) para \(t\).
De forma semelhante, \(P'\) para um predicado \(P\) é o valor de \(P\) para o estado final de um passo. Assim, na avaliação da valoração de uma ação para um passo, predicados e variáveis sem o operador primed se referem aos seus respectivos valores no primeiro estado do passo, e sempre que forem marcados com o operador, fazem referência aos valores no segundo estado do passo.
Outros exemplos:
PS: É necessário muito cuidado ao usar formas diferentes de (1).
Combinando operações primed e predicados comuns, podemos definir as transições do modelo.
Note que 1 ação define N transições. Assim, uma única ação pode definir todas as transições de um modelo!
init
.step
.
Temos dois model checkers disponíveis para TLA+ e Quint.
.cfg
quint verify spec.qnt
npm i @informalsystems/quint -g
quint --help
npm i @informalsystems/quint --user
npx quint --help
.tla
, aperte F1 e procure o comando “TLA+: Check model with TLC”quint verify
. Só precisa baixar separadamente se quiser utilizar com TLA+..bat
.\apalache-mc.bat server
quint verify
não vai funcionar