Skip to main content
Log in

Reversible causal graph dynamics: invertibility, block representation, vertex-preservation

  • Published:
Natural Computing Aims and scope Submit manuscript

Abstract

Causal Graph Dynamics extend Cellular Automata to arbitrary time-varying graphs of bounded degree. The whole graph evolves in discrete time steps, and this global evolution is required to have a number of symmetries: shift-invariance (it acts everywhere the same) and causality (information has a bounded speed of propagation). We add a further physics-like symmetry, namely reversibility. In particular, we extend two fundamental results on reversible cellular automata, by proving that the inverse of a causal graph dynamics is a causal graph dynamics, and that these reversible causal graph dynamics can be represented as finite-depth circuits of local reversible gates. We also show that reversible causal graph dynamics preserve the size of all but a finite number of graphs.

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

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6
Fig. 7
Fig. 8
Fig. 9
Fig. 10
Fig. 11
Fig. 12

Similar content being viewed by others

References

  • Arrighi P, Dowek G (2012) Causal graph dynamics. In: Proceedings of ICALP 2012, Warwick, July 2012, LNCS, vol 7392, pp 54–66

    Chapter  Google Scholar 

  • Arrighi P, Dowek G (2013) Causal graph dynamics (long version). Inf Comput 223:78–93

    Article  Google Scholar 

  • Arrighi P, Martiel S (2012) Generalized Cayley graphs and cellular automata over them. In: Proceedings of GCM 2012, Bremen, September 2012. Pre-print. arXiv:1212.0027, pp 129–143

  • Arrighi P, Nesme V (2011) A simple block representation of Reversible Cellular Automata with time-symmetry. In: 17th international workshop on cellular automata and discrete complex systems, (AUTOMATA 2011), Santiago de Chile, November 2011

  • Arrighi P, Martiel S, Nesme V (2018) Cellular automata over generalized Cayley graphs. Math Struct Comput Sci 18:340–383 arXiv:1212.0027

    Article  MathSciNet  Google Scholar 

  • Arrighi P, Martiel S, Perdrix S (2015) Block representation of reversible causal graph dynamics. In: Proceedings of FCT 2015, Gdansk, Poland, August 2015, Springer, pp 351–363

  • Arrighi P, Martiel S, Perdrix S (2016) Reversible causal graph dynamics. In: Proceedings of International Conference on Reversible Computation, RC 2016, Bologna, Italy, July 2016, LNCS 9720, Springer, pp 73–88

  • Arrighi P, Nesme V, Werner R (2010) Unitarity plus causality implies localizability. J Comput Syst Sci 77:372–378 QIP 2010 (long talk)

    Article  MathSciNet  Google Scholar 

  • Bennett CH (1973) Logical reversibility of computation. IBM J Res Dev 17(6):525–532

    Article  MathSciNet  Google Scholar 

  • Boehm P, Fonio HR, Habel A (1987) Amalgamation of graph transformations: a synchronization mechanism. J Comput Syst Sci 34(2–3):377–408

    Article  MathSciNet  Google Scholar 

  • Chalopin J, Das S, Widmayer P (2013) Deterministic symmetric rendezvous in arbitrary graphs: overcoming anonymity, failures and uncertainty. In: Search theory, Springer, pp 175–195

    Chapter  Google Scholar 

  • Danos V, Laneve C (2004) Formal molecular biology. Theor Comput Sci 325(1):69–110

    Article  MathSciNet  Google Scholar 

  • Durand-Lose J (2001) Representing reversible cellular automata with reversible block cellular automata. Discret Math Theor Comput Sci 145:154

    MATH  Google Scholar 

  • Ehrig H, Lowe M (1993) Parallel and distributed derivations in the single-pushout approach. Theor Comput Sci 109(1–2):123–143

    Article  MathSciNet  Google Scholar 

  • Gromov M (1999) Endomorphisms of symbolic algebraic varieties. J Eur Math Soc 1(2):109–197

    Article  MathSciNet  Google Scholar 

  • Hamma A, Markopoulou F, Lloyd S, Caravelli F, Severini S, Markstrom K, Brouder C, Mestre Â, JAD F.P, Burinskii A, et al (2009) A quantum Bose-Hubbard model with evolving graph as toy model for emergent spacetime. Arxiv preprint arXiv:0911.5075

  • Hasslacher B, Meyer DA (1998) Modelling dynamical geometry with lattice gas automata. In: Expanded version of a talk presented at the seventh international conference on the discrete simulation of fluids held at the University of Oxford

  • Hedlund GA (1969) Endomorphisms and automorphisms of the shift dynamical system. Math Syst Theory 3:320–375

    Article  MathSciNet  Google Scholar 

  • Kari J (1991) Reversibility of 2D cellular automata is undecidable. In: Cellular automata: theory and experiment, vol 45. MIT Press, pp 379–385

  • Kari J (1996) Representation of reversible cellular automata with block permutations. Theory Comput Syst 29(1):47–61

    MathSciNet  MATH  Google Scholar 

  • Kari J (1999) On the circuit depth of structurally reversible cellular automata. Fundam Inf 38(1–2):93–107

    Article  MathSciNet  Google Scholar 

  • Klales A, Cianci D, Needell Z, Meyer DA, Love PJ (2010) Lattice gas simulations of dynamical geometry in two dimensions. Phys Rev E 82(4):046705

    Article  MathSciNet  Google Scholar 

  • Löwe M (1993) Algebraic approach to single-pushout graph transformation. Theor Comput Sci 109(1–2):181–224

    Article  MathSciNet  Google Scholar 

  • Maignan L, Spicher A (2015) Global graph transformations. In: Proceedings of the 6th international workshop on graph computation models, L’Aquila, Italy, July 20, 2015, pp 34–49

  • Papazian C, Remila E (2002) Hyperbolic recognition by graph automata. In: Automata, languages and programming: 29th international colloquium, ICALP 2002, Málaga, Spain, July 8-13, 2002: proceedings, vol 2380. Springer, pp 330

  • Sorkin R (1975) Time-evolution problem in Regge calculus. Phys Rev D 12(2):385–396

    Article  MathSciNet  Google Scholar 

  • Taentzer G (1996) Parallel and distributed graph transformation: formal description and application to communication-based systems. PhD thesis, Technische Universitat Berlin

  • Taentzer G (1997) Parallel high-level replacement systems. Theor Comput Sci 186(1–2):43–81

    Article  MathSciNet  Google Scholar 

  • Tomita K, Kurokawa H, Murata S (2002) Graph automata: natural expression of self-reproduction. Phys D Nonlinear Phenom 171(4):197–210

    Article  MathSciNet  Google Scholar 

