############################### PeP input file syntax reference ############################### -------------- Basic template -------------- The basic template of a *Numerical P system* in PeP is:: num_ps = { H = {m1, m2}; structure = [m1 [m2 ]m2 ]m1; m1 = { var = {x_1}; # variables that are part of this membrane pr = {2*x_1 + 1 -> 1|x_2}; var0 = (0); }; ... } where: * ``num_ps``: the name of the P system * ``H``: a list of membrane names * ``structure``: describes the structure of the system. In this instance, membrane *m2* is contained by *m1* * ``m1 = { ... }``: the definition of membrane *m1*. Note the name of the membrane is the same as the one defined in ``H`` * ``var = {x_1}``: a comma separated list of P objects that are part of this membrane * ``pr = {2*x_1 + 1 -> 1|x_2}``: the definition of a program. **A single program is allowed per membrane, for a non-enzymatic Numerical P System** * The ``pr`` keyword is the same for all programs. * The right arrow ``->`` is used to separate the *production function* (left-side) from the *distribution function* (right-side) * ``var0 = (0)``: a comma separated list of initial P object valuea, specified in the same order as that used for ``var`` * comments start with ``#`` * code blocks are delimited using ``{ }`` and are used for * ``num_ps`` * ``H`` * ``m1`` * ``var`` * ``pr`` * lists of numeric constants are delimited using ``( )`` and are used mainly for ``var0`` Note that the three suspension dots ``...`` do not have any syntactical meaning. ---------------------------- Enzymatic Numerical P System ---------------------------- An *Enzymatic Numerical P System* preserves all of the syntax elements of a *Numerical P System* and introduces several small modifications. The basic template of an *Enzymatic Numerical P system* in PeP is:: num_ps = { ... m3 = { var = {x_1_1, x_2_1, x_3_1}; # variables E = {e_1_1, e_2_1}; # enzymes pr = {2*x_1_1 + x_2_1 [e_1_1 -> ] 1|x_2_1 + 1|x_3_1 + 1|x_1_2}; pr = {x_2_1 + 3*x_3_1 [e_1_1 -> ] 1|x_2_1 + 2|x_1_2}; pr = {x_1_1 + 4*x_3_1 [e_2_1 -> ] 1|x_1_1 + 2|x_2_1}; var0 = (2, 3, 4); # initial values for variables x_1_1, x_2_1, x_3_1 E0 = (4, 1); # initial values for enzymes e_1_1, e_2_1 }; ... } Compared to a normal *Numerical P System*, an *Enzymatic Numerical P System* introduces the following changes: * ``E = {e_1_1}``: a comma separated list of P objects that are the enzymes of this membrane * ``E0 = (0)``: a comma separated list of initial enzyme P object valuea, specified in the same order as that used for ``E`` * in what regards programs (``pr``) * multiple program definitions (``pr``) are allowed * within the definition of a program, the ``->`` is replaced with ``[e_1_1 -> ]`` where ``e_1_1`` is the name of an enzyme P object that conditions the execution of this program. **Note that within an Enzymatic Numerical P System, there can be membranes that do not use enzymes**.