\documentclass[12pt,titlepage]{article} \usepackage{amsmath} \usepackage{mathrsfs} \usepackage{amsfonts} \usepackage{amssymb} \usepackage{amsthm} \usepackage{mathtools} \usepackage{graphicx} \usepackage{color} \usepackage{ucs} \usepackage[utf8x]{inputenc} \usepackage{xparse} \usepackage{hyperref} %----Macros---------- % % Unresolved issues: % % \righttoleftarrow % \lefttorightarrow % % \color{} with HTML colorspec % \bgcolor % \array with options (without options, it's equivalent to the matrix environment) % Of the standard HTML named colors, white, black, red, green, blue and yellow % are predefined in the color package. Here are the rest. \definecolor{aqua}{rgb}{0, 1.0, 1.0} \definecolor{fuschia}{rgb}{1.0, 0, 1.0} \definecolor{gray}{rgb}{0.502, 0.502, 0.502} \definecolor{lime}{rgb}{0, 1.0, 0} \definecolor{maroon}{rgb}{0.502, 0, 0} \definecolor{navy}{rgb}{0, 0, 0.502} \definecolor{olive}{rgb}{0.502, 0.502, 0} \definecolor{purple}{rgb}{0.502, 0, 0.502} \definecolor{silver}{rgb}{0.753, 0.753, 0.753} \definecolor{teal}{rgb}{0, 0.502, 0.502} % Because of conflicts, \space and \mathop are converted to % \itexspace and \operatorname during preprocessing. % itex: \space{ht}{dp}{wd} % % Height and baseline depth measurements are in units of tenths of an ex while % the width is measured in tenths of an em. \makeatletter \newdimen\itex@wd% \newdimen\itex@dp% \newdimen\itex@thd% \def\itexspace#1#2#3{\itex@wd=#3em% \itex@wd=0.1\itex@wd% \itex@dp=#2ex% \itex@dp=0.1\itex@dp% \itex@thd=#1ex% \itex@thd=0.1\itex@thd% \advance\itex@thd\the\itex@dp% \makebox[\the\itex@wd]{\rule[-\the\itex@dp]{0cm}{\the\itex@thd}}} \makeatother % \tensor and \multiscript \makeatletter \newif\if@sup \newtoks\@sups \def\append@sup#1{\edef\act{\noexpand\@sups={\the\@sups #1}}\act}% \def\reset@sup{\@supfalse\@sups={}}% \def\mk@scripts#1#2{\if #2/ \if@sup ^{\the\@sups}\fi \else% \ifx #1_ \if@sup ^{\the\@sups}\reset@sup \fi {}_{#2}% \else \append@sup#2 \@suptrue \fi% \expandafter\mk@scripts\fi} \def\tensor#1#2{\reset@sup#1\mk@scripts#2_/} \def\multiscripts#1#2#3{\reset@sup{}\mk@scripts#1_/#2% \reset@sup\mk@scripts#3_/} \makeatother % \slash \makeatletter \newbox\slashbox \setbox\slashbox=\hbox{$/$} \def\itex@pslash#1{\setbox\@tempboxa=\hbox{$#1$} \@tempdima=0.5\wd\slashbox \advance\@tempdima 0.5\wd\@tempboxa \copy\slashbox \kern-\@tempdima \box\@tempboxa} \def\slash{\protect\itex@pslash} \makeatother % math-mode versions of \rlap, etc % from Alexander Perlis, "A complement to \smash, \llap, and lap" % http://math.arizona.edu/~aprl/publications/mathclap/ \def\clap#1{\hbox to 0pt{\hss#1\hss}} \def\mathllap{\mathpalette\mathllapinternal} \def\mathrlap{\mathpalette\mathrlapinternal} \def\mathclap{\mathpalette\mathclapinternal} \def\mathllapinternal#1#2{\llap{$\mathsurround=0pt#1{#2}$}} \def\mathrlapinternal#1#2{\rlap{$\mathsurround=0pt#1{#2}$}} \def\mathclapinternal#1#2{\clap{$\mathsurround=0pt#1{#2}$}} % Renames \sqrt as \oldsqrt and redefine root to result in \sqrt[#1]{#2} \let\oldroot\root \def\root#1#2{\oldroot #1 \of{#2}} \renewcommand{\sqrt}[2][]{\oldroot #1 \of{#2}} % Manually declare the txfonts symbolsC font \DeclareSymbolFont{symbolsC}{U}{txsyc}{m}{n} \SetSymbolFont{symbolsC}{bold}{U}{txsyc}{bx}{n} \DeclareFontSubstitution{U}{txsyc}{m}{n} % Manually declare the stmaryrd font \DeclareSymbolFont{stmry}{U}{stmry}{m}{n} \SetSymbolFont{stmry}{bold}{U}{stmry}{b}{n} % Manually declare the MnSymbolE font \DeclareFontFamily{OMX}{MnSymbolE}{} \DeclareSymbolFont{mnomx}{OMX}{MnSymbolE}{m}{n} \SetSymbolFont{mnomx}{bold}{OMX}{MnSymbolE}{b}{n} \DeclareFontShape{OMX}{MnSymbolE}{m}{n}{ <-6> MnSymbolE5 <6-7> MnSymbolE6 <7-8> MnSymbolE7 <8-9> MnSymbolE8 <9-10> MnSymbolE9 <10-12> MnSymbolE10 <12-> MnSymbolE12}{} % Declare specific arrows from txfonts without loading the full package \makeatletter \def\re@DeclareMathSymbol#1#2#3#4{% \let#1=\undefined \DeclareMathSymbol{#1}{#2}{#3}{#4}} \re@DeclareMathSymbol{\neArrow}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\neArr}{\mathrel}{symbolsC}{116} \re@DeclareMathSymbol{\seArrow}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\seArr}{\mathrel}{symbolsC}{117} \re@DeclareMathSymbol{\nwArrow}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\nwArr}{\mathrel}{symbolsC}{118} \re@DeclareMathSymbol{\swArrow}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\swArr}{\mathrel}{symbolsC}{119} \re@DeclareMathSymbol{\nequiv}{\mathrel}{symbolsC}{46} \re@DeclareMathSymbol{\Perp}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\Vbar}{\mathrel}{symbolsC}{121} \re@DeclareMathSymbol{\sslash}{\mathrel}{stmry}{12} \re@DeclareMathSymbol{\bigsqcap}{\mathop}{stmry}{"64} \re@DeclareMathSymbol{\biginterleave}{\mathop}{stmry}{"6} \re@DeclareMathSymbol{\invamp}{\mathrel}{symbolsC}{77} \re@DeclareMathSymbol{\parr}{\mathrel}{symbolsC}{77} \makeatother % \llangle, \rrangle, \lmoustache and \rmoustache from MnSymbolE \makeatletter \def\Decl@Mn@Delim#1#2#3#4{% \if\relax\noexpand#1% \let#1\undefined \fi \DeclareMathDelimiter{#1}{#2}{#3}{#4}{#3}{#4}} \def\Decl@Mn@Open#1#2#3{\Decl@Mn@Delim{#1}{\mathopen}{#2}{#3}} \def\Decl@Mn@Close#1#2#3{\Decl@Mn@Delim{#1}{\mathclose}{#2}{#3}} \Decl@Mn@Open{\llangle}{mnomx}{'164} \Decl@Mn@Close{\rrangle}{mnomx}{'171} \Decl@Mn@Open{\lmoustache}{mnomx}{'245} \Decl@Mn@Close{\rmoustache}{mnomx}{'244} \makeatother % Widecheck \makeatletter \DeclareRobustCommand\widecheck[1]{{\mathpalette\@widecheck{#1}}} \def\@widecheck#1#2{% \setbox\z@\hbox{\m@th$#1#2$}% \setbox\tw@\hbox{\m@th$#1% \widehat{% \vrule\@width\z@\@height\ht\z@ \vrule\@height\z@\@width\wd\z@}$}% \dp\tw@-\ht\z@ \@tempdima\ht\z@ \advance\@tempdima2\ht\tw@ \divide\@tempdima\thr@@ \setbox\tw@\hbox{% \raise\@tempdima\hbox{\scalebox{1}[-1]{\lower\@tempdima\box \tw@}}}% {\ooalign{\box\tw@ \cr \box\z@}}} \makeatother % \mathraisebox{voffset}[height][depth]{something} \makeatletter \NewDocumentCommand\mathraisebox{moom}{% \IfNoValueTF{#2}{\def\@temp##1##2{\raisebox{#1}{$\m@th##1##2$}}}{% \IfNoValueTF{#3}{\def\@temp##1##2{\raisebox{#1}[#2]{$\m@th##1##2$}}% }{\def\@temp##1##2{\raisebox{#1}[#2][#3]{$\m@th##1##2$}}}}% \mathpalette\@temp{#4}} \makeatletter % udots (taken from yhmath) \makeatletter \def\udots{\mathinner{\mkern2mu\raise\p@\hbox{.} \mkern2mu\raise4\p@\hbox{.}\mkern1mu \raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern1mu}} \makeatother %% Fix array \newcommand{\itexarray}[1]{\begin{matrix}#1\end{matrix}} %% \itexnum is a noop \newcommand{\itexnum}[1]{#1} %% Renaming existing commands \newcommand{\underoverset}[3]{\underset{#1}{\overset{#2}{#3}}} \newcommand{\widevec}{\overrightarrow} \newcommand{\darr}{\downarrow} \newcommand{\nearr}{\nearrow} \newcommand{\nwarr}{\nwarrow} \newcommand{\searr}{\searrow} \newcommand{\swarr}{\swarrow} \newcommand{\curvearrowbotright}{\curvearrowright} \newcommand{\uparr}{\uparrow} \newcommand{\downuparrow}{\updownarrow} \newcommand{\duparr}{\updownarrow} \newcommand{\updarr}{\updownarrow} \newcommand{\gt}{>} \newcommand{\lt}{<} \newcommand{\map}{\mapsto} \newcommand{\embedsin}{\hookrightarrow} \newcommand{\Alpha}{A} \newcommand{\Beta}{B} \newcommand{\Zeta}{Z} \newcommand{\Eta}{H} \newcommand{\Iota}{I} \newcommand{\Kappa}{K} \newcommand{\Mu}{M} \newcommand{\Nu}{N} \newcommand{\Rho}{P} \newcommand{\Tau}{T} \newcommand{\Upsi}{\Upsilon} \newcommand{\omicron}{o} \newcommand{\lang}{\langle} \newcommand{\rang}{\rangle} \newcommand{\Union}{\bigcup} \newcommand{\Intersection}{\bigcap} \newcommand{\Oplus}{\bigoplus} \newcommand{\Otimes}{\bigotimes} \newcommand{\Wedge}{\bigwedge} \newcommand{\Vee}{\bigvee} \newcommand{\coproduct}{\coprod} \newcommand{\product}{\prod} \newcommand{\closure}{\overline} \newcommand{\integral}{\int} \newcommand{\doubleintegral}{\iint} \newcommand{\tripleintegral}{\iiint} \newcommand{\quadrupleintegral}{\iiiint} \newcommand{\conint}{\oint} \newcommand{\contourintegral}{\oint} \newcommand{\infinity}{\infty} \newcommand{\bottom}{\bot} \newcommand{\minusb}{\boxminus} \newcommand{\plusb}{\boxplus} \newcommand{\timesb}{\boxtimes} \newcommand{\intersection}{\cap} \newcommand{\union}{\cup} \newcommand{\Del}{\nabla} \newcommand{\odash}{\circleddash} \newcommand{\negspace}{\!} \newcommand{\widebar}{\overline} \newcommand{\textsize}{\normalsize} \renewcommand{\scriptsize}{\scriptstyle} \newcommand{\scriptscriptsize}{\scriptscriptstyle} \newcommand{\mathfr}{\mathfrak} \newcommand{\statusline}[2]{#2} \newcommand{\tooltip}[2]{#2} \newcommand{\toggle}[2]{#2} % Theorem Environments \theoremstyle{plain} \newtheorem{theorem}{Theorem} \newtheorem{lemma}{Lemma} \newtheorem{prop}{Proposition} \newtheorem{cor}{Corollary} \newtheorem*{utheorem}{Theorem} \newtheorem*{ulemma}{Lemma} \newtheorem*{uprop}{Proposition} \newtheorem*{ucor}{Corollary} \theoremstyle{definition} \newtheorem{defn}{Definition} \newtheorem{example}{Example} \newtheorem*{udefn}{Definition} \newtheorem*{uexample}{Example} \theoremstyle{remark} \newtheorem{remark}{Remark} \newtheorem{note}{Note} \newtheorem*{uremark}{Remark} \newtheorem*{unote}{Note} %------------------------------------------------------------------- \begin{document} %------------------------------------------------------------------- \section*{temporal logic} \hypertarget{contents}{}\section*{{Contents}}\label{contents} \noindent\hyperlink{idea}{Idea}\dotfill \pageref*{idea} \linebreak \noindent\hyperlink{basic_temporal_language_btl}{Basic temporal language, (BTL)}\dotfill \pageref*{basic_temporal_language_btl} \linebreak \noindent\hyperlink{frames_and_models_for_btl}{Frames and models for BTL}\dotfill \pageref*{frames_and_models_for_btl} \linebreak \noindent\hyperlink{4}{(4)}\dotfill \pageref*{4} \linebreak \noindent\hyperlink{temporal_type_theory_in_terms_of_adjoints}{Temporal type theory in terms of adjoints}\dotfill \pageref*{temporal_type_theory_in_terms_of_adjoints} \linebreak \noindent\hyperlink{computation_tree_logic}{Computation tree logic}\dotfill \pageref*{computation_tree_logic} \linebreak \noindent\hyperlink{references}{References}\dotfill \pageref*{references} \linebreak \hypertarget{idea}{}\subsection*{{Idea}}\label{idea} \textbf{Temporal logics}, as their name suggests, are logics that involve time. They form a very large and important class of [[modal logics]], but here we will, to start with, only look at some simple cases. An important early example of a temporal logic is given by [[Arthur Prior]]`s \textbf{tense} logic. \hypertarget{basic_temporal_language_btl}{}\subsection*{{Basic temporal language, (BTL)}}\label{basic_temporal_language_btl} First the basic temporal language is built with two binary model operators, which instead of being denoted `box' and `diamond', are written $F$ and $P$. The intended interpretation of these are: \begin{itemize}% \item $F\phi$ is \emph{$\phi$ will be true at some \textbf{future} time}; \item $P\phi$ is \emph{$\phi$ was true at some \textbf{past} time.} \end{itemize} The reason for the notation $F$ and $P$ should be clear. \begin{itemize}% \item The dual of $F$ is $G$, so $G\phi = \neg F\neg \phi$. This means that we read $G\phi$ as `at no future time is $\phi$ not true', i.e., $\phi$ is always \textbf{going} to be true. ($G$ for `going'.) \item The dual of $P$ is written $H$, whence $H\phi = \neg P\neg \phi$ and $H\phi$ interprets as `$\phi$ \textbf{has} always been true'. ($H$ is for `has' - which is a bit weak, but that is life!) \end{itemize} \hypertarget{examples}{}\paragraph*{{Examples}}\label{examples} \begin{itemize}% \item If for all $\phi$ we have $P\phi \to G P\phi$, then \emph{whatever has happened will always have happened}, which seems reasonable so this might be a suitable `general truth' we might want a temporal logic to contain. \item If we had in our logic that $F\phi \to F F\phi$, then this would means that if $\phi$ is true at some future time, then at some future time it will be true that $\phi$ will be true at some future time, so \emph{between any two instants there must be a third}, and the general truth of this would say something about the `internal structure' of time as modelled by such a logic. \end{itemize} This basic temporal language does not yet really constitute a sensible logic that could model important features of `time'. but we can still look at models so as to see what properties of the models can be identified as corresponding to seemingly feasible formulae in the language. \hypertarget{frames_and_models_for_btl}{}\subsection*{{Frames and models for BTL}}\label{frames_and_models_for_btl} A \emph{frame} for BTL will be a set, $T$, with two binary relations $R_F$ and $R_P$. We have $R_F x y$ reads that `at $x$, $y$ is in the future' - but, in the ordinary common sense meaning of words, this should mean $R_P y x$ and conversely. In other words $R_P$ should be the \emph{converse} or [[opposite relation]] of $R_F$. (In general, if $R$ is a binary relation on a set $X$, then its [[opposite relation]] is defined by \begin{displaymath} (y,x) \in R^{op} \Leftrightarrow (x,y)\in R.) \end{displaymath} \begin{udefn} A frame of the form $(T,R,R^{op})$ is called a \emph{bidirectional frame}. \end{udefn} If we have \textbf{any} model $\mathfrak{M} = (T,R,V)$ with a valuation, $V$, then we can interpret BTL in terms of it by specifying the interpretation of $P$ in terms that of $R$. explicitly we define \begin{itemize}% \item $\mathfrak{M}, t\models F\phi$ if and only if $\exists s (R t s \wedge \mathfrak{M}, s\models \phi);$ \item $\mathfrak{M}, t\models P\phi$ if and only if $\exists s (R s t \wedge \mathfrak{M}, s\models \phi)$, \end{itemize} but, of course, this is still a long way from having a logic that looks as if it captures `time-like' behaviour. We could have models with `circular time', and `branching time'. Both of these correspond to various situations in computational applications so should be kept in mind, both to be able to identify their occurrence and to build them in or to avoid them in the logics. \hypertarget{4}{}\subsection*{{(4)}}\label{4} One condition it would be natural to impose is transitivity of $R_F$, since if $F\phi$ is true at some future time, then clearly, $\phi$ itself must also be true at some future time, i.e., later on still! This leads one to ask that \begin{displaymath} (4) \quad\quad F F\phi \to F\phi \end{displaymath} should be in our logic, (and similarly for $P$, but that will hold in the bidirectional models since if $R$ is transitive then so will be $R^{op}$). \hypertarget{temporal_type_theory_in_terms_of_adjoints}{}\subsection*{{Temporal type theory in terms of adjoints}}\label{temporal_type_theory_in_terms_of_adjoints} It is possible to specify a temporal type theory in the context of [[adjoint logic]]. Consider a category $\mathcal{C}$, and an [[internal category]] given by $b, e: Time_1 \rightrightarrows Time_0$. Here we understand elements of $Time_1$ as time intervals, and $b$ and $e$ as marking their beginning and end points. We may choose to impose additional structure on $Time$, e.g., that it be an internal [[poset]], or a [[linear order]]. Now each arrow, $b$ and $e$, generates an adjoint triple, e.g., $\sum_b \dashv b^{\ast} \dashv \prod_b$, formed of [[dependent sum]], [[base change]], [[dependent product]], going between the slices $\mathcal{C}/Time_0$ and $\mathcal{C}/Time_1$. Then we find two adjunctions $\sum_b e^{\ast} \dashv \prod_e b^{\ast}$ and $\sum_e b^{\ast} \dashv \prod_b e^{\ast}$, e.g., \begin{displaymath} Hom(\sum_b e^{\ast} C(t), D(t)) = Hom(e^{\ast} C(t), b^{\ast} D(t)) = Hom(C(t), \prod_e b^{\ast} D(t)). \end{displaymath} Now consider for the moment that $C$ and $D$ are propositions. Then $\sum_b e^*C$ means ``there is some interval beginning now and such that $C$ is true at its end'', i.e. $F C$; while $\prod_e b^*D$ means ``for all intervals ending now, $D$ is true at their beginning'', i.e. $H D$. Hence our adjunction is $F \dashv H$. Similarly, interchanging $b$ and $e$, we find $P \dashv G$. Note that we don't have to assume the classical principle $G\phi = \neg F\neg \phi$ and $H\phi = \neg P\neg \phi$. In the setting of dependent type theory, we do not need to restrict to propositions, but can treat the temporal operators on general time-dependent types. So if $People(t)$ is the type of people alive at $t$, $F People(t)$ is the type of people alive at a point in the future of $t$, and $G People(t)$ is a function from future times to people alive at that time, e.g., an element of this is `The oldest person alive(t)'. Since $Time$ is a category, we have in addition to the two projections $p,q:Time_1\times_{Time_0} Time_1 \to Time_1$, composition $c:Time_1\times_{Time_0} Time_1 \to Time_1$. This allows us to express more subtle temporal expressions, such as `$\phi$ has been true since a time when $\psi$ was true', denoted $\phi S \psi$. \begin{displaymath} \phi S \psi := \Sigma_e (b^* \psi \times \Pi_c (e p)^* \phi) \end{displaymath} (note $e p = b q$). That is, there is a subinterval ending now such that $\psi$ was true at its beginning and $\phi$ was true at all points inside it. Similarly, `$\phi$ will be true until a time when $\psi$ is true' is \begin{displaymath} \phi U \psi := \Sigma_b (e^* \psi \times \Pi_c (e p)^* \phi). \end{displaymath} Temporal logicians have debated the relevant advantages of instant-based and interval-based approaches. Some have also considered hybrid approaches (\hyperlink{Balb11}{Balb11}). The analysis of this section suggests that working with intervals and instants together in the form of an internal category allows for a natural treatment via [[adjoint logic]]. An important construction in interval-based temporal logics is the \textbf{chop operator}, $C$ (\hyperlink{Venema91}{Venema 1991}). This applies to two interval properties, $\alpha$, $\beta$, so that $\alpha C \beta$ denotes the property of an interval that it may be divided into two sub-intervals such that $\alpha$ holds of the first and $\beta$ of the second. In our current framework we have $\alpha C \beta : \equiv \Sigma_c(p^{\ast}\alpha \times q^{\ast} \beta)$. One of the consequences of taking $Time$ as an internal category is that the future includes the present, so that $\phi$ could be true now and at no other instant but we would have that $F \phi$ is true when it is supposed to say ``$\phi$ will be true at some Future time''. Similarly, we would have that $\phi U \psi$ holds now if $\psi$ and $\phi$ both hold now (in general, as defined above it requires $\phi$ to still hold at the instant when $\psi$ becomes true). If we wish to change these consequences, we could let $Time_1$ be the $\lt$-intervals instead of the $\le$-ones. In other words, we could take $Time$ to be a [[semicategory]]. While this accords with standard practice, the original alternative has been proposed: \begin{quote}% The most common practice in temporal logic is to regard time as an irreflexive ordering, so that ``henceforth'', meaning ``at all future times'', does not refer to the present moment. On the other hand, the Greek philosopher Diodorus proposed that the necessary be identified with that which is now and will always be the case. This suggests a temporal interpretation of $\Box$ that is naturally formalised by using reflexive orderings. The same interpretation is adopted in the logic of concurrent programs to be discussed. (\hyperlink{Gold92}{Gold92, p. 44}) \end{quote} On the other hand, some temporal logicians look to represent both forms of `henceforth'. For an related approach to temporal type theory, see (\hyperlink{SchSpi17}{Schultz-Spivak 17}). \hypertarget{computation_tree_logic}{}\subsection*{{Computation tree logic}}\label{computation_tree_logic} In [[computer science]], logics have been devised for dealing with the behaviours of entities undergoing transitions between its states. Where in a linear temporal logic, operators are provided for describing events along a single computation path, in a branching-time logic the temporal operators quantify over the paths that are possible from a given state. The \textbf{computation tree logic} $CTL^{\ast}$ (pronounced ``CTL star'') combines both the branching-time operators of $CTL$ and the linear-time operators of $LTL$. Starting from a [[transition system|finite-state system]], where a finite collection of states represented by the nodes of a graph are connected by labelled edges representing transitions, the path tree of the system can be generated. This presents as a [[tree]] all possible paths that the system may undergo from an initial state. The Computation tree logic $CTL^{\ast}$ is then deployed to reason about the behaviour of the system. This allows for quantification, both universal and existential, over paths. It is also possible to express that a certain state will occur at some point in the future or always in the future. Now beyond the $F$ and $G$ operators above, we can express new operators such as `necessarily in the future' to convey that along every path emanating from the current state that some property will hold at some point, and `possibly henceforth' to convey that there is at least one path along which some property holds at every point. There is a [[Curry-Howard correspondence]] between linear-time temporal logic (LTL) and functional reactive programming (FRP) (\hyperlink{Jeffrey12}{Jeffrey 12}, \hyperlink{Jeltsch12}{Jeltsch 12}). \hypertarget{references}{}\subsection*{{References}}\label{references} Generally this entry is based on \begin{itemize}% \item P. Blackburn, M. de Rijke and Y. Vedema, \emph{Modal Logic}, Cambridge Tracts in Theoretical Computer Science, vol. 53, 2001, \end{itemize} but see also: \begin{itemize}% \item A. Galton, \href{http://plato.stanford.edu/entries/logic-temporal/}{Temporal Logic, (Stanford Encyclopedia of Philosophy)} \item [[Patrick Blackburn]], \emph{Tense, Temporal Reference and Tense Logic}, Journal of Semantics, 1994,11, pages 83--101, \href{http://hylo.loria.fr/content/papers/files/tense.pdf}{on-line version} \item [[Arthur Prior]], 1957, \emph{Time and Modality}, Oxford: Clarendon Press. \item [[Arthur Prior]], 1967, \emph{Past, Present and Future}, Oxford: Clarendon Press. \item Balbiani, P., Goranko, V. and Sciavicco, G., 2011, `Two-sorted Point-Interval Temporal logics', in \emph{Proc. of the 7th International Workshop on Methods for Modalities (M4M7)} (Electronic Notes in Theoretical Computer Science: Volume 278), pp. 31--45. \item [[Robert Goldblatt]], \emph{Logics of time and computation}, 1992, (\href{http://sul-derivatives.stanford.edu/derivative?CSNID=00003782&mediaType=application/pdf}{pdf}) \end{itemize} For the relationship between linear tree logic and functional reactive programming, see \begin{itemize}% \item Alan Jeffrey \emph{LTL types FRP: Linear-time temporal logic propositions as types, proofs as functional reactive programs}, in: Proceedings of the Sixth Workshop on Programming Languages Meets Program Verification (PLPV ’12)(2012), pp. 49–60. (\href{http://ect.bell-labs.com/who/ajeffrey/papers/plpv12.pdf}{pdf}) \item Wolfgang Jeltsch, \emph{Towards a Common Categorical Semantics for Linear-Time Temporal Logic and Functional Reactive Programming}, Electronic Notes in Theoretical Computer Science 286, pp. 229-242, (\href{https://doi.org/10.1016/j.entcs.2012.08.015}{doi}) \end{itemize} For an interval-based approach see \begin{itemize}% \item Yde Venema, \emph{A modal logic for chopping intervals}. Journal of Logic and Computation, 1(4), pp. 453–476, 1991. \end{itemize} For a termporal type theory see \begin{itemize}% \item Patrick Schultz, David Spivak, \emph{Temporal Type Theory: A topos-theoretic approach to systems and behavior}, (\href{https://arxiv.org/abs/1710.10258}{arXiv:1710.10258}) \end{itemize} [[!redirects temporal logic]] [[!redirects temporal logics]] \end{document}