Skip to main content

On Reachability Analysis of Updatable Timed Automata with One Updatable Clock

  • Conference paper
Structured Object-Oriented Formal Language and Method (SOFL+MSVL 2015)

Part of the book series: Lecture Notes in Computer Science ((LNTCS,volume 9559))

Abstract

As an extension of Timed Automata (TAs), Updatable Timed Automata (UTAs) proposed by Bouyer et al. have the ability to update clocks in a more elaborate way than simply reset them to zero. The reachability of general UTAs is undecidable, by regarding a pair of updatable clocks as counters updatable with incrementation and decrementation operations. This paper investigates the model of subclass of UTAs by restricting the number of updateable clocks. It is shown that the reachability of UTAs with one updatable clock (UTA1s) under diagonal-free constraints is decidable. The decidability is proved by treating a region of a UTA1 as an unbounded digiword, and encoding sets of digiwords that are accepted by a pushdown system where regions are generated on-the-fly on the stack.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as EPUB and PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

References

  1. Alur, R., Dill, D.L.: A theory of timed automata. Theor. Comput. Sci. 126, 183–235 (1994)

    Article  MathSciNet  MATH  Google Scholar 

  2. Bouyer, P., Dufourd, C., Fleury, E., Petit, A.: Are timed automata updatable? In: Emerson, E.A., Sistla, A.P. (eds.) CAV 2000. LNCS, vol. 1855. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  3. Bouyer, P., Dufourd, C., Fleury, É., Petit, A.: Expressiveness of updatable timed automata. In: Nielsen, M., Rovan, B. (eds.) MFCS 2000. LNCS, vol. 1893, pp. 232–242. Springer, Heidelberg (2000)

    Chapter  Google Scholar 

  4. Bouyer, P., Dufourd, C., Fleury, E., Petit, A.: Updatable timed automata. Theor. Comput. Sci. 321, 291–345 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  5. Schwoon, S.: Model-checking pushdown system. Ph.D. thesis, Technical University of Munich (2000)

    Google Scholar 

  6. Ouaknine, J., Worrell, J.: On the language inclusion problem for timed automata: closing a decidability gap. In: Proceedings of the 19th IEEE Symposium on Logic in Computer Science (LICS’04), IEEE Computer Society, pp. 54–63 (2004)

    Google Scholar 

  7. Abdulla, P.A., Jonsson, B.: Verifying Networks of Timed Processes (Extended Abstract). In: Steffen, B. (ed.) TACAS 1998. LNCS, vol. 1384, p. 298. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  8. Abdulla, P., Jonsson, B.: Model checking of systems with many identical time processes. Theor. Comput. Sci. 290, 241–264 (2003)

    Article  MathSciNet  MATH  Google Scholar 

  9. Li, G., Cai, X., Ogawa, M., Yuen, S.: Nested timed automata. In: Braberman, V., Fribourg, L. (eds.) FORMATS 2013. LNCS, vol. 8053, pp. 168–182. Springer, Heidelberg (2013)

    Chapter  Google Scholar 

  10. Li, G., Ogawa, M., Yuen, S.: Nested timed automata with frozen clocks. In: Sankaranarayanan, S., Vicario, E. (eds.) FORMATS 2015. LNCS, vol. 9268, pp. 189–205. Springer, Heidelberg (2015)

    Chapter  Google Scholar 

  11. Choffrut, C., Goldwurm, M.: Timed automata with periodic clock constraints. J. Automata, Lang. Comb. 5, 371–404 (2000)

    MathSciNet  MATH  Google Scholar 

  12. Demichelis, F., Zielonka, W.: Controlled timed automata. In: Sangiorgi, D., de Simone, R. (eds.) CONCUR 1998. LNCS, vol. 1466, pp. 455–469. Springer, Heidelberg (1998)

    Chapter  Google Scholar 

  13. Trivedi, A., Wojtczak, D.: Recursive timed automata. In: Bouajjani, A., Chin, W.-N. (eds.) ATVA 2010. LNCS, vol. 6252, pp. 306–324. Springer, Heidelberg (2010)

    Chapter  Google Scholar 

  14. Wen, Y., Li, G., Yuen, S.: An over-approximation forward analysis for nested timed automata. In: Liu, S., Duan, Z. (eds.) SOFL+MSVL 2014. LNCS, vol. 8979, pp. 62–80. Springer, Heidelberg (2015)

    Google Scholar 

  15. Minsky, M.: Computation: Finite and Infinite Machines. Prentice-Hall, Upper Saddle River (1967)

    MATH  Google Scholar 

  16. Bouyer, P.: Forward analysis of updatable timed automata. Formal Methods in System Design 24, 281–320 (2004)

    Article  MathSciNet  MATH  Google Scholar 

  17. Fang, B., Li, G., Fang, L., Xiang, J.: A refined algorithm for reachability analysis of updatable timed automata. In: Proceedings of the 1st IEEE International Workshop on Software Engineering and Knowledge Management (SEKM 2015 @ QRS 2015), IEEE Computer Society, pp. 230–236 (2015)

    Google Scholar 

