summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/membranecomputing/membranecomputing.tex
blob: 8bbbb2e8bbe41df1466f53eeb3ae26d863e6d6b6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
\documentclass{article}

\usepackage[utf8]{inputenc}

\usepackage{membranecomputing-dev/membranecomputing}
\usepackage{hyperref}
\usepackage{enumitem}
\usepackage{amssymb}
\usepackage{longtable}

\title{Package \texttt{membranecomputing} (v0.2)}
\author{David Orellana-Martín \\ \texttt{\href{mailto:dorellana@us.es}{dorellana@us.es}}}
\begin{document}

\maketitle

\tableofcontents

\section{Introduction}
\label{sec:introduction}

Membrane computing is a framework where different models of
computations, called membrane systems or P systems arise from. The
notation of these models is very variate since the number of
researchers in the area is very high, and also their background is
different, and therefore the notation can slightly change. The idea of
this package is to cover all the possible variants in the area and
their respective rules. Concerning the rules, the objective is
twofold: On the one hand, to use commands to transcript a rule in a
paper format; On the other hand, since P-Lingua is the \textit{de
  facto} standard language for simulating P systems, there is a
possibility to print the rules in the P-Lingua language, ready to be
copied and pasted into a \texttt{.pli} file.

\section{Package options}
\label{sec:package-options}

The \texttt{membranecomputing} package offers the option
\texttt{blackboard}. The differences of this option can be found in
Subsection~\ref{sec:font-option}.

\subsection{Font option}
\label{sec:font-option}

Notation of P systems can change depending on the model. But even with
the same model, some differences can be found between different
papers. For instance, while some researchers use the symbol $\Gamma$
to denote the working alphabet, other use the letter $O$. Other
example is the use of the letters $\mathcal{M}_{i}$ or $w_{i}$ for
describing the initial multisets of the regions. For this purpose,
this option has been implemented.

\begin{itemize}
\item \texttt{traditional} (\textit{Default}) This typesets the
  symbols like
  $\Gamma, \Sigma, \mathcal{M}_{i}, \mathcal{R}_{i},
  \rho_{i}$~\footnote{For SNP systems, the singleton $\{a\}$, is still
    called $O$ in this mode.}.
\item \texttt{blackboard} This typesets the symbols like
  $O, E, w_{i}, R_{i}, p_{i}$.
\end{itemize}

The rest of the symbols are defined without taking into account this option.

\section{Using the package}
\label{sec:using-package}

In this section I will try to explain all the different uses of this
package, from basic use to creation of new templates.

\subsection{Basic notations}
\label{sec:basic-notations}

This is a list of some notations that can be used for defining initial
multisets, sets of rules, and so on.

\vspace{1mm}

$
\begin{array}{lll}
  \mbox{Working alphabet} & \verb=\wa= & \wa \\
  \mbox{Input alphabet} & \verb=\ia= & \ia \\
  \mbox{Labels set} & \verb=\ls= & \ls \\
  \mbox{Membrane structure} & \verb=\ms= & \ms \\
  \mbox{Initial multiset} & \verb=\im{i}= & \im{i} \\
  \mbox{Rule set} & \verb=\rs{i}= & \rs{i} \\
  \mbox{Probabilities set} & \verb=\ps{i}= & \ps{i} \\
  \mbox{vE} & \verb=\vE= & \vE \\
  \mbox{Neuron} & \verb=\neuron{i}= & \neuron{i} \\
  \mbox{Compartment} & \verb=\compartment{i}= & \compartment{i} \\
  \mbox{Agent} & \verb=\agent{i}= & \agent{i} \\
  \mbox{Degree} & \verb=\degree= & \degree \\
  \mbox{Synapses} & \verb=\syn= & \syn \\
  \mbox{Input region} & \verb=\iin= & \iin \\
  \mbox{Output region} & \verb=\iout= & \iout \\
  \mbox{Object yes} & \verb=\yes= & \yes \\
  \mbox{Object no} & \verb=\no= & \no \\
