.. |LTL| replace:: LTL .. |LTLP| replace:: LTL+P .. |subf| replace:: :math:`{}_f` .. |LTLf| replace:: LTL\ |subf| .. |LTLfP| replace:: |LTLf|\ +P .. |LTLfMT| replace:: |LTLf|\ :sup:`MT` .. :math:`\mathsf{LTL}_f^{\mathsf{MT}}` Supported logics ================= Here you find a brief recap of the logics supported by BLACK and their properties. This presentation is not meant as an introduction to these logics, but rather as a quick reference to make sure the user and BLACK are on the same page. For more details we refer to :doc:`the Publications page `. Linear Temporal Logic ---------------------- |LTL| is a propositional modal logic interpreted over infinite sequences of states, also said *infinite words*. Each state of the sequence is labelled by a set of *propositions* taken from a global alphabet :math:`\Sigma`. The syntax of |LTL| extends classical propositional logic with a few *temporal operators*. BLACK supports both *future* temporal operators, such as *tomorrow* and *until*, and *past* temporal operators, such as *yesterday* and *since*. |LTL|, when augmented with past operators, is often called |LTLP|. Recently, the *finite-trace* semantics of |LTL| gained much popularity in the field of artificial intelligence. With this semantics, the logic is often called |LTLf|. In |LTLf|, formulas are interpreted over *finite* words. Particular attention must be paid for the semantics of the operators to make sense. BLACK supports both |LTL| and |LTLf|, with or without past operators (|LTLfP|). The abstract syntax of |LTLP| and |LTLfP|, independently from the adopted semantics, is outlined below. For the concrete input syntax accepted by BLACK, refer to the :doc:`Input Syntax ` page. An |LTLP| (or |LTLfP|) formula :math:`\phi` respects the following grammar: .. math:: \phi \equiv p & \mid \neg\phi \mid \phi \lor \phi \mid \phi \land \phi \\ & \mid \mathsf{X}\phi \mid \mathsf{\widetilde{X}}\phi \mid \phi\mathrel{\mathsf{U}}\phi \mid \mathsf{Y}\phi \mid \mathsf{Z}\phi \mid \phi\mathrel{\mathsf{S}}\phi where :math:`p\in\Sigma`. Usual shortcuts are available, such as :math:`\top\equiv p \lor \neg p`, :math:`\bot\equiv\neg\top`, :math:`\phi_1\mathrel{\mathsf{R}}\phi_2\equiv\neg(\neg\phi_1\mathrel{\mathsf{U}}\neg\phi_2)`, :math:`\mathsf{F}\phi\equiv \top\mathrel{\mathsf{U}}\phi`, :math:`\mathsf{G}\phi\equiv \neg\mathsf{F}\neg \phi` (or also :math:`\mathsf{G}\phi\equiv \bot\mathrel{\mathsf{R}}\phi`), :math:`\phi_1\mathrel{\mathsf{T}}\phi_2\equiv\neg(\neg\phi_1\mathrel{\mathsf{S}}\neg\phi_2)`, :math:`\mathsf{O}\phi\equiv \top\mathrel{\mathsf{S}}\phi`, and :math:`\mathsf{H}\phi\equiv \neg\mathsf{O}\neg \phi` (or also :math:`\mathsf{H}\phi\equiv \bot\mathrel{\mathsf{T}}\phi`), A (finite or infinite) sequence :math:`\overline{\sigma}=\langle \sigma_0,\sigma_1,\ldots\rangle` where :math:`\sigma_i\in 2^\Sigma`, *satisfies* a formula :math:`\phi` at position :math:`i\ge0`, written :math:`\overline{\sigma},i\models\phi`, if the following holds: 1. :math:`\overline{\sigma},i\models p` iff :math:`p\in\sigma_i` 2. :math:`\overline{\sigma},i\models \neg\psi` iff :math:`\overline{\sigma},i\not\models\psi` 3. :math:`\overline{\sigma},i\models \psi_1\lor\psi_2` iff :math:`\overline{\sigma},i\models \psi_1` or :math:`\overline{\sigma},i\models \psi_2` 4. :math:`\overline{\sigma},i\models \psi_1\land\psi_2` iff :math:`\overline{\sigma},i\models \psi_1` and :math:`\overline{\sigma},i\models \psi_2` 5. :math:`\overline{\sigma},i\models \mathsf{X}\psi` iff :math:`i+1 < |\overline{\sigma}|` and :math:`\overline{\sigma},i+1\models \psi` 6. :math:`\overline{\sigma},i\models \mathsf{\widetilde{X}}\psi` iff :math:`i+1= |\overline{\sigma}|` or :math:`\overline{\sigma},i+1\models \psi` 7. :math:`\overline{\sigma},i\models \psi_1\mathrel{\mathsf{U}}\psi_2` iff there exists :math:`i \le j < |\overline{\sigma}|` such that :math:`\overline{\sigma},j\models \psi_2` and :math:`\overline{\sigma},k\models \psi_1` for all :math:`k` with :math:`i \le k < j`. 8. :math:`\overline{\sigma},i\models \mathsf{Y}\psi` iff :math:`i > 0` and :math:`\overline{\sigma},i-1\models \psi` 9. :math:`\overline{\sigma},i\models \mathsf{Z}\psi` iff :math:`i = 0` or :math:`\overline{\sigma},i+1\models \psi` 10. :math:`\overline{\sigma},i\models \psi_1\mathrel{\mathsf{S}}\psi_2` iff there exists :math:`j \le i` such that :math:`\overline{\sigma},j\models \psi_2` and :math:`\overline{\sigma},k\models \psi_1` for all :math:`k` with :math:`j