Download references

Acknowledgements

This work is supported by the NSFC-JSPS bilateral joint research project (61511140100), the National Natural Science Foundation of China (No. 61472240, 91318301, 61261130589), and JSPS KAKENHI Grant-in-Aid for Scientific Research(B) (15H02684, 25280023) and Challenging Exploratory Research (26540026).

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Guoqiang Li .

Editor information

Editors and Affiliations

A A Proof of Lemma 1

A A Proof of Lemma 1

Proof

Let \(\varrho =(q,\nu )\). Then \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), w \rangle \), where \(w=\bullet ^k \perp \) for some k.

For preservation part, By case analysis of \(\varrho \rightarrow \varrho '\).

  1. 1.

    Time Progress:\(\varrho \xrightarrow {t}\varrho '\). By the digiword’s region-like property, we have \(digi(\nu ) \Rightarrow ^* digi(\nu +t)\). Proceed with two subcases:

    1. (a)

      If no stack operations involved (i.e. \(\nu (c) + t \le n\)), then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), w \rangle \hookrightarrow ^* \llbracket \varrho '\rrbracket = \langle (q, digi(\nu +t)), w \rangle \) by applying the first transition rule of time progress rules finite times. Note that in this subcase, \(w=\perp \).

    2. (b)

      If \(\nu (c)+t > n\), then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), w \rangle \hookrightarrow ^* \llbracket \varrho '\rrbracket = \langle (q, digi(\nu +t)), w' \rangle \) by applying the first time progress rule finite times (maybe zero times if \(\nu (c)\ge {}n\)) and then applying the second time progress rule finite times.

  2. 2.

    Local:\(\varrho =(p, \nu )\xrightarrow {\epsilon }\varrho '=(q, \nu )\). Then with the Local transition of PDS, \(\llbracket \varrho \rrbracket =\langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu )), w \rangle \).

  3. 3.

    Test: \(\varrho =(p, \nu )\xrightarrow {x \in I?}\varrho '=(q, \nu )\). Then with the Test transition of PDS, \(\llbracket \varrho \rrbracket =\langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu )), w \rangle \), since \(\exists (x, \mathtt{r}_i) \in Y_j \in digi(\nu )\) such that \(\mathtt{r}_i \subseteq I\), where \(digi(\nu ) = Y_1 Y_2 \cdots Y_j \cdots Y_m\).

  4. 4.

    Assignment: \(\varrho =(p, \nu ) \xrightarrow {x \leftarrow I} \varrho '=(q,\nu [x\leftarrow d])\), where \(d \in I\). We proceed with 2 cases:

    1. (a)

      If \(x \ne c\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu [x\leftarrow {}d])), w \rangle \) by applying the first assignment rule of PDS \(\mathcal {P}\): \(\langle (p,\bar{Y}), \epsilon \rangle \hookrightarrow \langle (q,insert(delete(\bar{Y},x),(x, \mathtt{r}_i))), \epsilon \rangle \), where \(\bar{Y}=digi(\nu )\) and \(d \in \mathtt{r}_i\).

    2. (b)

      Otherwise, \(x = c\), proceed with two subcases, \(d<=n\) and \(d > n\).

      • \(\mathbf{d <= n}\): If \(w=\bullet ^k \perp \) for \(k>0\), we first need to pop all symbols of \(\bullet \) out of stack, by repeatedly applying the second assignment rule of PDS k times, having \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \bullet ^k \perp \rangle \hookrightarrow ^* \kappa = \langle (p, digi(\nu )), \perp \rangle \), otherwise define \(\kappa = \llbracket \varrho \rrbracket \) since the stack already has no symbols of \(\bullet \). Then by applying the third and fourth assignment rule, we have \( \kappa \hookrightarrow \kappa ' = \langle (p', digi(\nu )), \perp \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu [x\leftarrow {}d])), \perp \rangle \).

      • \(\mathbf{d > n}\): If \(w=\bullet ^k \perp \) for \(k>0\), we first need to pop all symbols of \(\bullet \) out of stack, by repeatedly applying the second assignment rule of PDS k times, having \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \bullet ^k \perp \rangle \hookrightarrow ^* \kappa = \langle (p, digi(\nu )), \perp \rangle \), otherwise define \(\kappa = \llbracket \varrho \rrbracket \), since the stack already has no symbols of \(\bullet \). Next, we have \(\kappa \hookrightarrow \kappa ' = \langle (p', digi(\nu )), \perp \rangle \) by the third assignment rule. Then, by repeatedly applying the fifth assignment rule of \(\mathcal {P}\) until we have \(k=2\times {}floor(d-n) + ceiling(frac(d))\) symbols of \(\bullet \) in stack, we have \(\kappa ' \hookrightarrow ^* \kappa '' = \langle (p', digi(\nu )), \bullet ^k \perp \rangle \). Finally, by applying the last assignment rule of mathcal P, we have \(\kappa '' \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu [c \leftarrow d]), \bullet ^k \perp ) \rangle \).

  5. 5.

    Increment: \(\varrho =(p, \nu ) \xrightarrow {c := c + 1} \varrho '=(q, \nu [c \leftarrow \nu (c)+1])\). We proceed with 3 subcases:

    1. (a)

      If \(\nu (c) \le n-1\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, increase(digi(\nu ),c)), w \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) + 1])), w \rangle \) by applying the first transition increment rule of PDS \(\mathcal {P}\).

    2. (b)

      If \(n-1 < \nu (c) < n\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, increase(digi(\nu ),c)), \bullet {}w \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) + 1])), \bullet {}w \rangle \) by applying the second transition increment rule of PDS \(\mathcal {P}\).

    3. (c)

      If \(\nu (c) \ge n\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), w \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, increase(digi(\nu ),c)), \bullet {} \bullet {}w \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) + 1])), \bullet {}\bullet {}w \rangle \) by applying the third transition increment rule of PDS \(\mathcal {P}\).

  6. 6.

    Decrement: \(\varrho =(p, \nu ) \xrightarrow {c := c - 1} \varrho '=(q, \nu [c \leftarrow \nu (c)-1])\). Note that only when \(\nu (c) \ge 1\), can this transition happen. We proceed with 4 subcases:

    1. (a)

      If \(\nu (c) > n + 1\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \bullet \bullet \bullet w' \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, digi(\nu )), \bullet w' \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) - 1])), \bullet w' \rangle \) by applying the first transition decrement rule of PDS \(\mathcal {P}\).

    2. (b)

      If \(\nu (c) = n + 1\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \bullet \bullet \perp \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, decrease(digi(\nu ),c,1)), \perp \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) - 1])), \perp \rangle \) by applying the second transition decrement rule of PDS \(\mathcal {P}\).

    3. (c)

      If \(n < \nu (c) < n + 1\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \bullet \perp \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, increase(digi(\nu ),c,2)), \perp \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) - 1])), \perp \rangle \) by applying the third transition decrement rule of PDS \(\mathcal {P}\).

    4. (d)

      If \(1 \le \nu (c) \le n\), then we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), \perp \rangle \hookrightarrow \llbracket \varrho ' \rrbracket = \langle (q, increase(digi(\nu ),c,2)), \perp \rangle = \langle (q, digi(\nu [c\leftarrow {}\nu (c) - 1])), \perp \rangle \) by applying the fourth transition decrement rule of PDS \(\mathcal {P}\).