\end{array}
$

\subsection{Languages and computability theory}
\label{sec:lang-comp-theory}

$
\begin{array}{lll}
  \mbox{Regular language} & \verb=\REG= & \REG \\
  \mbox{Linear language} & \verb=\LIN= & \LIN \\
  \mbox{Context-free language} & \verb=\CF= & \CF \\
  \mbox{Context-sensitive language} & \verb=\CS= & \CS \\
  \mbox{Recursively enumerable language} & \verb=\RE= & \RE \\
\end{array}
$

To define a new set of languages, it is enough to make a new command
as follows:

\begin{verbatim}
\newcommand{\L}{\compSet{L}}
\end{verbatim}

This results in: $\compSet{L}$.

\subsection{Families of membrane systems}
\label{sec:famil-membr-syst}

Since the number of ``ingredients'' of the different variants of P
systems is sometimes high, then some notations can be used to short
them whenever they must be used. For instance, polarizationless P
systems with active membranes when dissolution rules and division
rules only for elementary membranes are allowed is usually denoted as
$\AMO{-d, +ne}$. To denote this, it is enough to write
\verb=\AM0{d, +ne}=. In this package, some examples of different
families of P systems are defined.

$
\begin{array}{lll}
  \mbox{Ps with am} & \verb=\AM[\alpha]{\beta}= & \AM[\alpha]{\beta} \\
  \mbox{Polarizationless Ps with am} & \verb=\AMO{\alpha}= & \AMO{\alpha} \\
  \mbox{Tissue Ps with s/a rules} & \verb=\TC[\alpha]{\beta}= & \TC[\alpha]{\beta} \\
  \mbox{Tissue Ps with s/a and division rules} & \verb=\TDC{\alpha}= & \TDC{\alpha} \\
  \mbox{Tissue Ps with s/a and separation rules} & \verb=\TSC{\alpha}= & \TSC{\alpha} \\
  \mbox{Ps with s/a rules} & \verb=\CC[\alpha]{\beta}= & \CC[\alpha]{\beta} \\
  \mbox{Ps with s/a and division rules} & \verb=\CDC{\alpha}= & \CDC{\alpha} \\
  \mbox{Ps with s/a and separation rules} & \verb=\CSC{\alpha}= & \CSC{\alpha} \\
  \mbox{Tissue Ps with evol. comm. rules} & \verb=\TEC[\alpha]{\beta}= & \TEC[\alpha]{\beta} \\
  \mbox{Tissue Ps with evol. comm. and division rules} & \verb=\TDEC{\alpha}= & \TDEC{\alpha} \\
  \mbox{Tissue Ps with evol. comm. and separation rules} & \verb=\TSEC{\alpha}= & \TSEC{\alpha} \\
  \mbox{Ps with evol. comm. rules} & \verb=\CEC[\alpha]{\beta}= & \CEC[\alpha]{\beta} \\
  \mbox{Ps with evol. comm. and division rules} & \verb=\CDEC{\alpha}= & \CDEC{\alpha} \\
  \mbox{Ps with evol. comm. and separation rules} & \verb=\CSEC{\alpha}= & \CSEC{\alpha}
\end{array}
$

To define a new notation for a family of membrane systems, it is
enough to make a new command as follows:

