As the name suggests, model-based diagnosis [19, 10] aims to find out the causes of the supposedly faulty behavior of a system based on its model. When the system is static, like a combinational circuit, the (behavioral) model of a
As the name suggests, model-based diagnosis [19, 10] aims to find out the causes of the supposedly faulty behavior of a system based on its model. When the system is static, like a combinational circuit, the (behavioral) model of a component (for instance, a logical gate) is represented by a mapping from the possible input to the expected output. In a dynamical system, time comes into play and model-based diagnosis needs to account for the state of the system too [22] . For various reasons, a dynamical system may be conveniently modeled as a discrete-event system (DES) [8] , where the DES changes state over discrete time. However, the way the DES is represented is varying, typically as a monolithic finite-state machine [17] , as a network of components [15] , each of them being modeled as a communicating automaton [6] , or as a Petri net [2, 9] . Although the automaton of a DES component can represent just the nominal (correct) behavior [18] , usually each state transition is either normal or abnormal, as in the seminal work by [20, 21] .
In the literature, diagnosing a DES amounts to generating a set of candidates based on a given temporal observation, namely a sequence of temporally-ordered observations, where a candidate is a set of faults, with each fault being an abnormal event or transition. The diagnosis of a DES is a form of abductive reasoning, as the candidates are generated based on the trajectories (sequences of state transitions) of the DES that conform with the temporal observation. The classical approach in [20] performs the abduction offline, by compiling the DES models into a diagnoser, a data structure that is exploited online in order to produce a new set of candidates upon the reception of each new observation (monitoring-based diagnosis). By contrast, in the active-system approach [1, 15] , the abduction can be carried out online by focusing on the trajectories that conform with the temporal observation. Specifically, the diagnosis output is the set of candidates relevant to the (possibly infinite) set of trajectories of the DES that produce the temporal observation. Since the domain of faults is finite, both the candidates and the diagnosis output are finite and bounded.
Still, in both the diagnoser approach and the active-system approach, a candidate is a set of faults. This sounds strange considering that a candidate is the projection of a trajectory, which is not a set, but a sequence of state transitions. The point is, since a set is a collection of unordered elements without duplicates, both the temporal ordering of faults and their multiple occurrences are completely lost within a set. When the diagnosis task focuses on critical systems or processes, such as a large power network, a nuclear plant, or even the evolution of a pandemic like the current COVID-19, set-orientated diagnosis may be less than optimal in explaining a supposedly abnormal behavior, owing to the lack of any temporal information relevant to faults, along with the inability to discriminate between single and multiple occurrences of the same fault. Hence, embedding temporal information in candidates may be essential for critical-decision making.
To this end, we introduce the notion of a temporal fault, which is a sequence of temporally-ordered faults associated with a trajectory of the DES. Despite the preservation of the temporal information in a candidate, the act of replacing a sequence for a set comes with two problems, however: (1) the length of candidates is possibly unbounded, and (2) the set of candidates may be infinite. Fortunately, the set of candidates that explain a temporal observation turns out to be a regular language on faults, thus it can be represented as a regular expression. In other words, both the unboundedness of candidates and the infinity of the set of candidates can be concisely represented by regular expressions on faults.
Given the notion of a temporal fault, a diagnosis technique is proposed based on a data structure (namely, a finite automaton) called a temporal diagnoser, which allows for the efficient a posteriori diagnosis of a DES. A temporal diagnoser is generated offline in its entirety, so that any temporal observation can be explained online efficiently. This approach is only ideal, however, as in real DESs the size of a temporal diagnoser grows exponentially with the number of components in the DES. Although a temporal diagnoser retains legitimacy as a formal reference (as is for the diagnoser in [20] ), a more practical approach is presented in the next sections, which introduce a partial temporal diagnoser, this being initially generated offline as a prefix of the temporal diagnoser.
Remarkably, given a temporal observation that is not included in the language of the partial temporal diagnoser, the latter can be extended online while solving the relevant diagnosis problem. Moreover, a partial temporal diagnoser can be enriched based on domain-dependent behavioral scenarios [3, 4, 5] . A scenario is a concise way to specify a collection of evolutions of the DES (e.g. all the trajectories that include three occurrences of a specific transition or all the trajectories that are affected by a single fault). This notion comes in handy to specify the (interesting and/or critical and/or frequent) evolutions to be added to the partial temporal diagnoser. In recent work by the authors, scenarios were applied to both monitoring [4, 5] and a posteriori diagnosis of DESs [3] , the latter being the same task that is dealt with in this paper. However, while a set-oriented perspective on diagnosis results is adopted in [3] , a new temporal-oriented approach is proposed in this paper. 
A DES X is a network of components, where the behavior of each component is modeled as a communicating automaton [6] . A component is endowed with input and output pins, where each output pin is connected with an input pin of another component by a link. A component reacts to events (occurring either outside the DES or inside it) by performing a transition. When performing a transition, a component consumes the triggering (input) event and possibly generates new events on its output pins, which are bound to trigger the transitions of other components. This results in a sequence of component transitions, called a trajectory of X, at the end of which X becomes idle, namely without any internal event to be consumed. A contiguous subsequence of a trajectory is called a trajectory segment. At the occurrence of a component transition, X changes its state, with a state of X being a pair of the array of the current component states and the array of the (possibly empty) current events placed in links. Formally, the (possibly infinite) set of trajectories of X is specified by a deterministic finite automaton (DFA), namely the space X * of X, X * = (Σ, X, τ, 
In the literature, a trajectory T is also associated with a diagnosis, namely the set of faults involved in T . As such, a diagnosis does not indicate the temporal relationships among faults, nor does it account for multiple occurrences of the same fault. On the other hand, treating a diagnosis as a set of faults guarantees that the domain of possible diagnoses is finite, being bounded by the powerset of the domain of faults. In contrast with this classical perspective, we introduce the notion of a temporal fault, which, in our view, better supports critical decision-making.
Since the length of T is in general unbounded, so too is in general the length of both Obs(T ) and Flt(T ). A contiguous subsequence of a temporal fault is called a temporal-fault segment. 
In a set-oriented perspective, the diagnosis of T would be the set {f 1 , f 2 , f 3 } , rather than a sequence, where neither the temporal ordering of faults nor the double occurrence of f 3 is embedded.
The goal in diagnosing a DES is generating the set of candidates relevant to a temporal observation O. In contrast with the classical set-oriented perspective, here a candidate is a temporal fault that is produced by a trajectory that entails O. The (possibly infinite) set of candidates is the temporal diagnosis of O, as formalized in Definition 2.
A temporal diagnosis may include an infinite number of temporal faults. Still, any temporal diagnosis can be concisely represented by a regular expression on a set of faults, as shown in the next example. 
which is represented by a regular expression on the faults f 1 , f 2 , and f 3 . In a classical set-oriented perspective, the set of candidates would be {{f 1 , f 3 }, {f 1 , f 2 , f 3 }}, in which case we know that both fault f 1 and f 3 have certainly occurred, whereas the occurrence of fault f 2 is uncertain. Besides, we have no hint about how many times such faults have manifested themselves and in which temporal order. If, instead, the regular expression is given, we know for sure that fault f 1 has occurred just once and it was the first, while f 3 was the second. In addition, we know that, if f 2 has occurred, then it has occurred after them, and it may have occurred several times, every time being followed by f 3 . All these details may be essential to understand what has happened inside the system in order to make critical decisions, including appropriate recovery actions.
In order to support the efficient generation of the temporal diagnosis of any temporal observation, a temporal diagnoser is introduced. The temporal diagnoser acts somewhat as a counterpoint to the diagnoser data structure which is exploited in classical set-oriented diagnosis of DESs [20, 21] .
The temporal diagnoser of a DES X is an NFA resulting from the (offline) compilation of X. The alphabet of the temporal diagnoser is a set of triples (o, L, f ), where o is an observation of X, L is a language on the faults of X, and f is a (possibly empty) fault. Roughly, each state of the temporal diagnoser (namely a fault space) embodies a sort of local explanation defined by languages (in fact, regular expressions) on faults.
Definition 3. Let X * be the space of X having mapping table µ(X), F the set of faults of X, andx a state in X * . The fault space ofx is an NFA X * x = (Σ, X, τ, x 0 , X f ), where Σ = F ∪ {ε} is the alphabet, X is the subset of the states of X * that are reachable fromx by unobservable transitions, x 0 =x is the initial state, X f is the set of final states (the states that are final in X * ), and τ : X × Σ → 2 X is the transition function, where x 1 , f, x 2 is an arc in τ iff x 1 , t, x 2 is a transition in X * and (t, ε, f ) ∈ µ(X). Each state x ∈ X is marked with the language of the temporal-fault segments of the trajectory segments in X * fromx to x, denoted L(x). The diagnosis language of the fault space X *
x is a regular language on the set of faults of X defined as follows: Figure 2 can be carried out by inspection of the NFA shown in the center of the figure. However, a general technique allowing for the automatic decoration of the states within a fault space is needed. To this end, we have adapted the algorithm proposed in [7] in the context of sequential circuit state diagrams. Essentially, this algorithm takes as input an NFA and generates the regular expression of the language accepted by this NFA. Still, in a fault space, all states need to be marked with the relevant regular expressions. Thus, we have extended the algorithm to decorate all the states in one processing of the NFA (rather than one processing for each state). if (x 2 , r 2 ) ∈ C new then 11:
Substitute (x 2 , (r 2 |r 2 )) for (x 2 , r 2 ) in C new 12: R ← rL(x) 22 :
end if 25: end procedure
A temporal diagnoser X ∆ is compiled knowledge built offline that allows for the efficient online generation of a temporal diagnosis ∆(O) of X by means of an algorithm called Ideal Diagnosis. The "ideal" qualifier indicates that the actual generation of the whole temporal diagnoser is prohibitive in real applications, owing to the exponential explosion of the number of states. Roughly, X ∆ is traversed based on O and the regular expressions marking the transitions of X ∆ are concatenated in the given order. When the transition relevant to the last observation in O is traversed and a final state x f is entered, the regular expression composed so far is eventually appended with the diagnosis language L(x f ), which was itself precomputed offline. Since X ∆ is an NFA, several paths can generate the same temporal observation O; therefore, the final regular expression is in general composed by the alternative of several subexpressions. The pseudocode of Ideal Diagnosis is listed in Algorithm 1 (lines 1-25) . It takes as input a temporal diagnoser X ∆ and a temporal observation O, and generates as output a regular expression R whose language equals ∆(O). To this end, the algorithm exploits a set of contexts, namely C, each context being a pair (x, r) , where x is a state of X ∆ and r a regular expression on the faults of X. Initially, C includes just the initial context (x 0 , ε), where x 0 is the initial state of X ∆ (line 4). Then, a loop is performed on the observations in O (lines 5-18). At each iteration, a new set of contexts, namely C new is generated based on the current content of C. Specifically, for each context (x , r ) in C and for each arc of X ∆ exiting x and marked with the triple (o, r, f ), where o is the current observation, a regular expression r 2 = r r f is computed (line 9). In fact, r accounts for the faults up to x , r accounts for the faults up to the internal state x of x , and f is the (possibly empty) fault associated with the component transition that is observable by means of o. The update of C new is performed in lines 10-14, depending on whether a context involving the reached state x 2 exists in C new or not. If a context (x 2 , r 2 ) exists, then its regular expression is extended with the alternative r 2 , thereby yielding the updated context (x 2 , (r 2 |r 2 )) (line 11). Otherwise, a new context (x 2 , r 2 ) is created (line 13). Before the end of the iteration, C is replaced with C new (line 17). When all the observations have been considered Remarkably, the language of R equals the temporal diagnosis ∆(O) that was determined in Example 2 by inspection of the space P * .
In real applications, assuming that a temporal diagnoser is available in its entirety is impractical, even if the generation of the diagnoser is performed offline, because of the exponential explosion of the set of states involved. Hence, we propose a viable approach called practical diagnosis, in which a partial temporal diagnoser is generated upfront and subsequently extended either offline, based on meaningful behavioral scenarios, or when being operated online. A similar consideration applies to the space X * , whose construction is assumed to be impractical. Hence, hereafter, a notation like x, t, x ∈ X * does not assume that X * is available: it is only a shorthand for stating that the component transition t is triggerable at the state x of X.
Definition 5. Let X ∆ be the temporal diagnoser of X. A partial temporal diagnoser of X, denoted X δ , is a connected subgraph of X ∆ that includes the initial state of X ∆ . Example 6. With reference to the temporal diagnoser P ∆ displayed in Figure 3 , a partial temporal diagnoser P δ is shown on the left of Figure 4 . In particular, P δ is a prefix of P ∆ at distance 1, that is, the subgraph of P ∆ that includes all the states and transitions that can be reached (from the initial state) by one (dashed) transition.
Once an initial partial temporal diagnoser X δ has been somehow generated, for instance a prefix of the (whole) temporal diagnoser X ∆ , it can be upgraded in several ways, such as by integrating into it the knowledge about the evolutions concisely represented by some behavioral scenarios [5, 3, 4] . 
To upgrade a partial temporal diagnoser X δ so that it embeds the set of temporal observations generated by a scenario S, we need to synchronize S with the behavior of X, as described below.
Definition 7. Let S = (T, L) be a scenario of X. The restriction of a trajectory T in X * on T is the sequence
The abduction of S, X * S , is a DFA whose language is the set { T | T ∈ X * , T T ∈ L }. In other words, the abduction of a scenario S is a subspace of X * where each trajectory T conforms with a string of the scenario, in the sense that the subsequence of the component transitions in T that are in T is a string in L. Example 9. With reference to the scenario S defined in Example 7 and the abduction P * S displayed in the center of Figure 5 , shown on the right of Figure 5 is the observation pattern O * S . To upgrade a partial temporal diagnoser X δ based on an observation pattern O * , Algorithm 2 is used (lines 1-28).
Each state x δ in X δ is assumed to be marked with a labeling set (initially empty), denoted Λ(x δ ), which contains states of O * . This serves to synchronize X δ with O * avoiding duplications of X δ states, as well as endless loops caused by cycles in O * . A unmarked state ω in Λ(x δ ) means that the transitions exiting ω in O * need to be synchronized with the transitions exiting x δ in X δ . If a transition is missing in X δ , it is created, possibly along with its target state, a fault space, which is marked with the relevant labeling set (line 18). Once all transitions exiting ω in O * have been processed, ω is marked in Λ(x δ ) (line 24). The run terminates when there is no unmarked ω in any labeling set.
Example 10. Let P δ be the partial temporal diagnoser defined in Example 6 and shown on the left of Figure 4 . Let O * S be the observation pattern displayed on the right of Figure 5 . The partial explainer resulting from the application of Algorithm 2 on P δ and O * S is displayed on the right of Figure 4 . Assuming a partial diagnoser, the Ideal Diagnosis specified in Algorithm 1 needs to be revised. Specifically, when considering a new observation o ∈ O in line 5, we have to check whether the transition function of the relevant state in the partial temporal diagnoser needs to be extended by o. If so, the partial temporal diagnoser is upgraded in a way that is similar to the mode in which Algorithm 2 works. As such, this new algorithm, called Practical Diagnosis, not only generates the temporal diagnosis ∆(O), but possibly upgrades the partial temporal diagnoser when required. input X δ : a partial temporal diagnoser of X, and O * : an observation pattern for X, with initial state ω o 3: side effects: the partial temporal diagnoser X δ is upgraded based on O *
Insert ω 0 into the (initially empty) labeling set Λ(x δ 0 ), where x δ 0 is the initial state of X δ 5:
repeat 6: Let Λ(x δ ) be a set including an unmarked pattern state ω 7:
for all unmarked pattern state ω ∈ Λ(x δ ) do Insert ω into Λ(x δ ), unless ω is included in Λ(x δ ) already 12: end for for all x ∈ x δ , x, t, x ∈ X * , (t, o, f ) ∈ µ(X) do 15: Let x δ denote the fault space of x , namely X * Empty all the nonempty labeling sets Λ in X δ 28: end procedure
A shift from a set-oriented to a temporal-oriented perspective in diagnosis of DESs has been proposed in this paper. The motivation for this shift is grounded on critical-decision making, where the temporal information embedded in candidates may be essential for a crystal clear explanation of the temporal observation. This temporal-oriented paradigm is novel inasmuch all approaches to diagnosis of DESs in the literature, including the seminal diagnoser approach [20] (along with all its variants), are set-oriented. In contrast with a set-oriented setting, where a candidate is a finite set of faults, with neither temporal ordering nor duplicates, in our temporal-oriented perspective a candidate is a (possibly unbounded) sequence of faults, with reciprocal temporal ordering and multiple occurrences of the same fault being manifested. The supposedly unacceptable burden of unbounded candidates and/or infinite sets of candidates is dominated by a notation based on regular expressions on faults.
Fault detection in DESs has been generalized in [11] to the recognition of a supervision pattern, this being a DFA that can represent the ordered occurrences of (possibly multiple) faults. Thus, it is tempting to believe that diagnosis with supervision patterns somewhat resembles the approach proposed in this paper. Still, each supervision pattern requires the specification of a finite automaton whose regular language is a set of strings of transitions. By contrast, the approach in this paper is not given any automaton upfront recognizing a language; instead, it generates a regular expression representing the language of the faults of all the trajectories that imply the temporal observation. Moreover, the output of the supervision pattern approach only clarifies whether the pattern has occurred. In doing so, however, it does not compute the number of its occurrences, nor does it show the reciprocal order of these occurrences and those of individual faults within the trajectories implying the temporal observation. In the view of the current paper, instead, if a fault is associated with a pattern, this can be part of a temporal fault as all other faults are. In other words, supervision patterns, as well as other "complex" faults [13, 16] , can be embedded in temporal faults and treated homogeneously.
Future research includes an extensive experimental activity based on synthetic benchmarks as well as the adoption of temporal diagnosis for other classes of DESs, including complex DESs [12, 14] . Applying the approach described in this paper to a real-world case study is also a challenge for the future. Several applications domains could be targeted besides the one that inspired the running example in this paper, namely protection apparata for power transmission networks, including home automation and pandemic monitoring.