skip to main content
research-article
Open Access
Distinguished Paper

Client-server sessions in linear logic

Published:19 August 2021Publication History
Skip Abstract Section

Abstract

We introduce coexponentials, a new set of modalities for Classical Linear Logic. As duals to exponentials, the coexponentials codify a distributed form of the structural rules of weakening and contraction. This makes them a suitable logical device for encapsulating the pattern of a server receiving requests from an arbitrary number of clients on a single channel. Guided by this intuition we formulate a system of session types based on Classical Linear Logic with coexponentials, which is suited to modelling client-server interactions. We also present a session-typed functional programming language for client-server programming, which we translate to our system of coexponentials.

Skip Supplemental Material Section

Supplemental Material

3473567.mp4

Presentation Videos

Auxiliary Presentation Video

Presentation video (with subtitles)

References

  1. Samson Abramsky. 1993. Computational interpretations of linear logic. Theoretical Computer Science, 111, 1-2 (1993), 3–57. issn:03043975 https://doi.org/10.1016/0304-3975(93)90181-R ISBN: 0304-3975. Google ScholarGoogle ScholarDigital LibraryDigital Library
  2. Samson Abramsky. 1993. Interaction categories. In Theory and Formal Methods 1993. Springer, 57–69. https://doi.org/10.1007/978-1-4471-3503-6_5 Google ScholarGoogle ScholarCross RefCross Ref
  3. Samson Abramsky. 1994. Proofs as processes. Theoretical Computer Science, 135, 1 (1994), 5–9. https://doi.org/10.1016/0304-3975(94)00103-0 Google ScholarGoogle ScholarDigital LibraryDigital Library
  4. Samson Abramsky, Simon J Gay, and Rajagopal Nagarajan. 1996. Interaction categories and the foundations of typed concurrent programming. In Deductive Program Design, Manfred Broy (Ed.) (Nato ASI Subseries F). Springer-Verlag Berlin Heidelberg, 35–113. isbn:3-540-60947-4 http://www.springer.com/us/book/9783540609476Google ScholarGoogle Scholar
  5. Samson Abramsky and Radha Jagadeesan. 1994. Games and Full Completeness for Multiplicative Linear Logic. The Journal of Symbolic Logic, 59, 2 (1994), 543. issn:00224812 https://doi.org/10.2307/2275407 arxiv:1311.6057. Google ScholarGoogle ScholarDigital LibraryDigital Library
  6. Umut A Acar. 2016. Parallel Computing: Theory and Practice. http://www.cs.cmu.edu/afs/cs/academic/class/15210-f15/www/tapp.htmlGoogle ScholarGoogle Scholar
  7. Federico Aschieri and Francesco A. Genco. 2019. Par Means Parallel: Multiplicative Linear Logic Proofs as Concurrent Functional Programs. Proc. ACM Program. Lang., 4, POPL (2019), Article 18, Dec., 28 pages. https://doi.org/10.1145/3371086 Google ScholarGoogle ScholarDigital LibraryDigital Library
  8. Robert Atkey. 2017. Observed communication semantics for classical processes. In European Symposium on Programming. 56–82. https://doi.org/10.1007/978-3-662-54434-1_3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  9. Robert Atkey, Sam Lindley, and J. Garrett Morris. 2016. Conflation Confers Concurrency. In A List of Successes That Can Change the World, Sam Lindley, Conor McBride, Phil Trinder, and Don Sannella (Eds.) (Lecture Notes in Computer Science, Vol. 9600). Springer International Publishing, 32–55. isbn:978-3-319-30935-4 https://doi.org/10.1007/978-3-319-30936-1_2 Google ScholarGoogle ScholarCross RefCross Ref
  10. Arnon Avron. 1991. Hypersequents, logical consequence and intermediate logics for concurrency. Annals of Mathematics and Artificial Intelligence, 4, 3-4 (1991), 225–248. https://doi.org/10.1007/BF01531058 Google ScholarGoogle ScholarCross RefCross Ref
  11. David Baelde. 2012. Least and greatest fixed points in linear logic. ACM Transactions on Computational Logic, 13, 1 (2012), 1–44. https://doi.org/10.1145/2071368.2071370 Google ScholarGoogle ScholarDigital LibraryDigital Library
  12. Stephanie Balzer and Frank Pfenning. 2017. Manifest sharing with session types. Proceedings of the ACM on Programming Languages, 1, ICFP (2017), 1–29. https://doi.org/10.1145/3110281 Google ScholarGoogle ScholarDigital LibraryDigital Library
  13. Stephanie Balzer, Bernardo Toninho, and Frank Pfenning. 2019. Manifest Deadlock-Freedom for Shared Session Types. In Programming Languages and Systems, Luís Caires (Ed.). 11423, Springer International Publishing, Cham. 611–639. https://doi.org/10.1007/978-3-030-17184-1_22 Google ScholarGoogle ScholarCross RefCross Ref
  14. Michael Barr. 1991. ∗ -Autonomous categories and linear logic. Mathematical Structures in Computer Science, 1, 2 (1991), 159–178. issn:14698072 https://doi.org/10.1017/S0960129500001274 Google ScholarGoogle ScholarCross RefCross Ref
  15. Gianluigi Bellin. 1997. Subnets of proof-nets in multiplicative linear logic with MIX. Mathematical Structures in Computer Science, 7, 6 (1997), 663–669. https://doi.org/10.1017/S0960129597002326 Google ScholarGoogle ScholarCross RefCross Ref
  16. G. Bellin and P. J. Scott. 1994. On the π -calculus and linear logic. Theoretical Computer Science, 135, 1 (1994), 11–65. issn:03043975 https://doi.org/10.1016/0304-3975(94)00104-9 Google ScholarGoogle ScholarDigital LibraryDigital Library
  17. N Benton and P Wadler. 1996. Linear logic, monads and the lambda calculus. In Proceedings 11th Annual IEEE Symposium on Logic in Computer Science. IEEE. https://doi.org/10.1109/LICS.1996.561458 Google ScholarGoogle ScholarCross RefCross Ref
  18. Robert D. Blumofe, Christopher F. Joerg, Bradley C. Kuszmaul, Charles E. Leiserson, Keith H. Randall, and Yuli Zhou. 1995. Cilk: An Efficient Multithreaded Runtime System. In Proceedings of the Fifth ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPOPP ’95). Association for Computing Machinery, New York, NY, USA. 207–216. isbn:0897917006 https://doi.org/10.1145/209936.209958 Google ScholarGoogle ScholarDigital LibraryDigital Library
  19. Luís Caires and Jorge A. Pérez. 2017. Linearity, Control Effects, and Behavioral Types. In Programming Languages and Systems. ESOP 2017, Hongseok Yang (Ed.). Springer Berlin Heidelberg, Berlin, Heidelberg. 229–259. isbn:978-3-662-54434-1 https://doi.org/10.1007/978-3-662-54434-1_9 Google ScholarGoogle ScholarDigital LibraryDigital Library
  20. Luís Caires and Frank Pfenning. 2010. Session Types as Intuitionistic Linear Propositions. In Proceedings of the 21st International Conference on Concurrency Theory (CONCUR’10). Springer-Verlag, Berlin, Heidelberg. 222–236. isbn:3642153747 https://doi.org/10.5555/1887654.1887670Google ScholarGoogle ScholarDigital LibraryDigital Library
  21. Luís Caires, Frank Pfenning, and Bernardo Toninho. 2016. Linear logic propositions as session types. Mathematical Structures in Computer Science, 26, 3 (2016), 367–423. issn:0960-1295, 1469-8072 https://doi.org/10.1017/S0960129514000218 Google ScholarGoogle ScholarCross RefCross Ref
  22. Marco Carbone, Sam Lindley, Fabrizio Montesi, Carsten Schürmann, and Philip Wadler. 2016. Coherence Generalises Duality: A Logical Explanation of Multiparty Session Types. In 27th International Conference on Concurrency Theory (CONCUR 2016), Josée Desharnais and Radha Jagadeesan (Eds.) (Leibniz International Proceedings in Informatics (LIPIcs), Vol. 59). Schloss Dagstuhl–Leibniz-Zentrum fuer Informatik, Dagstuhl, Germany. 33:1–33:15. isbn:978-3-95977-017-0 issn:1868-8969 https://doi.org/10.4230/LIPIcs.CONCUR.2016.33 Google ScholarGoogle ScholarCross RefCross Ref
  23. Marco Carbone, Fabrizio Montesi, Carsten Schürmann, and Nobuko Yoshida. 2017. Multiparty session types as coherence proofs. Acta Informatica, 54 (2017), 243–269. issn:0001-5903 https://doi.org/10.1007/s00236-016-0285-y Google ScholarGoogle ScholarDigital LibraryDigital Library
  24. Simon Castellan, Léo Stefanesco, and Nobuko Yoshida. 2020. Game Semantics: Easy as Pi. CoRR, abs/2011.05248 (2020), arxiv:2011.05248.Google ScholarGoogle Scholar
  25. Melvin E. Conway. 1963. A Multiprocessor System Design. AFIPS ’63 (Fall). Association for Computing Machinery, New York, NY, USA. 139–146. isbn:9781450378833 https://doi.org/10.1145/1463822.1463838 Google ScholarGoogle ScholarDigital LibraryDigital Library
  26. Mario Coppo, Mariangiola Dezani-Ciancaglini, Nobuko Yoshida, and Luca Padovani. 2016. Global progress for dynamically interleaved multiparty sessions. Mathematical Structures in Computer Science, 26, 2 (2016), 238–302. issn:0960-1295, 1469-8072 https://doi.org/10.1017/S0960129514000188 Google ScholarGoogle ScholarCross RefCross Ref
  27. L. Dagum and R. Menon. 1998. OpenMP: an industry standard API for shared-memory programming. IEEE Computational Science and Engineering, 5, 1 (1998), 46–55. https://doi.org/10.1109/99.660313 Google ScholarGoogle ScholarDigital LibraryDigital Library
  28. Ornela Dardha and Simon J. Gay. 2018. A New Linear Logic for Deadlock-Free Session-Typed Processes. In Foundations of Software Science and Computation Structures, Christel Baier and Ugo Dal Lago (Eds.) (Lecture Notes in Computer Science, Vol. 10803). Springer International Publishing, Cham. 91–109. https://doi.org/10.1007/978-3-319-89366-2_5 Google ScholarGoogle Scholar
  29. Ornela Dardha and Jorge A. Pérez. 2015. Comparing Deadlock-Free Session Typed Processes. Electronic Proceedings in Theoretical Computer Science, 190 (2015), https://doi.org/10.4204/EPTCS.190.1 Google ScholarGoogle ScholarCross RefCross Ref
  30. A. Das, S. Balzer, J. Hoffmann, F. Pfenning, and I. Santurkar. 2021. Resource-Aware Session Types for Digital Contracts. In 2021 IEEE 34th Computer Security Foundations Symposium (CSF). IEEE Computer Society, Los Alamitos, CA, USA. 111–126. https://doi.org/10.1109/CSF51468.2021.00004 Google ScholarGoogle ScholarCross RefCross Ref
  31. Pierre-Malo Deniélou and Nobuko Yoshida. 2011. Dynamic Multirole Session Types. In Proceedings of the 38th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages - POPL ’11. ACM Press, 435. isbn:978-1-4503-0490-0 https://doi.org/10.1145/1926385.1926435 Google ScholarGoogle ScholarDigital LibraryDigital Library
  32. Farzaneh Derakhshan and Frank Pfenning. 2020. Circular Proofs in First-Order Linear Logic with Least and Greatest Fixed Points. arxiv:2001.05132.Google ScholarGoogle Scholar
  33. Thomas Ehrhard. 2018. An introduction to differential linear logic: proof-nets, models and antiderivatives. Mathematical Structures in Computer Science, 28, 7 (2018), 995–1060. https://doi.org/10.1017/S0960129516000372 Google ScholarGoogle ScholarCross RefCross Ref
  34. Thomas Ehrhard and Farzad Jafarrahmani. 2021. Categorical models of Linear Logic with fixed points of formulas. arxiv:2011.10209. To appear in the proceedings of LICS 2021.Google ScholarGoogle Scholar
  35. Thomas Ehrhard and Olivier Laurent. 2010. Interpreting a finitary pi-calculus in differential interaction nets. Information and Computation, 208, 6 (2010), 606–633. https://doi.org/10.1016/j.ic.2009.06.005 Google ScholarGoogle ScholarDigital LibraryDigital Library
  36. Simon Fowler, Sam Lindley, J. Garrett Morris, and Sára Decova. 2019. Exceptional asynchronous session types: session types without tiers. Proceedings of the ACM on Programming Languages, 3, POPL (2019), https://doi.org/10.1145/3290341 Google ScholarGoogle ScholarDigital LibraryDigital Library
  37. Simon J Gay and Vasco T Vasconcelos. 2010. Linear type theory for asynchronous session types. Journal of Functional Programming, 20, 1 (2010), 19. https://doi.org/10.1017/S0956796809990268 Google ScholarGoogle ScholarDigital LibraryDigital Library
  38. Jean-Yves Girard. 1987. Linear logic. Theoretical Computer Science, 50, 1 (1987), 1–101. issn:03043975 https://doi.org/10.1016/0304-3975(87)90045-4 Google ScholarGoogle ScholarDigital LibraryDigital Library
  39. J. Y. Girard and Y. Lafont. 1987. Linear logic and lazy computation. In TAPSOFT ’87, Hartmut Ehrig, Robert Kowalski, Giorgio Levi, and Ugo Montanari (Eds.) (Lecture Notes in Computer Science, Vol. 250). Springer-Verlag, Berlin/Heidelberg. 52–66. isbn:978-3-540-17611-4 https://doi.org/10.1007/BFb0014972 Google ScholarGoogle ScholarCross RefCross Ref
  40. Jean-Yves Girard, Andre Scedrov, and Philip J. Scott. 1992. Bounded linear logic: a modular approach to polynomial-time computability. Theoretical Computer Science, 97, 1 (1992), 1–66. issn:03043975 https://doi.org/10.1016/0304-3975(92)90386-T Google ScholarGoogle ScholarDigital LibraryDigital Library
  41. Robert H. Halstead. 1984. Implementation of Multilisp: Lisp on a Multiprocessor. In Proceedings of the 1984 ACM Symposium on LISP and Functional Programming (LFP ’84). Association for Computing Machinery, New York, NY, USA. 9–17. isbn:0897911423 https://doi.org/10.1145/800055.802017 Google ScholarGoogle ScholarDigital LibraryDigital Library
  42. Maurice Herlihy and Nir Shavit. 2012. The Art of Multiprocessor Programming (revised first ed.). Morgan Kaufmann. isbn:978-0-12-397337-5 https://doi.org/10.5555/2385452Google ScholarGoogle Scholar
  43. Kohei Honda, Vasco T Vasconcelos, and Makoto Kubo. 1998. Language primitives and type discipline for structured communication-based programming. In Programming Languages and Systems: Proceedings of the 7th European Symposium on Programming (ESOP’98) (Lecture Notes in Computer Science, Vol. 1381). Springer, Berlin, Heidelberg, 122–138. https://doi.org/10.1007/BFb0053567 Google ScholarGoogle ScholarCross RefCross Ref
  44. Kohei Honda, Nobuko Yoshida, and Marco Carbone. 2008. Multiparty Asynchronous Session Types. In Proceedings of the 35th Annual ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. ACM Press. isbn:978-1-59593-689-9 https://doi.org/10.1145/1328438.1328472 Google ScholarGoogle ScholarDigital LibraryDigital Library
  45. Kohei Honda, Nobuko Yoshida, and Marco Carbone. 2016. Multiparty Asynchronous Session Types. J. ACM, 63, 1 (2016), 1–67. issn:0004-5411, 1557-735X https://doi.org/10.1145/2827695 Google ScholarGoogle ScholarDigital LibraryDigital Library
  46. John Maynard Keynes. 1936. The General Theory of Employment, Interest and Money. Macmillan & Co. Ltd., London.Google ScholarGoogle Scholar
  47. Naoki Kobayashi. 2002. A Type System for Lock-Free Processes. Information and Computation, 177, 2 (2002), 122–159. https://doi.org/10.1006/inco.2002.3171 Google ScholarGoogle ScholarCross RefCross Ref
  48. Naoki Kobayashi. 2003. Type Systems for Concurrent Programs. In Formal Methods at the Crossroads. From Panacea to Foundational Support, Bernhard K. Aichernig and Tom Maibaum (Eds.) (Lecture Notes in Computer Science, Vol. 2757). Springer Berlin Heidelberg, Berlin, Heidelberg. 439–453. https://doi.org/10.1007/978-3-540-40007-3_26 Extended version. Google ScholarGoogle ScholarCross RefCross Ref
  49. Naoki Kobayashi. 2006. A new type system for deadlock-free processes. In International Conference on Concurrency Theory. 233–247. https://doi.org/10.1007/11817949_16 Google ScholarGoogle ScholarDigital LibraryDigital Library
  50. Wen Kokke, Fabrizio Montesi, and Marco Peressotti. 2018. Taking Linear Logic Apart. In Proceedings Joint International Workshop on Linearity & Trends in Linear Logic and Applications, [email protected] 2018, Oxford, UK, 7-8 July 2018, Thomas Ehrhard, Maribel Fernández, Valeria de Paiva, and Lorenzo Tortora de Falco (Eds.) (EPTCS, Vol. 292). 90–103. https://doi.org/10.4204/EPTCS.292.5 Google ScholarGoogle ScholarCross RefCross Ref
  51. Wen Kokke, Fabrizio Montesi, and Marco Peressotti. 2019. Better late than never: a fully-abstract semantics for classical processes. Proceedings of the ACM on Programming Languages, 3, POPL (2019), 1–29. https://doi.org/10.1145/3290337 Google ScholarGoogle ScholarDigital LibraryDigital Library
  52. Wen Kokke, J Garrett Morris, and Philip Wadler. 2019. Towards races in linear logic. In International Conference on Coordination Languages and Models. 37–53. https://doi.org/10.1007/978-3-030-22397-7_3 Google ScholarGoogle ScholarDigital LibraryDigital Library
  53. Yves Lafont and Thomas Streicher. 1991. Games semantics for linear logic. In Proceedings 1991 Sixth Annual IEEE Symposium on Logic in Computer Science. 43–44. https://doi.org/10.1109/LICS.1991.151629 Google ScholarGoogle ScholarCross RefCross Ref
  54. Daan Leijen, Wolfram Schulte, and Sebastian Burckhardt. 2009. The design of a task parallel library. Acm Sigplan Notices, 44, 10 (2009), 227–242. https://doi.org/10.1145/1639949.1640106 Google ScholarGoogle ScholarDigital LibraryDigital Library
  55. Sam Lindley and J Garrett Morris. 2015. A semantics for propositions as sessions. In European Symposium on Programming Languages and Systems. 560–584. https://doi.org/10.1007/978-3-662-46669-8_23 Google ScholarGoogle ScholarCross RefCross Ref
  56. Sam Lindley and J. Garrett Morris. 2016. Talking bananas: structural recursion for session types. In Proceedings of the 21st ACM SIGPLAN International Conference on Functional Programming - ICFP 2016. ACM Press, Nara, Japan. 434–447. isbn:978-1-4503-4219-3 https://doi.org/10.1145/2951913.2951921 Google ScholarGoogle ScholarDigital LibraryDigital Library
  57. Sam Lindley and J. Garrett Morris. 2017. Lightweight Functional Session Types. In Behavioural Types: from Theory to Tools, Simon Gay and Antonio Ravara (Eds.). River Publishers. https://doi.org/10.13052/rp-9788793519817 Google ScholarGoogle ScholarCross RefCross Ref
  58. J. Maraist, M. Odersky, D.N. Turner, and P. Wadler. 1999. Call-by-name, call-by-value, call-by-need and the linear lambda calculus. Theoretical Computer Science, 228, 1-2 (1999), 175–210. https://doi.org/10.1016/S0304-3975(98)00358-2 Google ScholarGoogle ScholarDigital LibraryDigital Library
  59. John Maraist, Martin Odersky, David N. Turner, and Philip Wadler. 1995. Call-by-name, Call-by-value, Call-by-need, and the Linear Lambda Calculus. Electronic Notes in Theoretical Computer Science, 1 (1995), 370–392. issn:15710661 https://doi.org/10.1016/S1571-0661(04)00022-2 Google ScholarGoogle ScholarCross RefCross Ref
  60. Damiano Mazza. 2018. The true concurrency of differential interaction nets. Mathematical Structures in Computer Science, 28, 7 (2018), 1097–1125. https://doi.org/10.1017/S0960129516000402 Google ScholarGoogle ScholarCross RefCross Ref
  61. Paul-André Melliès. 2009. Categorical Semantics of Linear Logic. In Panoramas et synthèses 27: Interactive models of computation and program behaviour, Pierre-Louis Curien, Hugo Herbelin, Jean-Louis Krivine, and Paul-André Melliès (Eds.). Société Mathématique de France. isbn:978-2-85629-273-0 http://www.pps.univ-paris-diderot.fr/~mellies/papers/panorama.pdfGoogle ScholarGoogle Scholar
  62. Paul-André Melliès, Nicolas Tabareau, and Christine Tasson. 2018. An explicit formula for the free exponential modality of linear logic. Mathematical Structures in Computer Science, 28, 7 (2018), issn:0960-1295, 1469-8072 https://doi.org/10.1017/S0960129516000426 Google ScholarGoogle ScholarCross RefCross Ref
  63. Massimo Merro and Davide Sangiorgi. 2004. On asynchrony in name-passing calculi. Mathematical Structures in Computer Science, 14, 5 (2004), 715–767. https://doi.org/10.1017/S0960129504004323 Google ScholarGoogle ScholarDigital LibraryDigital Library
  64. Robin Milner. 1992. Functions as processes. Mathematical Structures in Computer Science, 2, 2 (1992), 119–141. https://doi.org/10.1017/S0960129500001407 Google ScholarGoogle ScholarCross RefCross Ref
  65. Robin Milner. 1999. Communicating and Mobile Systems: The π -calculus. Cambridge University Press, New York, NY, USA. isbn:0-521-65869-1 https://doi.org/10.5555/329902Google ScholarGoogle ScholarDigital LibraryDigital Library
  66. Robin Milner, Joachim Parrow, and David Walker. 1992. A calculus of mobile processes, i. Information and computation, 100, 1 (1992), 1–40. https://doi.org/10.1016/0890-5401(92)90008-4 Google ScholarGoogle ScholarDigital LibraryDigital Library
  67. Fabrizio Montesi and Marco Peressotti. 2018. Classical Transitions. arxiv:1803.01049.Google ScholarGoogle Scholar
  68. Jason Reed. 2009. A Judgmental Deconstruction of Modal Logic. http://www.cs.cmu.edu/~jcreed/papers/jdml.pdfGoogle ScholarGoogle Scholar
  69. James Reinders. 2007. Intel threading building blocks: outfitting C++ for multi-core processor parallelism. " O’Reilly Media, Inc.".Google ScholarGoogle ScholarDigital LibraryDigital Library
  70. Pedro Rocha and Luís Caires. 2021. Propositions-as-Types and Shared State. Proceedings of the ACM on Programming Languages, https://doi.org/10.1145/3473584Google ScholarGoogle ScholarDigital LibraryDigital Library
  71. Chuta Sano, Stephanie Balzer, and Frank Pfenning. 2021. Manifestly Phased Communication via Shared Session Types. CoRR, abs/2101.06249 (2021), arxiv:2101.06249. arxiv:2101.06249Google ScholarGoogle Scholar
  72. Bernardo Toninho, Luís Caires, and Frank Pfenning. 2014. Corecursion and non-divergence in session-typed processes. In International Symposium on Trustworthy Global Computing. 159–175. https://doi.org/10.1007/978-3-662-45917-1_11 Google ScholarGoogle ScholarCross RefCross Ref
  73. Maarten van Steen and Andrew S. Tanenbaum. 2017. Distributed Systems (3 ed.). distributed-systems.net. https://www.distributed-systems.net/Google ScholarGoogle Scholar
  74. Vasco T. Vasconcelos. 2012. Fundamentals of session types. Information and Computation, 217 (2012), 52–70. issn:08905401 https://doi.org/10.1016/j.ic.2012.05.002 Google ScholarGoogle ScholarDigital LibraryDigital Library
  75. Philip Wadler. 2014. Propositions as sessions. Journal of Functional Programming, 24, 2-3 (2014), 384–418. issn:0956-7968 https://doi.org/10.1017/S095679681400001X Google ScholarGoogle ScholarCross RefCross Ref

Index Terms

  1. Client-server sessions in linear logic

        Recommendations

        Comments

        Login options

        Check if you have access through your login credentials or your institution to get full access on this article.

        Sign in

        Full Access

        PDF Format

        View or Download as a PDF file.

        PDF

        eReader

        View online with eReader.

        eReader
        About Cookies On This Site

        We use cookies to ensure that we give you the best experience on our website.

        Learn more

        Got it!