Download references

Acknowledgements

This work has been funded by the ANR-12-BS02-007-01 TARMAC grant, the ANR-10-JCJC-0208 CausaQ grant, and the John Templeton Foundation, grant ID 15619, the STICAmSud project 16STIC05 FoQCoSS. The authors acknowledge enlightening discussions with Gilles Dowek, Emmanuel Jeandel and Bruno Martin. This work has been partially done when PA was delegated at Inria Nancy Grand Est, in the project team Carte.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to P. Arrighi.

Additional information

Publisher's Note

Springer Nature remains neutral with regard to jurisdictional claims in published maps and institutional affiliations.

Appendices

Appendix 1: Formalism

This appendix provides formal definitions of the kinds of graphs we are using, together with the operations we perform upon them. None of this is specicific to the reversible case; it can all be found in Arrighi and Martiel (2018) and is reproduced here only for convenience.

1.1 Graphs

Vertex names. Let \(\pi\) be a finite set, \(\varPi =\pi ^2\), and \(V={{{\mathcal {P}}}}(\varPi ^*)\), where ‘.’ represents concatenation of words and \(\varepsilon\) is the empty word, as usual. Each vertex of a graphs non-modulo will be uniquely identified with a name u in V. This particular choice of the universe of names is irrelevant until Definition 30, when it becomes natural.

Definition 23