\begin{verbatim}
\newcommand{\MS}[3]{\Pfamily{MS}{#1}{#2}{#3}}
\end{verbatim}

This results in: $\Pfamily{MS}{\#2}{\#3}{\#4}$.

\subsection{Computational complexity theory}
\label{sec:comp-compl-theory}

It is usual to define different complexity classes in the framework
of membrane computing. In this sense, it would be interesting to
automate the definition of these classes to avoid using all \LaTeX
commands each time we want to use them.

$
\begin{array}{lll}
    \mbox{} & \verb=\PMC[\alpha]{\beta}= & \PMC[\alpha]{\beta} \\
    \mbox{} & \verb=\PSPACEMC[\alpha]{\beta}= & \PSPACEMC[\alpha]{\beta} \\
    \mbox{} & \verb=\EXPMC[\alpha]{\beta}= & \EXPMC[\alpha]{\beta} \\
    \mbox{} & \verb=\EXPSPACEMC[\alpha]{\beta}= & \EXPSPACEMC[\alpha]{\beta} \\
\end{array}
$

To define a new notation for a complexity class in membrane systems, it is
enough to make a new command as follows:

\begin{verbatim}
\newcommand{\C}[3]{\complClass{C}{#1}{#2}}
\end{verbatim}

This results in: $\complClass{C}{\#1}{\#2}$~\footnote{CMC does not
  stand for Conference on Membrane Computing here.}.

\subsection{P systems}
\label{sec:p-systems}

One of the two main contributions of this package is to make easier to
name a P system. Usually, when we have to define a new membrane
system, we have to write something like 

\begin{verbatim}
\Pi = (\Gamma, \mu, H, \mathcal{M}_1, \mathcal{M}_{2}, \mathcal{R}, i_{out})
\end{verbatim}

For making this task easier, the command \verb=psystem= has been
defined. Basically, it takes 5 arguments (first is optional) and can
be used as follows: \verb=\psystem[#1]{#2}{#3}{#4}{#5}=, where

\begin{enumerate}[label=\texttt{\#\arabic*}]
\item $\in \{\mathtt{recognizer}, \mathtt{nonrecognizer}\}$: adds an
  input alphabet and an input region.
\item $\in \{\mathtt{cell}, \mathtt{tissue}\}$: adds a membrane
  structure in the first case.
\item
  $\in \{\mathtt{transition}, \mathtt{activemembranes},
  \mathtt{symportantiport}, \mathtt{spiking}, \mathtt{kernel},
  \mathtt{colony}\}$: changes some of the parameters of the P system.
\item is a subscript for the symbol $\Pi$.
\item $> 1$ is the degree of the system.
\end{enumerate}

For instance, the command
\begin{verbatim}
\psystem[recognizer]{cell}{activemembranes}{1}{10}
\end{verbatim}
would lead to the following:

\begin{center}
  \psystem[recognizer]{cell}{activemembranes}{1}{10}
\end{center}

Some templates have been prepared for most of the usual variants of P
systems:

$
\begin{array}{ll}
  \verb=\psystemAM= & \psystemAM \\
  \verb=\rpsystemAM= & \rpsystemAM \\
  \verb=\psystemSA= & \psystemSA \\
  \verb=\rpsystemSA= & \rpsystemSA \\
  \verb=\SNpsystem= & \SNpsystem \\
  \verb=\rSNpsystem= & \rSNpsystem \\
  \verb=\kpsystem= & \kpsystem \\
  \verb=\rkpsystem= & \rkpsystem \\
  \verb=\pcolony= & \pcolony \\
  \verb=\rpcolony= & \rpcolony \\
\end{array}
$

All commands preceded by a \verb=r= are the recognizer version of
their r-less counterpart.

\subsection{Rules}
\label{sec:rules}

The (current) big work of this paper is to normalise the notation of
the rules of P systems. Several differences can be found in the
literature, most of them about spacing, position of elements, and so
on. The idea is to unify these notations in one big element: the
\verb=\mcrule= command. This command tries to cover all types of rules
in the membrane computing framework, including esoteric rules that
could arise. The idea is to catch some basic elements and parse them
in order to obtain the whole rule. As some types of P systems use
different notations, as arrows, separators and so on, different cases
have being contemplated. The definition of this command is
\verb=\mcrule[#1]{#2}{#3}{#4}{#5}{#6}=, where:

\begin{enumerate}[label=\texttt{\#\arabic*}]
\item $\in \{\mathtt{written} (\mathit{Default}), \mathtt{plingua}\}$: the first one
  makes it look as the usual scientific notation while the second one
  transforms the rule into P-Lingua notation.
\item It can be one of the following parameters:
  
  $
  \begin{array}{lll}
    \mathtt{rewriting} & \mbox{Classical rewriting rules} & \rewritingT \\
    \mathtt{single} & \mbox{Rules with a single pair of brackets} & \pevolutionT \\
    \mathtt{multiple} & \mbox{Rules with different brackets in the LHS and the RHS} & \psendoutT \\
    \mathtt{paren} & \mbox{Rules delimited by parentheses} & \antiportT \\
    \mathtt{spike} & \mbox{Spiking rules} & \spikingT
  \end{array}
$
\item $> 1$: Number of regions in the LHS (the main region and the outside regions are counted as one)
\item $> 1$: Number of regions in the RHS (the main region and the outside regions are counted as one)
\item explained below
\item explained below
\end{enumerate}

The \verb=\mcrule= command is a tool capable of representing a wide
variety of types of rule. The idea is to represent all the rules in a
standardised way and well-spaced. An example with each type of rule is
given:

\begin{itemize}
\item $\mathtt{rewriting}$: \verb=\mcrule{rewriting}{}{}{u}{v}= will
  produce $\mcrule{rewriting}{}{}{u}{v}$.
\item $\mathtt{single}$:
  \verb=\mcrule{single}{}{}{{a}{h}{+}}{{c_{2}\alpha}}= will produce
  $\mcrule{single}{}{}{{a}{h}{+}}{c_{2}\alpha}$.
\item $\mathtt{multiple}$:\newline
  \verb=\mcrule{multiple}{4}{4}{{{a}{3}{+}}{{b}}{{e_{1}}{4}}{;}}=\newline
  \verb={{}{{a}}{-}{{o}{!}}}= will produce\newline
  $\mcrule{multiple}{4}{4}{{{a}{3}{+}}{{b}}{{e_{1}}{4}}{;}}{{}{{a}}{-}{{o}{!}}}$. I
  will explain in detail what means each thing:
  \begin{itemize}
  \item \verb={4}{4}=: In the left-hand side of the rule, 4
    ``regions'' will be analysed (in this case, membrane $3$, its
    parent membrane, membrane $4$ and a special symbol); In the
    right-hand side of the rule, 4 ``regions'' will be analysed (in
    this case, the empty ``main'' membrane, its parent membrane, a
    special symbol and a special region)~\footnote{It is a very
      strange rule, but it will be useful to explain some special
      cases to use in your own rules.}.
  \item \verb={{{a}{3}{+}}{{b}}{{e_{1}}{4}}{;}}=: It is divided into
    four parts:
    \begin{itemize}
    \item \verb={{a}{3}{+}}=: The ``main'' membrane of the rule has
      label $3$ and polarisation $+$, and its contents is an object
      $a$.
    \item \verb={{b}}=: The outer content of the ``main'' membrane is
      an object $b$.
    \item \verb={{e_{1}}{4}}=: It has a inner membrane with label $4$
      and its contents is an object $e_{1}$.
    \item \verb={;}=: It writes down a $;$ symbol~\footnote{Useful for
        creation/deletion rules in kP systems.}.
    \end{itemize}
  \item \verb={{}{{a}}{-}{{o}{!}}}=: It is divided into four
    parts:
    \begin{itemize}
    \item \verb={}=: The ``main'' membrane of the rule is not
      specified, so it is omitted~\footnote{Useful for dissolution
        rules.}.
    \item \verb={{a}}=: The outer content of the ``main'' membrane is
      an object $a$.
    \item \verb=-= It writes down a $-$ symbol~\footnote{Also useful
        for creation/deletion rules in kP systems.}.
    \item \verb={{o}{!}}=: The symbol $!$ in the label is a reserved
      character to write down a guard $\{ o \}$~\footnote{Also used in
      kP systems.}.
    \end{itemize}
  \end{itemize}
\item $\mathtt{paren}$: \verb=\mcrule{paren}{}{}{{ab}{3}}{{c}{2}}=
  will produce $\mcrule{paren}{}{}{{ab}{3}}{{c}{2}}$.
\item $\mathtt{spike}$:
  \verb=\mcrule{spike}{}{}{{a^{3}}{a^{2}}}{{a}{1}}= will produce
  $\mcrule{spike}{}{}{{a^{3}}{a^{2}}}{{a}{1}}$.
\end{itemize}

Using $\mathtt{plingua}$ instead of
$\mathtt{written}$ as the optional parameter, it will write the rule
in the P-Lingua syntax. Therefore, the $\mathtt{multiple}$ rule
previously used in this section would render as\newline
$\mcrule[plingua]{multiple}{4}{4}{{{a}{3}{+}}{{b}}{{e_{1}}{4}}{;}}{{}{{a}}{-}{{o}{!}}}$.

With this, anyone can create almost any kind of rule that one could
think~\footnote{Do you have any idea about other kind of rule? Please
  write me so I can think in a way to implement it.}. However, for the
sake of simplicity, I have defined some commands for the basic types
of rules from the bibliography. 

{\footnotesize
\begin{longtable}{ll}
  \verb=\rewriting{u}{v}= & $\rewriting{u}{v}$ \\
  \verb=\rewritingT= & $\rewritingT$ \\
  \verb=\evolution{a}{b}{h}{\alpha}= & $\evolution{a}{b}{h}{\alpha}$ \\
  \verb=\evolutionT= & $\evolutionT$ \\
  \verb=\evolutionP{a}{b}{h}{\alpha}= & $\evolutionP{a}{b}{h}{\alpha}$ \\
  \verb=\evolutionPT= & $\evolutionPT$ \\
  \verb=\pevolution{a}{b}{h}= & $\pevolution{a}{b}{h}$ \\
  \verb=\pevolutionT= & $\pevolutionT$ \\
  \verb=\pevolutionP{a}{b}{h}= & $\pevolutionP{a}{b}{h}$ \\
  \verb=\pevolutionPT= & $\pevolutionPT$ \\
  \verb=\antiport{u}{i}{v}{j}= & $\antiport{u}{i}{v}{j}$ \\
  \verb=\antiportT= & $\antiportT$ \\
  \verb=\symportT= & $\symportT$ \\
  \verb=\antiportP{u}{i}{v}{j}= & $\antiportP{u}{i}{v}{j}$ \\
  \verb=\antiportPT= & $\antiportPT$ \\
  \verb=\symportPT= & $\symportPT$ \\
  \verb=\sendin{a}{b}{h}{\alpha_{1}}{\alpha_{2}}= & $\sendin{a}{b}{h}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\sendinT= & $\sendinT$ \\
  \verb=\sendinP{a}{b}{h}{\alpha_{1}}{\alpha_{2}}= & $\sendinP{a}{b}{h}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\sendinPT= & $\sendinPT$ \\
  \verb=\psendin{a}{b}{h}= & $\psendin{a}{b}{h}$ \\
  \verb=\psendinT= & $\psendinT$ \\
  \verb=\psendinP{a}{b}{h}= & $\psendinP{a}{b}{h}$ \\
  \verb=\psendinPT= & $\psendinPT$ \\
  \verb=\sendout{a}{b}{h}{\alpha_{1}}{\alpha_{2}}= & $\sendout{a}{b}{h}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\sendoutT= & $\sendoutT$ \\
  \verb=\sendoutP{a}{b}{h}{\alpha_{1}}{\alpha_{2}}= & $\sendoutP{a}{b}{h}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\sendoutPT= & $\sendoutPT$ \\
  \verb=\psendout{a}{b}{h}= & $\psendout{a}{b}{h}$ \\
  \verb=\psendoutT= & $\psendoutT$ \\
  \verb=\psendoutP{a}{b}{h}= & $\psendoutP{a}{b}{h}$ \\
  \verb=\psendoutPT= & $\psendoutPT$ \\
  \verb=\dissolution{a}{b}{h}{\alpha}= & $\dissolution{a}{b}{h}{\alpha}$ \\
  \verb=\dissolutionT= & $\dissolutionT$ \\
  \verb=\dissolutionP{a}{b}{h}{\alpha}= & $\dissolutionP{a}{b}{h}{\alpha}$ \\
  \verb=\dissolutionPT= & $\dissolutionPT$ \\
  \verb=\pdissolution{a}{b}{h}= & $\pdissolution{a}{b}{h}$ \\
  \verb=\pdissolutionT= & $\pdissolutionT$ \\
  \verb=\pdissolutionP{a}{b}{h}= & $\pdissolutionP{a}{b}{h}$ \\
  \verb=\pdissolutionPT= & $\pdissolutionPT$ \\
  \verb=\division{a}{b}{c}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\division{a}{b}{c}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\divisionT= & $\divisionT$ \\
  \verb=\divisionP{a}{b}{c}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\divisionP{a}{b}{c}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\divisionPT= & $\divisionPT$ \\
  \verb=\pdivision{a}{b}{c}{h}= & $\pdivision{a}{b}{c}{h}$ \\
  \verb=\pdivisionT= & $\pdivisionT$ \\
  \verb=\pdivisionP{a}{b}{c}{h}= & $\pdivisionP{a}{b}{c}{h}$ \\
  \verb=\pdivisionPT= & $\pdivisionPT$ \\
  \verb=\separation{a}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\separation{a}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\separationT= & $\separationT$ \\
  \verb=\separationP{a}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\separationP{a}{h}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\separationPT= & $\separationPT$ \\
  \verb=\pseparation{a}{h}= & $\pseparation{a}{h}$ \\
  \verb=\pseparationT= & $\pseparationT$ \\
  \verb=\pseparationP{a}{h}= & $\pseparationP{a}{h}$ \\
  \verb=\pseparationPT= & $\pseparationPT$ \\
  \verb=\creation{a}{b}{c}{h}{h_{1}}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\creation{a}{b}{c}{h}{h_{1}}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\creationT= & $\creationT$ \\
  \verb=\creationP{a}{b}{c}{h}{h_{1}}{\alpha}{\alpha_{1}}{\alpha_{2}}= & $\creationP{a}{b}{c}{h}{h_{1}}{\alpha}{\alpha_{1}}{\alpha_{2}}$ \\
  \verb=\creationPT= & $\creationPT$ \\
  \verb=\pcreation{a}{b}{c}{h}{h_{1}}= & $\pcreation{a}{b}{c}{h}{h_{1}}$ \\
  \verb=\pcreationT= & $\pcreationT$ \\
  \verb=\pcreationP{a}{b}{c}{h}{h_{1}}= & $\pcreationP{a}{b}{c}{h}{h_{1}}$ \\
  \verb=\pcreationPT= & $\pcreationPT$ \\
  \verb=\spiking{E}{a^{n}}{a}{d}= & $\spiking{E}{a^{n}}{a}{d}$ \\
  \verb=\spikingT= & $\spikingT$ \\
  \verb=\forgettingT= & $\forgettingT$ \\
  \verb=\spikingP{E}{a^{n}}{a}{d}= & $\spikingP{E}{a^{n}}{a}{d}$ \\
  \verb=\spikingPT= & $\spikingPT$ \\
  \verb=\forgettingPT= & $\forgettingPT$ \\
  \verb=\krewriting{x}{y}{g}= & $\krewriting{x}{y}{g}$ \\
  \verb=\krewritingT= & $\krewritingT$ \\
  \verb=\krewritingP{x}{y}{g}= & $\krewritingP{x}{y}{g}$ \\
  \verb=\krewritingPT= & $\krewritingPT$ \\
  \verb=\linkcreation{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}= & $\linkcreation{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}$ \\
  \verb=\linkcreationT= & $\linkcreationT$ \\
  \verb=\linkcreationP{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}= & $\linkcreationP{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}$ \\
  \verb=\linkcreationPT= & $\linkcreationPT$ \\
  \verb=\linkdestruction{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}= & $\linkdestruction{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}$ \\
  \verb=\linkdestructionT= & $\linkdestructionT$ \\
  \verb=\linkdestructionP{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}= & $\linkdestructionP{x}{y}{t_{l_{i}}}{t_{l_{j}}}{g}$ \\
  \verb=\linkdestructionPT= & $\linkdestructionPT$ \\
  \verb=\tissueevolcomm{u}{v}{v'}{u'}{i}{j}= & $\tissueevolcomm{u}{v}{v'}{u'}{i}{j}$ \\
  \verb=\tissueevolcommT= & $\tissueevolcommT$ \\
  \verb=\tissueevolsympT= & $\tissueevolsympT$ \\
  \verb=\tissueevolcommP{u}{v}{v'}{u'}{i}{j}= & $\tissueevolcommP{u}{v}{v'}{u'}{i}{j}$ \\
  \verb=\tissueevolcommPT= & $\tissueevolcommPT$ \\
  \verb=\tissueevolsympPT= & $\tissueevolsympPT$ \\
  \verb=\evolcomm{u}{v}{v'}{u'}{i}{j}= & $\evolcomm{u}{v}{v'}{u'}{i}{j}$ \\
  \verb=\evolcommT= & $\evolcommT$ \\
  \verb=\evolsyminT= & $\evolsyminT$ \\
  \verb=\evolsymoutT= & $\evolsymoutT$ \\
  \verb=\evolcommP{u}{v}{v'}{u'}{i}{j}= & $\evolcommP{u}{v}{v'}{u'}{i}{j}$ \\
  \verb=\evolcommPT= & $\evolcommPT$ \\
  \verb=\evolsyminPT= & $\evolsyminPT$ \\
  \verb=\evolsymoutPT= & $\evolsymoutPT$ \\
\end{longtable}
}

As you can see, the names follow a pattern:

\begin{itemize}
\item Their name is descriptive in terms of the rule it represents.
\item If the rule starts with a \texttt{p}, it means that it is a
  polarizationless rule.
\item If the rule ends with (or its second to last letter is) a
  \texttt{P}, it means it will write the rule in P-Lingua format.
\item If the rule ends with a \texttt{T}, it means it is a rule
  template; that is, the typical rule used to describe its behaviour.
\end{itemize}

If you have an idea to make the notation simpler, please let me know.

\section{Future work}
\label{sec:future-work}

A TODO list for the future development of the package. Please do not
hesitate to contact me if you think that something should be included
in this list, or if there is any bug or concept that should be
included as soon as possible. Please, contact me at
\href{mailto:dorellana@us.es}{dorellana@us.es}

\begin{itemize}
\item Add new variants of P systems, as well as some new templates for
  other rules.
\item Clean the code and create new command for analysing the
  \texttt{multiple} case automatically.
\item Add the possibility of define rules with more than one level of
  deepness.
\item Add a automatic parsing of a membrane structure, so a
  well-spaced structure can appear in a paper. It would be interesting
  to also let it export a string in the P-Lingua format.
\item A long-term objective is to export a .pdf with the picture of a
  P system with its contents. Creating an image for your paper could
  be as simple as defining it as you usually do, it would be cool, right?
\end{itemize}

I hope you find the package interesting and useful for your
purposes. And, as I said above, please do not hesitate to contact me
if you have any questions of or suggestions for it.

\end{document}