﻿<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Publishing DTD with MathML3 v1.1 20151215//EN"
"https://jats.nlm.nih.gov/publishing/1.1/JATS-journalpublishing1.dtd">
<article article-type="research-article" xml:lang="en" dtd-version="1.1" xmlns:mml="http://www.w3.org/1998/Math/MathML" xmlns:xlink="http://www.w3.org/1999/xlink">
    <front>
        <journal-meta>
            <journal-id journal-id-type="doi">https://doi.org/10.7906</journal-id>
            <journal-title-group>
                <journal-title xml:lang="en">Interdisciplinary Description of Complex Systems</journal-title>
            </journal-title-group>
            <issn pub-type="ppub">1334-4684</issn>
            <issn pub-type="epub">1334-4676</issn>
            <publisher>
                <publisher-name xml:lang="hr">Hrvatsko interdisciplinarno društvo</publisher-name>
                <publisher-name xml:lang="en">Croatian Interdisciplinary Society</publisher-name>
                <publisher-loc>Ivana Lučića 1, 10000 Zagreb
                    <email xlink:href="petra.cacic@indecs.eu">petra.cacic@indecs.eu</email>
                    <ext-link xlink:href="http://www.idd.com.hr">http://www.idd.com.hr</ext-link>
                </publisher-loc>
            </publisher>
        </journal-meta>
        <article-meta>
            <article-id pub-id-type="doi">10.7906/indecs.19.4.3</article-id>
            <article-categories>
                <subj-group subj-group-type="heading" xml:lang="en">
                    <subject>Original scientific paper</subject>
                </subj-group>
            </article-categories>
            <title-group>
                <article-title xml:lang="en">An Artificial Immune System Approach to Automated Program Verification: Towards a Theory of Undecidability in Biological Computing</article-title>
            </title-group>
            <contrib-group>
                <contrib contrib-type="author" corresp="yes">
                    <name>
                        <surname>Banerjee</surname>
                        <given-names>Soumya</given-names>
                    </name>
                    <xref ref-type="corresp" rid="cor1">*</xref>
                    <xref ref-type="aff" rid="aff1">1</xref>
                </contrib>                          
                <aff id="aff1">
                    <label>1</label>
                    <institution xml:lang="en">University of Oxford                       
                    </institution>
                    <addr-line>Oxford, United Kingdom</addr-line>
                    <institution xml:lang="en">Ronin Institute                    
                    </institution>                    
                    <addr-line>Montclair, USA</addr-line>
                </aff>
            </contrib-group>
            <author-notes>
                <corresp id="cor1"><label>*</label>Department of Computer Science, 1, University of New Mexico, Albuquerque, NM, 87131, USA                    
                    <email
                        xlink:href="soumya.banerjee@maths.ox.ac.uk">soumya.banerjee@maths.ox.ac.uk</email>
                </corresp>
            </author-notes>
            <pub-date>
                <!--Datum izdavanja -->
                <day>30</day>
                <month>12</month>
                <year>2021</year>
            </pub-date>
            <volume>19</volume>
            <issue>4</issue>
            <fpage>493</fpage>
            <lpage>501</lpage>
            <history>
               <date date-type="received">
                    <day>4</day>
                    <month>4</month>
                    <year>2020</year>
                </date>
                <date date-type="accepted">
                    <day>21</day>
                    <month>12</month>
                    <year>2021</year>
                </date>
            </history>
            <permissions>
                <license license-type="open-access" xlink:href="https://creativecommons.org/licenses/by/4.0/">
                    <license-p>CC BY 4.0</license-p>
                </license>
                <license license-type="open-access" xml:lang="hr">
                    <license-p>Puni tekst objavljenih radova besplatno se smije koristiti za osobne, edukacijske ili istraživačke svrhe uz poštovanje autorskih prava autora i izdavača. Korisnici radove smiju besplatno čitati, preuzimati, kopirati, distribuirati, tiskati, prerađivati ili koristiti ih na druge zakonite načine, uz ispravno navođenje izvornika i nekomercijalnu svrhu uporabe.</license-p>  
                </license>               
                <license license-type="open-access" xml:lang="en">
                    <license-p>The usage of full-text of the articles can be used exclusively for personal, research-related or educational purposes, with regard to the authors' and publishers' rights. The users are allowed to read, download, copy, distribute, print and transform or use them for any other lawful purpose as long as they attribute the source in an appropriate manner and for the non-commercial purpose of the usage.</license-p>
                </license>
            </permissions>
            <abstract xml:lang="en">
                <p>We propose an immune system inspired Artificial Immune System (AIS) algorithm for the purposes of automated program verification. It is proposed to use this AIS algorithm for a specific automated program verification task: that of predicting shape of program invariants. It is shown that the algorithm correctly predicts program invariant shape for a variety of benchmarked programs. Program invariants encapsulate the computability of a particular program, e.g. whether it performs a particular function correctly and whether it terminates or not. This work also lays the foundation for applying concepts of theoretical incomputability and undecidability to biological systems like the immune system that perform robust computation to eliminate pathogens.</p>
            </abstract>
            <kwd-group xml:lang="en">
                <kwd>Artificial Immune System</kwd>
                <kwd>Program Invariant</kwd>
                <kwd>Undecidability</kwd>
                <kwd>Incomputability</kwd>
                <kwd>Biological Computing</kwd>
                <kwd>Immuno-computing</kwd>
                <kwd>Fundamental limits on biological computing</kwd>
            </kwd-group>
        </article-meta>
    </front>
    <body>
        <sec sec-type="INTRODUCTION">
            <label>INTRODUCTION</label>
            <p>The biological immune system has proved to be a rich source of inspiration for computing <xref ref-type="bibr" rid="r1">[1</xref>-<xref ref-type="bibr" rid="r15">15]</xref>. Artificial immune systems take inspiration from the immune system to provide powerful metaphors for robust and distributed computing. In this article, I employ an immune system inspired approach to solve a problem in program verification: that of finding a program invariant.</p>
            <p>An invariant of a program is a mathematical formula that captures the semantics of the program <xref ref-type="bibr" rid="r16">[16]</xref> and is used in automatic program verification. The shape of an invariant is its approximate polynomial representation. Once the shape of the invariant is predicted, deterministic techniques can be used to generate the exact form of the invariant <xref ref-type="bibr" rid="r17">[17]</xref>. Hence, the prediction of invariant shape is of paramount importance for program verification.</p>
            <p>An artificial immune system algorithmic framework is proposed to carry out the machine- learning task of predicting invariant shape from an instance of a program. Program invariants encapsulate the computability of a particular program, e.g. whether it performs a particular function correctly and whether it terminates or not. We hope this work will also lay the foundation for applying concepts of theoretical incomputability and undecidability to biological systems like the immune system that perform robust computation to eliminate pathogens <xref ref-type="bibr" rid="r8">[8</xref>-<xref ref-type="bibr" rid="r15">15]</xref>.</p>           
        </sec>
        <sec sec-type="IMMUNOLOGICAL PRELIMINARIES">
            <label>IMMUNOLOGICAL PRELIMINARIES</label>
            <p>A chemical species that can be recognized by the adaptive immune system is known as an antigen (Ag). When an organism is exposed to an Ag, some specialized immune system cells called B cells respond by producing chemicals called antibodies (Ab’s). Ab’s are molecules attached primarily to the surface of B cells whose aim is to recognize and bind to Ag’s. By binding to these Ab’s the Ag stimulates the B cell to proliferate and mature into plasma cells that secrete Ab. An organism is expected to encounter a given Ag repeatedly during its lifetime. The effectiveness of the immune response to secondary encounters is enhanced by the presence of memory cells associated with the first infection, capable of producing high- affinity Ab’s after repeat encounters. Such a strategy ensures that the speed and accuracy of the immune response becomes successively higher after each infection. This gives rise to associative memory where the stored pattern is recovered through the presentation of an incomplete version of the pattern. The repertoire of activated B cells is diversified <xref ref-type="bibr" rid="r18">[18</xref>-<xref ref-type="bibr" rid="r21">21]</xref> and B-cells with higher affinity for the antigen are selected to enter the pool of memory cells.</p>
        </sec>
        <sec sec-type="AUTOMATED PROGRAM VERIFICATION AND PROGRAM INVARIANTS">
            <label>AUTOMATED PROGRAM VERIFICATION AND PROGRAM INVARIANTS</label>
            <p>The field of automated program verification started with seminal work by Floyd <xref ref-type="bibr" rid="r22">[22]</xref> and Hoare <xref ref-type="bibr" rid="r23">[23]</xref>. They introduced the concept of a loop invariant: a mathematical formula that remains true throughout the execution of a loop. The loop invariant completely captures the semantics of the loop, and along with the program preconditions and postconditions, can be used to show correctness of the program <xref ref-type="bibr" rid="r23">[23]</xref>.</p>
            <p>Previous work <xref ref-type="bibr" rid="r16">[16]</xref> has shown how the loop invariant for a particular program can be generated by a priori agreement on the shape of the invariant: the approximate polynomial representation of the invariant. However, the shape of the loop invariant can be hard to deduce for many programs.</p>
            <p> The following shows an example program:</p>
            <p> {A  0, B  0}</p>
            <p>x : = A;</p>
            <p>y : = B;</p>
            <p>z : = 0;</p>
            <p>while x > 0 do</p>
            <p> if odd(x) then z : = z + y;</p>
            <p> y : = 2 * y;</p>
            <p> x : = x/2; </p>
            <p> end while</p>
            <p> Assuming the shape of the program invariant as Ishape: Ax + By + Cz + Dxy + Eyz + Fxz + Gxyz + H = 0, (where A, B, C, D, E, F, G and H are constants or program variables), using quantifier elimination <xref ref-type="bibr" rid="r16">[16]</xref> the final loop invariant is Ifinal: z + xy - AB = 0. Coupled with a precondition P: {A  0 ^ B  0 ^ x = A ^ y = B ^ z = 0} and a postcondition Q: {z = A*B}, it can be shown that this invariant is consistent with Q i.e. the program correctly multiplies 2 numbers A and B and stores the result in z.</p>
            <p>Finding the precise shape of the loop invariant is generally a non-trivial process and the algorithm proposed aims to use “cues” from the program to make informed predictions about the invariant shape and ultimately help in automated program verification.</p>
        </sec>
        <sec sec-type="PROPOSED COMPUTATIONAL FRAMEWORK">
            <label>PROPOSED COMPUTATIONAL FRAMEWORK</label>
            <p>Here we propose a computational framework for predicting program invariants. An artificial immune system (AIS) algorithm will be used to generate shapes of program invariant. Initially the AIS will be trained on programs, for which the shape of invariant is known. Then a program will be presented to the AIS and it will try to predict the form of the invariant.</p>
            <p>An AIS approach presents many advantages over a traditional Machine Learning (ML) approach. In an AIS, recognition can be sloppy <xref ref-type="bibr" rid="r24">[24]</xref> i.e. if it has previously recognized program P (with an invariant I), then a new program P’ “similar” to P, can also be recognized, and an invariant I’ can be generated (that is similar in form to I). This is akin to our immune system recognizing a previously encountered pathogen (program), and generating antibodies (invariant) similar to the previously produced antibodies.</p>
            <p>The natural immune system produces antibodies by a process of mutation, and the same process is emulated in AIS algorithms. A candidate solution (invariant) will be generated, and then the solution will be improved by in-silico mutation.</p>
            <p>Previously encountered programs and their corresponding invariants will be stored as memory B cells. When a program similar to a stored one is presented, the time taken to generate the invariant will be shorter than the time taken to generate the original invariant (secondary response).</p>
        </sec>
        <sec sec-type="COMPONENTS OF THE ARTIFICIAL IMMUNE SYSTEM">
            <label>COMPONENTS OF THE ARTIFICIAL IMMUNE SYSTEM</label>
            <p>Here we define the specific components of the AIS have to be determined. What is the program analogue of an antigen and an antibody?</p>
            <p>A program fragment is defined to be either an assignment statement, a statement containing an iteration construct (for, while, repeat, etc.), or a statement having a conditional check (if &#60;condition&#62; then) e.g. x: = x + 2, and while (x > 0) do, and if (x > 3) then, are all program fragments.</p>
            <p>The analogue of an antigen is a program fragment and the corresponding analogue of an antibody is an invariant for the program fragment it recognizes. Hence, the AIS will be presented with an antigen (program fragment), and the immune system cells will either produce the antibody (invariant) immediately if it has encountered this antigen before, or will undergo mutations to generate the correct antibody (invariant).</p>
            <p>The individual invariants for each program fragment will then be recombined to generate the invariant for the whole program.</p>
        </sec>
        <sec sec-type="A SHAPE SPACE AND ANTIGENIC DISTANCE FOR PROGRAMS">
            <label>A SHAPE SPACE AND ANTIGENIC DISTANCE FOR PROGRAMS</label>
            <p>We need a measure of distance between disparate program fragments, so that the AIS can recognize them and generate an antibody in response. For a natural immune system, the antibody combining region relevant to antigen binding can be specified by a number of “shape” parameters <xref ref-type="bibr" rid="r25">[25]</xref> which denote the size and shape of the combining site or physical characteristics of the amino acids.</p>
            <p>If there are N shape parameters, they can be combined into a vector, and antibody combining sites and antigenic determinants can be described as points Ab and Ag, in an N - dimensional Euclidean vector-space called shape space <xref ref-type="bibr" rid="r25">[25]</xref>.</p>
            <p>Antigenic distance between 2 antigens is the distance in shape space <xref ref-type="bibr" rid="r26">[26]</xref> between them e.g. ||Ag1 - Ag2|| is the distance between antigens Ag1 and Ag2 in shape space S. The antibody distance is the distance ||Ab1 - Ab2|| in shape space between 2 antibodies Ab1 and Ab2.</p>
            <p>I define the program fragment shape space as the N-dimensional Euclidean vector space of program fragment characteristics like identifier name, exponent on the identifier, operator, etc. I define the corresponding program fragment antigenic distance as the distance ||P1 - P2|| between 2 program fragments P1 and P2 in program fragment shape space. The program fragment antibody (invariant) distance is the distance ||I1 - I2|| between 2 program fragments I1 and I2 in program fragment shape space.</p>
            <p>Let us consider 2 program fragments P1: x: = x + 2 and P2: t: = t + 2. The corresponding antibody (invariant) for P1 is I1: x = x + 2n, where n is a program variable or constant (since upon n - 1 iterations, x gets the value x + 2n). Let P1 and I1 constitute the training set. Then the AIS should be able to produce an antibody (invariant) for the program fragment P2 even though it has never encountered this antigen (program) before. The correct invariant is I2: t = t + 2n (where n is a program variable or constant) and this is indeed what the AIS generates by somatic hypermutation. The program P1 differs from P2 by 1 mutation (replacing x by t on both sides of the assignment) i.e. the program fragment antigenic distance ||P1 - P2|| is 1. The invariants I1 and I2 also differ by 1 mutation (replacing x by t) i.e. the program fragment antibody (invariant) distance ||I1 - I2|| is 1. Hence, when an AIS trained on (P1, I1) is presented with P2, it produces I2 using one mutation from I1 (Fig. 1).</p>
            <fig id="g1" orientation="portrait" position="float">
                <label>Figure. 1. AIS mutation from the assignment statement Ag1 (x: = x + 2;) and
                    invariant Ab1 (x+2n) to Ag2 (t: = t + 2;) and invariant Ab2 (t + 2n) in shape
                    space S.</label>
                <graphic xlink:href="indecs-19-493-g1.png"/>
            </fig>    
                
        </sec>
        <sec sec-type="PROPOSED ALGORITHM">
            <label>PROPOSED ALGORITHM</label>
            <p>In this section we outline the proposed immune system inspired algorithm. The artificial immune system (AIS) would be trained on the antigen (program fragment) P1: x: = x + 2 and given the antibody (invariant) I1: x = x + 2n as a solution (training phase). The AIS stores the solution I1 as a memory detector.</p>
            <p>When an entire program (as opposed to a program fragment) is presented to the AIS, it breaks the program up into program fragments (all the assignment statements in the program), and then “presents” each of these antigens (fragments) to itself.</p>
            <p>If an antigen (program fragment) P2 “similar” to P1 is detected, it will generate I1 as a candidate solution. If I1 itself does not act as an invariant, the AIS will keep on carrying out randomly on I1 until it evolves the final antibody (invariant) I2 that will act as the invariant for the program presented (somatic hypermutation phase). This is akin to how the natural immune system mutates B cell receptors and ultimately produces a receptor that can recognize the antigen. The algorithm may also use some heuristics to guide the mutation process e.g. if an antigen (program fragment) of the form p: = p + 5 is encountered, it would search its repertoire for a program fragment that is closest in program shape space to this e.g. x: = x + 5 is closer to the presented antigen (1 mutation) than y: = y + 7 (2 mutations). Additionally, we will have to ensure that each mutation is sound i.e. there is no such mutation that would generate a wrong invariant for the corresponding mutated program fragment. In the last step, the AIS incorporates Ii into its memory pool (learning phase).</p>
            <p>The AIS then presents the next program fragment P3, generates the invariant I3 and stores it in the memory population, and so on until all program fragments have been presented. Finally, the AIS combines all invariants linearly, producing a polynomial (shape of invariant) that captures the semantics of the entire program.</p>
        </sec>
        <sec sec-type="RESULTS">
            <label>RESULTS</label>
            <p>The AIS (trained on P1, I1) presented with suites of entire programs would successfully generate the shape of the invariant. The first program is shown below:</p>
            <p>(x,y,u,v) : = (a,b,b,0);</p>
            <p>x : = a; y : = b;</p>
            <p> u : = b; v : = 0;</p>
            <p>while (x  y) do</p>
            <p>while (x > y) do x : = x - y; v : = v + u; end while;</p>
            <p>while (x &#60; y) do y : = y - x; u : = u + v; end while;</p>
            <p>end while</p>
            <p> This program takes 2 positive integers a and b, and calculates their g.c.d and l.c.m. The AIS presents itself with each assignment statement sequentially. The first 4 assignment statements (lines 1-2) have no invariant, since they are not contained inside any loop. Hence, the AIS does not generate any invariant for them. The progress of the algorithm on the next 2 assignment statements (x: = x - y; v : = v + u;) is shown below in Fig. 2.</p>
            <p>The AIS starts from the training set (P1: x: = x + 2 &#38; I1: x = x + 2n) and then mutates the operators and operands to create the invariant I3: x = x - yn for the program fragment P3: x: = x - y. The AIS stores I3 in the memory population and for the next assignment statement (v: = v + u;), it starts mutating from (P3, I3) until it creates the invariant I4: v = v + un for the program fragment P4: v: = v + u.</p>
            <fig id="g2" orientation="portrait" position="float">
                <label>Figure. 2. AIS mutations for the assignment statements x : = x - y; v : = v +
                    u.</label>
                <graphic xlink:href="indecs-19-493-g2.png"/>
            </fig>                   
            <p>For the next set of assignment statements (y : = y - x; u : = u + v;), the AIS then generates the invariants I5: y = y - xn and I6: u = u + vn (not shown). The 4 invariants I1, I2, I3 &#38; I4 are then combined linearly (with n being substituted for all program variables, namely x, y, u, v) to yield the invariant shape Ishape: Ax + Bv + Cy + Du + Exy + Fy2 + Guy + Hvy + Jxu + Ku2 + Lvu + Mx2 + Nvx + Pv2 + Q = 0, where A, B, C, D, E, F, G, H, J, K, L, M, N, P and Q are constants or program variables. This is the correct invariant shape, since using quantifier elimination <xref ref-type="bibr" rid="r16">[16]</xref>, the final invariant yielded is Ifinal: xu + yv - ab = 0 (with A = B = C = D = E = F = G = K = L = M = N = P = 0, Q = -ab, H = J = 1).</p>
            <p>Finally we test the AIS on another standard program <xref ref-type="bibr" rid="r16">[16]</xref> shown below:</p>
            <p>{A ≥ 0, B ≥ 0} </p>
            <p>x : = A;</p>
            <p>y : = B;</p>
            <p>z : = 1;</p>
            <p>while y > 0 do</p>
            <p> if odd(y) then y : = y - 1; z : = x * z;</p>
            <p>else x : = x * x; y : = y/2;</p>
            <p>end while</p>
            <p>This program calculates AB and stores it in z. The AIS would calculate the invariant for the program fragment P5: z : = x * z as I5: z = xn * z. For the program fragment P6: x : = x * x, it generates the invariant I6: x = exp(x, exp(2,n)), where exp() is the exponentiation function. Combining all the program fragment invariants, gives us the following invariant shape:</p>
            <p> Ishape: Azxx + Bzxy + Czxz + D.exp(x,exp(2,x)) + E.exp(x,exp(2,y)) + F.exp(x,exp(2,z)) +G = 0.</p>
            <p>This is the exact shape of the invariants, since quantifier elimination yields the final invariant</p>
            <p>Ifinal: zxy = AB (with A = C = D = E = F = 0, G = -AB).</p>
            <p>We can now readily verify the working of the program. When the loop terminates, the invariant is true and y = 0, which yields the correct postcondition: z = AB.</p>
            <p>The proposed algorithm would use a sequence of mutations, guided by heuristics, to generate the correct invariant for a program invariant.</p>
        </sec>
        <sec sec-type="CONCLUSION AND FUTURE WORK">
            <label>CONCLUSION AND FUTURE WORK</label>
            <p>We have proposed a computational framework for an immune system inspired approach for automated program verification. The immune system inspired algorithm breaks up a program into fragments and presents them to itself. It then generates an invariant in response to each program fragment and ultimately combines them to create the general shape of the invariant. We show how this approach can be used to generate the general form of the program invariant for non-trivial benchmark programs <xref ref-type="bibr" rid="r16">[16]</xref>.</p>
            <p>Future work will focus on theoretical research into whether there are classes of programs</p>
            <p>for which a linear combination of individual program fragment invariants might not generate the invariant for the entire program. Another avenue of future investigation would be to look into how mutations on exponentiation would affect the invariant e.g. x : = x + 2 getting mutated to x : = x2 + 2. Lastly, our approach does not consider program fragments having iteration constructs like while, repeat, etc. and future research will investigate how incorporation of such program fragments can enhance the predictive power of the algorithm.</p>
            <p>A lot of work has been done on incomputability, undecidability and program termination in theoretical computer science. The best characterization of this comes in the form of the Halting Problem formulated by Alan Turing. Biological systems also perform computing, e.g. the immune system computes the most efficient way to eliminate pathogens in a timely manner without harming the host <xref ref-type="bibr" rid="r8">[8</xref>-<xref ref-type="bibr" rid="r15">15]</xref>. However it has been more difficult to define incomputability and undecidability for biological systems.</p>
            <p>Program invariants encapsulate the computability and correctness of a particular program, e.g. what it does and whether it terminates or not. This work lays the foundation of applying computability to biological systems especially the immune system that performs computation.</p>
            <p>The present work also applies immune system inspired algorithms to find program invariants and prove correctness and termination. It is intriguing to speculate that it is also possible to go in the reverse direction and translate the complexities of the immune system into an equivalent computer program. The translated computer program can then be analyzed for mathematical properties of what it computes <xref ref-type="bibr" rid="r27">[27,</xref><xref ref-type="bibr" rid="r28">28]</xref>. Hence this work can be extended to provide a theoretical framework for understanding the limits of computation in the immune system.</p>
            <p>The present computational framework can be used to account for cases when the immune system fails to clear infections as is the case in certain virulent infections <xref ref-type="bibr" rid="r29">[29]</xref>.</p>
            <p>This approach can also be similarly extended to analyse substrates for computing that are non-silicon based and can be used to probe the computational nature of life itself <xref ref-type="bibr" rid="r15">[15]</xref>.</p>
            <p>In summary, the present work applies the theoretical concepts of undecidability to immuno- computing and possibly biological computing in general. We view this work as the first step towards elucidating the fundamental limits of computing in immunology and possibly biology as well.</p>
        </sec>
    </body>
    <back>
        <ack xml:lang="en">
            <title>Acknowledgements</title>
            <p>The author wishes to thank Dr. Sara Jane-Dunn, Dr. Boyan Yordanov, Prof. Deepak Kapur and Dr. ThanhVu Nguyen for helpful comments.</p>
        </ack>     
        <ref-list>
            <ref id="r1">
                <label>1</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>de Castro</surname><given-names>L.N.</given-names></name>
                    </person-group>. <source>Artificial Immune Systems: A New Computational Intelligence Approach.</source>.
                    <publisher-loc>London</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>,
                    <date date-type="pub">
                        <year>1996</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r2">
                <label>2</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Hunt</surname><given-names>J.E.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1996</year></date>. <article-title>Learning using an artificial immune system</article-title>.
                    <source>Journal of Network and Computer Applications</source>,
                    <volume>19</volume>,
                    <issue>(2)</issue>
                    <fpage>189</fpage>-<lpage>212</lpage>. <pub-id pub-id-type="doi">10.1006/jnca.1996.0014</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1006/jnca.1996.0014"/>
                </mixed-citation>   
            </ref>
            <ref id="r3">
                <label>3</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>Dasgupta</surname><given-names>D.</given-names></name>
                    </person-group>. <source>Artificial Immune Systems and Their Applications</source>.
                    <publisher-loc>Berlin</publisher-loc>: <publisher-name>Springer-Verlag</publisher-name>,
                    <date date-type="pub">
                        <year>1999</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r4">
                <label>4</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>Hofmeyr</surname><given-names>S.A.</given-names></name>
                    </person-group>. <source>Immunity by design: An artificial immune system</source>.
                    <publisher-name>Proceedings Genetic and Evolutionary Computation conference</publisher-name>,
                    <date date-type="pub">
                        <year>1999</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r5">
                <label>5</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>de Castro</surname><given-names>L.N.</given-names></name>
                    </person-group>. <source>Artificial Immune Systems: Part I-Basic Theory and Applications</source>.
                    <publisher-loc>Campinas</publisher-loc>: <publisher-name>FEEC/Univ. Campinas</publisher-name>,
                    <date date-type="pub">
                        <year>1999</year>
                    </date>.
                </mixed-citation> 
            </ref>
            <ref id="r6">
                <label>6</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>de Castro</surname><given-names> L.N.</given-names></name>
                    </person-group>. <source>Artificial Immune Systems: Part II – A Survey of Applications</source>.
                    <publisher-loc>Campinas</publisher-loc>: <publisher-name>FEEC/Univ. Campinas</publisher-name>,
                    <date date-type="pub">
                        <year>2000</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r7">
                <label>7</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>de Castro</surname><given-names>L.N.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2002</year></date>. <article-title>Learning and Optimization Using the Clonal Selection Principle</article-title>.
                    <source>IEEE Transactions on Evolutionary Computation</source>,
                    <volume>6</volume>,
                    <issue>(3)</issue>
                    <fpage>239</fpage>-<lpage>251</lpage>. <pub-id pub-id-type="doi">10.1109/TEVC.2002.1011539</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1109/TEVC.2002.1011539"/>
                </mixed-citation>
            </ref>
            <ref id="r8">
                <label>8</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name>
                            <surname>Banerjee</surname>
                            <given-names>S.</given-names>
                        </name>
                    </person-group>
                    <date date-type="pub">
                        <year>2010</year>
                    </date>. <article-title>Scale Invariance of Immune System Response Rates and
                        Times: Perspectives on Immune System Architecture and Implications for
                        Artificial Immune Systems</article-title>. <source>Swarm
                        Intelligence</source>, <volume>4</volume>
                    <fpage>301</fpage>-<lpage>318</lpage>. <pub-id pub-id-type="doi"
                        >10.1007/s11721-010-0048-2</pub-id>
                    <ext-link ext-link-type="uri"
                        xlink:href="http://dx.doi.org/10.1007/s11721-010-0048-2"/>
                </mixed-citation>
            </ref>
            <ref id="r9">
                <label>9</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>Banerjee</surname><given-names>S.</given-names></name>
                    </person-group>. <source>Scaling in the immune system. Ph.D. Thesis</source>.
                    <publisher-loc>Albuquerque</publisher-loc>: <publisher-name>University of New Mexico</publisher-name>,
                    <date date-type="pub">
                        <year>2013</year>
                    </date>.
                </mixed-citation>             
            </ref>
            <ref id="r10">
                <label>10</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>Banerjee</surname><given-names>S.</given-names></name>
                    </person-group>. <source>The Value of Inflammatory Signals in Adaptive Immune Responses</source>.
                    <publisher-name>The 10th International Conference on Artificial Immune Systems (ICARIS)</publisher-name>,
                    <date date-type="pub">
                        <year>2011</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r11">
                <label>11</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Drew</surname><given-names>L.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2016</year></date>. <article-title>A spatial model of the efficiency of T cell search in the influenza-infected lung</article-title>.
                    <source>Journal of Theoretical Biology</source>,
                    <volume>398</volume>,
                    <issue>(7)</issue>
                    <fpage>52</fpage>-<lpage>63</lpage>. <pub-id pub-id-type="doi">10.1016/j.jtbi.2016.02.022</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1016/j.jtbi.2016.02.022"/>
                </mixed-citation>
            </ref>
            <ref id="r12">
                <label>12</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Banerjee</surname><given-names>S.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2016</year></date>. <article-title>A Biologically Inspired Model of Distributed Online Communication Supporting Efficient Search and Diffusion of Innovation</article-title>.
                    <source>Interdisciplinary Description of Complex Systems</source>,
                    <volume>14</volume>,
                    <issue>(1)</issue>
                    <fpage>10</fpage>-<lpage>22</lpage>. <pub-id pub-id-type="doi">10.7906/indecs.14.1.2</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.7906/indecs.14.1.2"/>
                </mixed-citation>
            </ref>
            <ref id="r13">
                <label>13</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name>
                            <surname>Banerjee</surname>
                            <given-names>S.</given-names>
                        </name>
                    </person-group>
                    <date date-type="pub">
                        <year>2015</year>
                    </date>. <article-title>Competitive dynamics between criminals and law
                        enforcement explains the super-linear scaling of crime in
                        cities</article-title>. <source>Palgrave Communications</source>,
                        <volume>1</volume>, <issue>(15022)</issue>. <pub-id pub-id-type="doi"
                        >10.1057/palcomms.2015.22</pub-id>
                    <ext-link ext-link-type="uri"
                        xlink:href="http://dx.doi.org/10.1057/palcomms.2015.22"/>
                </mixed-citation>
            </ref>
            <ref id="r14">
                <label>14</label>
                <mixed-citation publication-type="data" publication-format="electronic">
                    <collab>Banerjee, S. and Hecker, J.P.</collab>:
                    <data-title>A Multi-Agent System Approach to Load-Balancing and Resource Allocation for Distributed Computing</data-title>.
                    (<date>
                        <year>2015</year>
                    </date>)
                    <source>Complex Systems Digital Campus, World e-Conference, Conference on Complex Systems</source>.                                    
                </mixed-citation>
            </ref> 
            <ref id="r15">
                <label>15</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Banerjee</surname><given-names>S.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2016</year></date>. <article-title>A Roadmap for a Computational Theory of the Value of Information in Origin of Life Questions</article-title>.
                    <source>Interdisciplinary Description of Complex Systems</source>,
                    <volume>14</volume>,
                    <issue>(3)</issue>
                    <fpage>314</fpage>-<lpage>321</lpage>. <pub-id pub-id-type="doi">10.7906/indecs.14.3.4</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.7906/indecs.14.3.4"/>
                </mixed-citation>
            </ref>
            <ref id="r16">
                <label>16</label>
                <mixed-citation publication-type="data" publication-format="electronic">
                    <collab>Kapur, D.</collab>.
                    <data-title>Automatically Generating Loop Invariants Using Quantifier Elimination</data-title>.
                    (<date>
                        <year>2004</year>
                    </date>)
                    <source>IMACS International IMACS Conference on Applications of Computer Algebra</source>.             
                </mixed-citation>
            </ref> 
            <ref id="r17">
                <label>17</label>
                <mixed-citation publication-type="data" publication-format="electronic">
                    <collab>Rodriguez, E. and Kapur, D.</collab>:
                    <data-title>Automatic Generation of Polynomial Loop Invariants: Algebraic Foundations</data-title>.
                    (<date>
                        <year>2004</year>
                    </date>)
                    <source>International Conference on Symbolic and Algebraic Computation</source>.
                </mixed-citation>
            </ref> 
            <ref id="r18">
                <label>18</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Berek</surname><given-names>C.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1993</year></date>. <article-title>The maturation of the immune response</article-title>.
                    <source>Immunology Today</source>,
                    <volume>14</volume>,
                    <issue>(8)</issue>
                    <fpage>400</fpage>-<lpage>404</lpage>. <pub-id pub-id-type="doi">10.1016/0167-5699(93)90143-9</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1016/0167-5699(93)90143-9"/>
                </mixed-citation>
            </ref>
            <ref id="r19">
                <label>19</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name>
                            <surname>George</surname>
                            <given-names>A.J.T.</given-names>
                        </name>
                    </person-group>
                    <date date-type="pub">
                        <year>1999</year>
                    </date>. <article-title>Receptor editing during affinity
                        maturation</article-title>. <source>Immunology Today</source>,
                        <volume>20</volume>, <issue>(4)</issue>
                    <fpage>196</fpage>. <pub-id pub-id-type="doi"
                        >10.1016/S0167-5699(98)01408-X</pub-id>
                    <ext-link ext-link-type="uri"
                        xlink:href="http://dx.doi.org/10.1016/S0167-5699(98)01408-X"/>
                </mixed-citation>
            </ref>
            <ref id="r20">
                <label>20</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Nussenzweig</surname><given-names>M.C.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1998</year></date>. <article-title>Immune receptor editing: Revise and select</article-title>.
                    <source>Cell</source>,
                    <volume>95</volume>,
                    <issue>(7)</issue>
                    <fpage>875</fpage>-<lpage>878</lpage>. <pub-id pub-id-type="doi">10.1016/S0092-8674(00)81711-0</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1016/S0092-8674(00)81711-0"/>
                </mixed-citation>   
            </ref>
            <ref id="r21">
                <label>21</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Tonegawa</surname><given-names>S.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1983</year></date>. <article-title>Somatic generation of antibody diversity</article-title>.
                    <source>Nature</source>,
                    <volume>302</volume>,
                    <issue>(14)</issue>
                    <fpage>575</fpage>-<lpage>581</lpage>. <pub-id pub-id-type="doi">10.1038/302575a0</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1038/302575a0"/>
                </mixed-citation>
            </ref>
            <ref id="r22">
                <label>22</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Floyd</surname><given-names>R.W.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1967</year></date>. <article-title>Assigning meanings to programs</article-title>.
                    <source>Proceedings of the American Mathematical Society Symposia on Applied Mathematics</source>,
                    <volume>19</volume>,
                    <fpage>19</fpage>-<lpage>31</lpage>.
                </mixed-citation>
            </ref>
            <ref id="r23">
                <label>23</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Hoare</surname><given-names>C.A.R.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1969</year></date>. <article-title>An axiomatic basis for computer programming</article-title>.
                    <source>Communications of the ACM</source>,
                    <volume>12</volume>,
                    <issue>(10)</issue>
                    <fpage>576</fpage>-<lpage>585</lpage>. <pub-id pub-id-type="doi">10.1145/363235.363259</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1145/363235.363259"/>
                </mixed-citation>
            </ref>
            <ref id="r24">
                <label>24</label>
                <mixed-citation publication-type="book">
                    <person-group person-group-type="author">
                        <name><surname>Perelson</surname><given-names>A.S.</given-names></name>
                    </person-group>. <source>Some design principles for immune system recognition</source>.
                    <publisher-name>Complexity</publisher-name>,
                    <date date-type="pub">
                        <year>1999</year>
                    </date>.
                </mixed-citation>
            </ref>
            <ref id="r25">
                <label>25</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Perelson</surname><given-names>A.S.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1979</year></date>. <article-title>Theoretical Studies of Clonal Selection: Minimal Antibody Repertoire Size and Reliability of Self-Non-self Discrimination</article-title>.
                    <source>Journal of Theoretical Biology</source>,
                    <volume>81</volume>,
                    <issue>(4)</issue>
                    <fpage>645</fpage>-<lpage>667</lpage>
                </mixed-citation>
            </ref>
            <ref id="r26">
                <label>26</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Smith</surname><given-names>D.J.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>1997</year></date>. <article-title>Deriving shape space parameters from immunological data</article-title>.
                    <source>Journal of Theoretical Biology</source>,
                    <volume>189</volume>,
                    <issue>(2)</issue>
                    <fpage>141</fpage>-<lpage>150</lpage>. <pub-id pub-id-type="doi">10.1006/jtbi.1997.0495</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1006/jtbi.1997.0495"/>
                </mixed-citation>
            </ref>
            <ref id="r27">
                <label>27</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Dunn</surname><given-names>S.J.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2014</year></date>. <article-title>Defining an essential transcription factor program for naïve pluripotency</article-title>.
                    <source>Science</source>,
                    <volume>344</volume>,
                    <issue>(6188)</issue>
                    <fpage>1156</fpage>-<lpage>1160</lpage>. <pub-id pub-id-type="doi">10.1126/science.1248882</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://doi.org/10.1126/science.1248882"/>
                </mixed-citation>
            </ref>
            <ref id="r28">
                <label>28</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Yordanov</surname><given-names>B.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2016</year></date>. <article-title>A method to identify and analyze biological programs through automated reasoning</article-title>.
                    <source>Npj Systems Biology and Applications</source>,
                    <volume>2</volume>,
                    <issue>16010</issue>
                    <pub-id pub-id-type="doi">10.1038/npjsba.2016.10</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://doi.org/10.1038/npjsba.2016.10"/>
                </mixed-citation>
            </ref>
            <ref id="r29">
                <label>29</label>
                <mixed-citation publication-type="journal">
                    <person-group person-group-type="author">
                        <name><surname>Banerjee</surname><given-names>S.</given-names></name>
                    </person-group>
                    <date date-type="pub"><year>2016</year></date>. <article-title>Estimating Biologically Relevant Parameters under Uncertainty for Experimental Within-Host Murine West Nile Virus Infection</article-title>.
                    <source>Journal of the Royal Society Interface</source>,
                    <volume>13</volume>,
                    <issue>(117)</issue>.
                    <pub-id pub-id-type="doi">10.1098/rsif.2016.0130</pub-id>
                    <ext-link ext-link-type="uri" xlink:href="http://dx.doi.org/10.1098/rsif.2016.0130"/>
                </mixed-citation>              
            </ref>         
        </ref-list>
    </back>
</article>