(Graph non-modulo) A graph non-moduloG is given by

  • An at most countable subset \(V(G)\) of V, whose elements are called vertices.

  • A finite set \(\pi\), whose elements are called ports.

  • A set E(G) of non-intersecting two elements subsets of \(V(G){:}\pi\), whose elements are called edges. In other words an edge e is of the form \(\{u {:}a, v {:}b\}\), and \(\forall e,e'\in E(G), e\cap e'\ne \emptyset \Rightarrow e=e'\).

The graph is assumed to be connected: for any two \(u,v\in V(G)\), there exists \(v_0,\ldots , v_{n}\in V(G)\), \(a_0,b_0\ldots , a_{n-1},b_{n-1}\in \pi\) such that for all \(i\in \{0\ldots n-1\}\), one has \(\{v_i{:}a_i,v_{i+1}{:}b_i\}\in E(G)\) with \(v_0=u\) and \(v_n=v\).

Definition 24

(Labelled graph non-modulo) A labelled graph non-modulo is a triple \((G,\sigma ,\delta )\), also denoted simply G when it is unambiguous, where G is a graph, and \(\sigma\) and \(\delta\) respectively label the vertices and the edges of G:

  • \(\sigma\) is a partial function from V(G) to a finite set \(\varSigma\);

  • \(\delta\) is a partial function from E(G) to a finite set \(\varDelta\).

The set of all graphs with ports \(\pi\) is written \({{{\mathcal {G}}}}_{\pi }\). The set of labelled graphs with states \(\varSigma ,\varDelta\) and ports \(\pi\) is written \({{{\mathcal {G}}}}_{\varSigma ,\varDelta ,\pi }\). To ease notations, we sometimes write \(v \in V(G)\) for \(v \in V(G)\).

We single out a vertex as the origin:

Definition 25

(Pointed graph non-modulo) A pointed (labelled) graph is a pair (Gp) with \(p\in V(G)\).

Here is when graph differ only up to renaming:

Definition 26

(Isomorphism) An isomorphismR is a function from \({{{\mathcal {G}}}}_{\pi }\) to \({{{\mathcal {G}}}}_{\pi }\) which is specified by a bijection R(.) from V to V. The image of a graph G under the isomorphism R is a graph RG whose set of vertices is \(R(V(G))\), and whose set of edges is \(\{\{R(u):a,R(v):b\} \;|\; \{u:a,v:b\}\in E(G) \}\). Similarly, the image of a pointed graph \(P=(G,p)\) is the pointed graph \(RP=(RG,R(p))\).

(Pointed graph isomorphism rename the pointer in the same way as it renames the vertex upon which it points; which effectively means that the pointer does not move.)

Our main objects of study are pointed graphs modulo isomorphism.

Definition 27

(Pointed graphs modulo) Let P be a pointed (labelled) graph (Gp). Then \(X=\{(RG,R(p))\;|\;R\text { an isomorphism }\}\) is a pointed graph modulo. The set of pointed graphs modulo with ports \(\pi\) is written \({{{\mathcal {X}}}}_{\pi }\). The set of labelled pointed Graphs modulo with states \(\varSigma ,\varDelta\) and ports \(\pi\) is written \({{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\).

1.2 Paths and vertices

When we are considering pointed graphs modulo isomorphism, vertices no longer have a unique identifier. Still they can be designated by a sequence of ports in \((\pi ^2)^*\) that leads, from the origin, to this vertex.

Definition 28

(Path) Given a pointed graph modulo X, we say that \(x\in \varPi ^*\) is a path of X if and only if there is a finite sequence \(x=(a_i b_i)_{i\in \{0,...,n-1\}}\) of ports such that, starting from the pointer, it is possible to travel in the graph according to this sequence. More formally, x is a path if and only if there exists \((G,p)\in X\) and there also exists \(v_0,\ldots , v_{n}\in V(G)\) such that for all \(i\in \{0\ldots n-1\}\), one has \(\{v_i{:}a_i,v_{i+1}{:}b_i\}\in E(G)\), with \(v_0=p\) and \(x_i=a_ib_i\). Notice that the existence of a path does not depend on the choice of \((G,p)\in X\). The set of paths of X is denoted by A(X).

Notice that paths can be seen as words on the alphabet \(\varPi\) and thus come with a natural operation ‘.’ of concatenation, a unit \(\varepsilon\) denoting the empty path, and a notion of inverse path \({\overline{x}}\) which stands for the path x read backwards. Two paths are equivalent if they lead to same vertex:

Definition 29

(Equivalence of paths) Given a pointed graph modulo X, we define the equivalence of paths relation \(\equiv _{X}\) on A(X) such that for all paths \(x,x'\in V(A(X))\), \(x\equiv _{X} x'\) if and only if, starting from the pointer, x and \(x'\) lead to the same vertex of X. More formally, \(x\equiv _{X}x'\) if and only if there exists \((G,p)\in X\) and \(v_1,\ldots , v_{n},v'_1,\ldots , v'_{n'}\in V(G)\) such that for all \(i\in \{0\ldots n-1\}\), \(i'\in \{0\ldots n'-1\}\), one has \(\{v_i{:}a_i,v_{i+1}{:}b_i\}\in E(G)\), \(\{v'_{i'}{:}a'_{i'},v'_{i'+1}{:}b'_{i'}\}\in E(G)\), with \(v_0=p\), \(v'_0=p\), \(x=(a_ib_i)_{i\in \{0,...,n-1\}}\), \(x'=(a'_{i'}b'_{i'})_{i\in \{0,...,n'-1\}}\) and \(v_{n}=v_{n'}\). We write \({\hat{x}}\) for the equivalence class of x with respect to \(\equiv _X\).

It is often useful to undo the modulo, i.e. to obtain a canonical instance \((\varGamma (X),\varepsilon )\) of the equivalence class X.

Definition 30

(Associated graph) Let X be a pointed graph modulo. Let \(\varGamma (X)\) be the graph such that:

  • The set of vertices \(V(\varGamma (X))\) is the set of equivalence classes of L(X);

  • The edge \(\{{\hat{x}}{:}a,{\hat{y}}{:}b\}\) is in \(E(\varGamma (X))\) if and only if \(x.ab \in L(X)\) and \(x.ab\equiv _X y\), for all \(x\in {\hat{x}}\) and \(y\in {\hat{y}}\).

We define the associated graph to be \(\varGamma (X)\).

Conventions The following are three presentations of the same mathematical object:

  • A graph modulo X,

  • Its associated graph \(\varGamma (X)\)

  • The algebraic structure \(\langle A(X),\equiv _X\rangle\)

Each vertex of this mathematical object can thus be designated by

  • \({\hat{x}}\) an equivalence class of A(X), i.e. the set of all paths leading to this vertex starting from \({\hat{\varepsilon }}\),

  • or more directly by x an element of an equivalence class \({\hat{x}}\) of X, i.e. a particular path leading to this vertex starting from \(\varepsilon\).

These two remarks lead to the following mathematical conventions, which we adopted for convenience in the paper:

  • \({\hat{x}}\) and x are not distinguished unless otherwise specified. The latter notation is given the meaning of the former. We speak of a “vertex” x in V(X).

  • Thus ‘\(\equiv _X\)’ and ‘\(=\)’ are not distinguished unless otherwise specified. The latter notation is given the meaning of the former. I.e. we speak of “equality of vertices” \(x=y\) (when strictly speaking we just have \({\hat{x}}={\hat{y}}\)).

1.3 Operations over pointed Graphs modulo

Subdisks For a graph G:

  • The neighbours of radius r starting from p are just those vertices which can be reached in r steps starting from p;

  • The induced subgraph of radius r around W, written \(G^r_W\), is the subgraph induced by the neighbours of radius \(r+1\) of the set of vertices W, with labellings restricted to the neighbours of radius r and the edges between them.

For a pointed graph (Gp) non-modulo the disk of radius r, written \(G^r_p\), is the subgraph induced by the neighbours of radius \(r+1\), with labellings restricted to the neighbours of radius r and the edges between them, and pointed at p.

For a graph modulo, on the other hand, the analogous operation is:

Definition 31

(Disk) Let \(X\in {{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\) be a pointed graph modulo and G its associated graph. Let \(X^r\) be \(\widetilde{G^r_\varepsilon }\). The graph modulo \(X^r\in {{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\) is referred to as the disk of radius r of X. The set of disks of radius r with states \(\varSigma ,\varDelta\) and ports \(\pi\) is written \({{{\mathcal {X}}}}^r_{\varSigma ,\varDelta ,\pi }\).

Definition 32

(Size) Let \(X\in {{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\) be a pointed graph modulo. We say that a vertex \(u\in V(X)\) has size less or equal to \(r+1\), and write \(|u|\le r+1\), if and only if \(u\in V(X^r)\).

Shifts are a notation for the graph where vertices are named relatively to some other pointer vertex u.

Definition 33

(Shift) Let \(X\in {{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\) be a pointed graph modulo and G its associated graph. Consider \(u\in V(X)\) or \(X^r\) for some r, and consider the pointed graph (Gu), which is the same as \((G,\varepsilon )\) but with a different pointer. Let \(X_u\) be \(\widetilde{(G,u)}\). The pointed graph modulo \(X_u\) is referred to as Xshifted byu.

1.4 Operations over pointed Graphs non-modulo

Definition 34

(Shift isomorphism) Let \(X\in {{{\mathcal {X}}}}_{\pi }\) be a pointed graph modulo. Let \(G\in {{{\mathcal {G}}}}_{\pi }\) be a graph that has vertices that are disjoint subsets of V(X) or \(V(X^r)\) for some r. Consider \(u \in V(X)\). Let R be the isomorphism from V(X) to \(V(X_u)\) mapping \(v\mapsto {\overline{u}}.v\), for any \(v\in V(X)\) or \(V(X^r)\). Extend this bijection pointwise to act over subsets of V(X), and let \({\overline{u}}.G\) to be RG. The graph \({\overline{u}}.G\) has vertices that are disjoint subsets of \(V(X_u)\), it is referred to as G shifted by u. The definition extends to labelled graphs.

We need the standard (Boehm et al. 1987; Löwe 1993) notion of union of graphs, and for this purpose we need a notion of consistency between the operands of the union:

Definition 35

(Consistency) Let \(X\in {{{\mathcal {X}}}}_{\pi }\) be a pointed graph modulo. Let G be a labelled graph \((G,\sigma , \delta )\), and \(G'\) be a labelled graph \((G',\sigma ', \delta ')\), each one having vertices that are pairwise disjoint subsets of \(V(X).{\mathbb {N}}^?\). The graphs are said to be consistent if and only if:

  1. (i)

    \(\forall x\in V(G)\,\forall x'\in V(G')\quad x\cap x'\ne \emptyset \Rightarrow x=x'\),

  2. (ii)

    \(\forall x,y\in V(G)\,\forall x',y'\in V(G')\,\forall a,a',b,b' \in \pi\)

    \(\displaystyle {(\{x{:}a,y{:}b\} \in E(G) \wedge \{x'{:}a',y'{:}b'\} \in E(G') \wedge x=x' \wedge a=a')}\)

    \(\Rightarrow (b=b' \wedge y=y')\),

  3. (iii)

    \(\forall x,y\in V(G)\,\forall x',y'\in V(G')\,\forall a,b \in \pi \quad x=x' \Rightarrow \delta (\{x{:}a,y{:}b\})=\delta '(\{x'{:}a,y'{:}b\})\) when both are defined,

  4. (iv)

    \(\forall x\in V(G)\,\forall x'\in V(G')\quad x=x' \Rightarrow \sigma (x)=\sigma '(x')\) when both are defined.

They are said to be trivially consistent if and only if for all \(x\in V(G)\), \(x'\in V(G')\) we have \(x\cap x'=\emptyset\).

(The consistency conditions aim at making sure that both graphs “do not disagree”. Indeed: (iv) means that “if G says that vertex x has label \(\sigma (x)\), \(G'\) should either agree or have no label for x”; (iii) means that “if G says that edge e has label \(\delta (e)\), \(G'\) should either agree or have no label for e”; (ii) means that “if G says that starting from vertex x and following port a leads to y via port b, \(G'\) should either agree or have no edge on port \(x{:}a\)”. Condition (i) is in the same spirit: it requires that G and \(G'\), if they have a vertex in common, then they must fully agree on its name. Remember that vertices of G and \(G'\) are disjoint subsets of \(V(X).{\mathbb {N}}^?\). If one wishes to take the union of G and \(G'\), one has to enforce that the vertex names are still disjoint subsets of \(V(X).{\mathbb {N}}^?\). Trivial consistency arises when G and \(G'\) have no vertex in common: thus, they cannot disagree on any of the above.)

Definition 36

(Union) Let \(X\in {{{\mathcal {X}}}}_{\pi }\) be a pointed graph modulo. Let G be a labelled graph \((G,\sigma , \delta )\), and \(G'\) be a labelled graph \((G',\sigma ', \delta ')\), each one having vertices that are pairwise disjoint subsets of \(V(X).{\mathbb {N}}^?\). Whenever they are consistent, their union is defined. The resulting graph \(G\cup G'\) is the labelled graph with vertices \(V(G)\cup V(G')\), edges \(E(G)\cup E(G')\), labels that are the union of the labels of G and \(G'\).

Appendix 2: Summary of notations

Notation

Meaning

Graphs

 

\(\pi\)

Set of ports

ab

Ports

\(e,\{x:a,y:b\}\)

Edges

\(\varPi ^*\)

Words in \(\pi ^2\), possible paths

V

Possible vertices

\(\varSigma , \varDelta\)

Set of internal states for vertices/edges

\(\sigma , \delta\)

Labelling functions for vertices/edges

rstmn

radiuses

\({{{\mathcal {G}}}}_{\varSigma ,\varDelta ,\pi }\)

Set of graphs

GH

Graphs

E(G)

Edges of G

V(G)

Vertices of G

puvxy

Vertex of graphs

u.G

Graph, whose vertex names get prefixed by u

\(G^r_W\)

Induced subgraph of radius r around W

\({}^\downarrow G\) (resp. \({}^\uparrow G\))

unmarked (resp. marked and the interface) parts of G

(Gp), PQ

Pointed graph

\(G^r_p\)

Disk of a pointed graph, pointed at p

R

Graph isomorphism a.k.a Renaming

\({{{\mathcal {X}}}}_{\varSigma ,\varDelta ,\pi }\)

Set of pointed graphs modulo isomorphism

\(\widetilde{(G,p)}, X, Y\)

Pointed graphs modulo

\(\varGamma (X)\)

Graph associated to a pointed graph modulo

L(X)

Set of paths in X

uvxy

Paths in a pointed graph modulo

\({\overline{u}}\)

Inverse path

u.v

Concatenated paths

\(u\equiv _{X}v\)

Equivalent paths in X

V(X)

Vertices of X

\({\hat{u}}, u, v, x ,y\)

Vertices in a pointed graph modulo

\(X_u\)

Shifted pointed graph modulo

\(u\sim _{X}v\)

Shift-equivalent paths in X

C

A shift-equivalence class

\(X_{/\sim }\)

A pointed graph modulo isomorphism, modulo shift-equivalence

\(X^r\)

r–disk of a pointed graph modulo

|u|

Minimal r s.t. \(X^r\) contains u

X(k)

Sequence of pointed graphs modulo

\({}^\Box X\)

An asymmetric extension of X

\(\overline{{{{\mathcal {X}}}}}_{\varSigma ,\varDelta ,\pi }\)

Marked pointed graphs modulo isomorphism

Notation

Meaning

Dynamics

 

rs

Locality radius, boundedness bound

f

Local rule

F

Global function, a.k.a evolution

\(R_\bullet , S_\bullet\)

Name maps

\(R_X^m\)

Restriction of \(R_X\) to the codomain \(V(F(X)^m)\)

\((F,R_\bullet )\)

Global dynamics

AB

Local functions

\((A,S_\bullet )\)

Local dynamics

\((A_u,A_{u,\bullet })\)

Shifted local dynamics

\(A_u\cdot B\)

Composition of local functions accounting for renamings by B

\(\mu\)

Local function : the mark

K

Local function : the conjugate mark

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Arrighi, P., Martiel, S. & Perdrix, S. Reversible causal graph dynamics: invertibility, block representation, vertex-preservation. Nat Comput 19, 157–178 (2020). https://doi.org/10.1007/s11047-019-09768-0

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s11047-019-09768-0

Keywords

Navigation