For reflection part, by induction on the steps of \(\hookrightarrow ^*\).

Base step: Consider the case of \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \):

  1. 1.

    Time Progress. Obviously, \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by one of two time progress rules of PDS \(\mathcal {P}\). Since digiwords have the region-like property, \(digi(\nu ) \Rightarrow \bar{Y}\) implies that there exists a clock valuation \(\nu ' \in Val(X\cup \{c\})\) such that \(\nu '=\nu +t\) and \(\nu ' \in [\bar{Y}]\) for a real number t(more precisely, \(0 < t < 1\)). Proceed with two cases:

    1. (a)

      If \(\nu (c) < n\), then \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by using the first time progress rule of PDS \(\mathcal {P}\). In such case, we have \(\kappa =\langle (p, \bar{Y}, \perp ) \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho =(p, \nu ) \xrightarrow {t} \varrho '=(p, \nu ')\).

    2. (b)

      If \(\nu (c) \ge n\), then \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by using the second time progress rule of PDS \(\mathcal {P}\). In such case, we have \(\kappa = \langle (p, \bar{Y}), \bullet w \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho =(p, \nu ) \xrightarrow {t} \varrho '=(p, \nu ')\).

  2. 2.

    Local. If \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) for \(p \xrightarrow {\epsilon } q\) being a transition in \(\mathcal {A}\), then \(\kappa = \langle (q, digi(\nu )), w \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho '=(q,\nu )\).

  3. 3.

    Test. Similar with the case for Local.

  4. 4.

    Assignment. We only need to proceed with the first three cases, the other cases can not happen since the configuration is a encoded configuration(i.e. \(\llbracket \varrho \rrbracket \)).

    1. (a)

      If \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by applying the first assignment transition rule of PDS \(\mathcal {P}\), then \(\kappa \) is a encoded configuration, since we have \(\llbracket \varrho \rrbracket = \langle (p, digi(\nu )), w\rangle \hookrightarrow \kappa =\llbracket \varrho ' \rrbracket = \langle (q,insert(delete(digi(\nu ),x),(x, \mathtt{r}_i))), w\rangle \), where \(\varrho =(p, \nu ) \xrightarrow {x \leftarrow I} \varrho '=(q, \nu [x \leftarrow d])\) for \(d \in \mathtt{r}_i \in I\).

    2. (b)

      If \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by applying the second assignment transition rule of PDS \(\mathcal {P}\), then the clock involved is c and \(\kappa \) may not be a encoded configuration. However, by applying the same rules finite times and then third assignment rule, \(\kappa \hookrightarrow ^* \kappa _1 =\langle (p, digi(\nu )), \perp \rangle \hookrightarrow \kappa _2 = \langle (p', digi(\nu )), \perp \rangle \), and then if \(\mathtt{r}_i \in I\) for \(i \le 2n\), we have \(\kappa _2 \hookrightarrow \llbracket \varrho ' \rrbracket =\langle (q, insert(delete(digi(\nu ), c), (c, \mathtt{r}_i)), \perp \rangle \), by applying the fourth assignment rule, otherwise, we have \(\kappa _2 \hookrightarrow ^* \kappa _3 = \langle (p', digi(\nu )), \bullet ^k \perp \rangle \hookrightarrow \llbracket \varrho ' \rrbracket =\langle (q, insert(delete(digi(\nu ), c), (c, \mathtt{r}_i)), \bullet ^k \perp \rangle \) by applying finite times of fifth assignment rule first and then the last assignment rule.

    3. (c)

      If \(\llbracket \varrho \rrbracket \hookrightarrow \kappa \) by applying the second assignment transition rule of PDS \(\mathcal {P}\), the proof is similar to the above case.

  5. 5.

    Increment. We proceed with three cases:

    1. (a)

      If it takes the first increment transition rule, then we can infer that \(\nu (c) <= n - 1\). Thus we have \(\llbracket \varrho \rrbracket \hookrightarrow \kappa = \langle (q, increase(digi(\nu ),c)), w \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c + 1} \varrho '\).

    2. (b)

      If it takes the second increment transition rule, then we can infer that \(n-1< \nu (c) < n\). Then we have \(\llbracket \varrho \rrbracket \hookrightarrow \kappa = \langle (q, increase(digi(\nu ),c)), \bullet w \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c + 1} \varrho '\).

    3. (c)

      If it takes the third increment transition rule, then we can infer that \(\nu (c) \ge n\). Then we have \(\llbracket \varrho \rrbracket \hookrightarrow \kappa = \langle (q, increase(digi(\nu ),c)), \bullet \bullet w \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c + 1} \varrho '\).

  6. 6.

    Decrement. We proceed with four cases:

    1. (a)

      If it takes the first decrement transition rule, then we can infer that \(\nu (c) > n + 1\). Then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), \bullet \bullet \bullet w' \rangle \hookrightarrow \kappa = \langle (q, digi(\nu )), \bullet w' \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c - 1} \varrho '\). Note that \(digi(\nu ) = digi(\nu [\nu (c)\leftarrow \nu (c)-1])\), since \(\nu (c) > n + 1\).

    2. (b)

      If it takes the second decrement transition rule, then we can infer that \(\nu (c) = n + 1\). Then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), \bullet \bullet \perp \rangle \hookrightarrow \kappa = \langle (q,decrease(digi(\nu ),c,1)), \perp \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c - 1} \varrho '=(q, \nu ')\) and \(\nu '(c)=n\).

    3. (c)

      If it takes the third decrement transition rule, then we can infer that \(n < \nu (c) < n + 1\). Then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), \bullet \perp \rangle \hookrightarrow \kappa = \langle (q,decrease(digi(\nu ),c,2)), \perp \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c - 1} \varrho '=(q, \nu ')\) and \(n-1<\nu '(c)<n\).

    4. (d)

      If it takes the fourth decrement transition rule, then we can infer that \(1 <= \nu (c) <= n\). Then we have \(\llbracket \varrho \rrbracket = \langle (q, digi(\nu )), \perp \rangle \hookrightarrow \kappa = \langle (q,decrease(digi(\nu ),c,2)), \perp \rangle = \llbracket \varrho ' \rrbracket \), where \(\varrho \xrightarrow {c := c - 1} \varrho '=(q, \nu ')\).

Induction step: Assume \(\llbracket \varrho \rrbracket \hookrightarrow ^* \kappa ' \hookrightarrow \kappa \). We proceed with two cases:

  1. 1.

    \(\kappa '\) is an encoded configuration, and by induction hypothesis \(\llbracket \varrho \rrbracket \hookrightarrow ^* \kappa '= \llbracket \varrho ' \rrbracket \). Then the proof is similar to the base step.

  2. 2.

    \(\kappa '\) is not an encoded configuration. Note that for our encoding, we have encoded configurations except for the second, third and fifth assignment rule. Here, we give a proof for the fifth assignment rule. The other cases are similar. Assume \(\kappa '=\langle (p', \bar{Y}), w \rangle \) is obtained by applying the fifth assignment rule, we have \(\kappa ' \hookrightarrow \kappa = \langle (q, digi(\nu ')), w \rangle = \llbracket \varrho ' \rrbracket = \llbracket (q, \nu ') \rrbracket \) by applying the last assignment rule, where \(\exists \nu \in [\bar{Y}]\) such that \(\nu '=\nu [c\leftarrow d]\) for \(d \in \mathtt{r}_{2n+1}\). Finally, put together \(\varrho \rightarrow ^* \varrho '\).

Rights and permissions

Reprints and permissions

Copyright information

© 2016 Springer International Publishing Switzerland

About this paper

Cite this paper

Wen, Y., Li, G., Yuen, S. (2016). On Reachability Analysis of Updatable Timed Automata with One Updatable Clock. In: Liu, S., Duan, Z. (eds) Structured Object-Oriented Formal Language and Method. SOFL+MSVL 2015. Lecture Notes in Computer Science(), vol 9559. Springer, Cham. https://doi.org/10.1007/978-3-319-31220-0_11

Download citation

  • DOI: https://doi.org/10.1007/978-3-319-31220-0_11

  • Publisher Name: Springer, Cham

  • Print ISBN: 978-3-319-31219-4

  • Online ISBN: 978-3-319-31220-0

  • eBook Packages: Computer ScienceComputer Science (R0)

Publish with us

Policies and ethics