<!DOCTYPE article PUBLIC "-//NLM//DTD JATS (Z39.96) Journal Archiving and Interchange DTD v1.0 20120330//EN" "JATS-archivearticle1.dtd">
<article xmlns:xlink="http://www.w3.org/1999/xlink">
  <front>
    <journal-meta />
    <article-meta>
      <title-group>
        <article-title>A Veri ed Translation from Circus to CSPM</article-title>
      </title-group>
      <contrib-group>
        <contrib contrib-type="author">
          <string-name>Artur Oliveira Gomes</string-name>
          <email>gomesa@tcd.ie</email>
          <xref ref-type="aff" rid="aff0">0</xref>
        </contrib>
        <aff id="aff0">
          <label>0</label>
          <institution>Trinity College Dublin</institution>
        </aff>
      </contrib-group>
      <abstract>
        <p>We are proposing the implementation of a veri ed tool capable of translating Circus programs into CSPM allowing the user to perform model checking using existing tools such as FDR. In this paper, we discuss some existing strategies for a manual translation and then we summarise the steps required in order to produce and verify the implementation of a translation tool.</p>
      </abstract>
    </article-meta>
  </front>
  <body>
    <sec id="sec-1">
      <title>-</title>
      <p>Nowadays, providing software correctness is likely to be an increasing challenge
for developers, as software complexity and magnitude are growing exponentially.
Moreover, the software development processes recently are being required to be
complete within short periods of time, which con icts with the timing required
for software veri cation. The problem can be, at least partially, solved with
support of a validation process, such as testing, formal veri cation, and model
checking, through techniques and tools with as much automation as possible,
since such task being performed manually requires time, but more importantly,
it can be as error-prone as is the software to be veri ed.</p>
      <p>Circus is a formal language, which combines Z, and CSP constructs allowing
both behavioural and structural aspects of systems to be captured as Circus
speci cations. At present, however, there is no tool support for model- checking
Circus. In order to overcome this problem, we can translate Circus into CSP by
hand, and then, model-check the translated model using FDR, which supports
speci cations written in CSP. FDR analyses failures and divergence models, with
checks related to, for example, deadlock, livelock, and termination.</p>
      <p>We have to translate Circus into CSP, by adapting the Circus model to the
CSP view of the world. For instance, we have to capture the state-based features
of Circus, derived from Z, in CSP. However, industrial-scale applications would
require too much e ort and caution from the user in order to avoid the
introduction of errors due to the handmade translation, not mentioning the fact that
a handmade translation is time consuming.</p>
      <p>
        Recently, we have worked on formalising a model of the haemodialysis
machine [
        <xref ref-type="bibr" rid="ref12">12</xref>
        ] using Circus. The haemodialysis machine puri es the blood of a person
whose kidneys are not working normally, removing waste and excess of water
from the blood. We produced a manual translation from the haemodialysis
Circus model into CSP in order to analyse our model using FDR. Our research
showed that the manual translation is not easy for large systems, and therefore
an automatic tool would be useful for this task.
      </p>
    </sec>
    <sec id="sec-2">
      <title>Related Works</title>
      <p>In this section we survey a few existing formalisms and tools: we rst present
some state-based languages; then we detail some process-based languages; and
nally we show a few combination of these formalisms. In our project we aim at a
formalisms that captures both state-based constructs and concurrent processes.</p>
      <p>
        Z [
        <xref ref-type="bibr" rid="ref30">30</xref>
        ], B [
        <xref ref-type="bibr" rid="ref1">1</xref>
        ] and VDM [
        <xref ref-type="bibr" rid="ref8">8</xref>
        ], are used to model structural aspects of a system,
providing a mathematical description, using, for example, set theory, rst-order
logic and lambda calculus. However, these languages are not designed to model
aspects of the system behaviour like communication between components.
      </p>
      <p>
        Veri cation of state-based languages is possible for languages like Z, B and
VDM. A Z re nement calculus is presented by Cavalcanti and Woodcock [
        <xref ref-type="bibr" rid="ref3">3</xref>
        ]. Z
speci cations written in LATEX can be animated with JAZA [
        <xref ref-type="bibr" rid="ref29">29</xref>
        ]. Likewise, the
Community Z Tools [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ] parses Z speci cations and allows a range of assessments.
      </p>
      <p>
        The communication behaviour aspects of a system are captured by languages
such as Communicating Sequential Processes (CSP) [
        <xref ref-type="bibr" rid="ref15">15</xref>
        ] and Calculus of
Communicating System (CCS) [
        <xref ref-type="bibr" rid="ref16">16</xref>
        ]. With these languages, we can describe
interactions, communication and synchronization between processes. Programs written
using CSP be veri ed regarding non-determinism, deadlock freedom and livelock
freedom with help of model analysis tools, via model- checking using FDR [
        <xref ref-type="bibr" rid="ref10">10</xref>
        ].
      </p>
      <p>
        As we aim at the veri cation of complex and critical systems, we need a
formalization that combines both state-transformation and communication aspects
of the system, allowing us to create more complete formal models. Combinations
of Object-Z along with CSP, are addressed in [
        <xref ref-type="bibr" rid="ref26">26</xref>
        ]. On the other hand, Schneider
and Treharne integrate CSP and B [
        <xref ref-type="bibr" rid="ref28">28</xref>
        ]. The Z language combined with CSP is
present in [
        <xref ref-type="bibr" rid="ref19">19</xref>
        ]. Finally, Galloway and Stoddart combine CCS with Z [
        <xref ref-type="bibr" rid="ref11">11</xref>
        ].
      </p>
      <p>
        Woodcock and Cavalcanti de ned Circus [
        <xref ref-type="bibr" rid="ref31">31</xref>
        ], which is a formalism that not
only combines Z and CSP, but also Morgan's re nement calculus [
        <xref ref-type="bibr" rid="ref17">17</xref>
        ], and
Dijkstra's guarded command language [
        <xref ref-type="bibr" rid="ref6">6</xref>
        ]. Its semantics is based on the Unifying
Theories of Programming [
        <xref ref-type="bibr" rid="ref14">14</xref>
        ]. Furthermore, a re nement calculus for Circus
is presented by Oliveira [
        <xref ref-type="bibr" rid="ref24">24</xref>
        ], using tool support with ProofPower-Z [
        <xref ref-type="bibr" rid="ref32">32</xref>
        ]. An
extension of Circus presented by Sherif and He, is used in order to capture the
temporal aspects of systems, known as Circus Time [
        <xref ref-type="bibr" rid="ref25">25</xref>
        ].
      </p>
      <p>
        Currently, there are a few tools for supporting Circus, such as a re nement
calculator, CRe ne [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], and an animator for Circus, Joker [
        <xref ref-type="bibr" rid="ref21">21</xref>
        ]. However,
modelchecking tool for Circus is still unavailable. The usual process in order to
overcome that is to translate Circus by hand to CSPM , and then use FDR. Model
checking through FDR allows the user to perform a wide range of analysis, such
as re nement checks, deadlock and livelock freedom, and termination.
      </p>
      <p>
        A manual translation from Circus into CSPM is described by Oliveira et
al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], where they apply the re nement laws to Circus programs in order to
translate them into CSPM . Their approach focuses on a subset of Circus that
can be easily mapped into CSPM , by transforming state-rich Circus processes
into stateless processes. There is also work by Mota et al. that prototypes a
strategy for model checking Circus using Microsoft FORMULA [
        <xref ref-type="bibr" rid="ref18">18</xref>
        ].
      </p>
      <p>
        Another strategy used in order to overcome the lack of tool support for model
checking Circus is proposed by Beg [
        <xref ref-type="bibr" rid="ref2">2</xref>
        ], who prototyped and investigated an
automatic translation that supports a simpli ed abstract form of Circus. However,
the Haskell work did not involve the development of a Circus parser.
Research Questions:
1) Is it possible to build a veri ed translator from Circus to CSPM ?
2) Does the use of Haskell make this task easier?
3) What precisely does it mean for the translator to be correct?
4) What is the relationship between the correctness of the translator tool in
development here and the arguments in Oliveira et. al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ] about the
correctness of their translation scheme?
      </p>
      <p>
        In this Ph.D project, we propose the development of a veri ed tool for
translating Circus programs into CSPM . We are developing a tool that partially
automates the translation technique proposed by Oliveira et. al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]: they use the
Circus re nement laws in order to transform state-rich Circus speci cation into
a stateless Circus version of the speci cation. For this, the state components of
a state-rich Circus process are transformed into a Memory process [
        <xref ref-type="bibr" rid="ref20">20</xref>
        ], with
get and set messages capturing the state changes, resulting in a stateless Circus
process. The translated CSPM code will be in conformance with FDR. This tool
partially automates the re nement of Circus programs, using the Circus re
nement laws, as it will be required some degree of input from the user.
      </p>
      <p>
        The entire tool set will be developed as an extension of JAZA, which parses
Z speci cations written in LATEX, the same input used by the Community Z
Tools. Circus speci cations are written as a sequence of block environment, very
similar to the way Z paragraphs are written. However, we assume that the Circus
document is already type checked by existing tools [
        <xref ref-type="bibr" rid="ref5">5</xref>
        ]. Our goal is to formally
verify the implementation of the translation from Circus to CSPM using of
Isabelle/HOL theorem prover with help of Haskabelle, a tool used to translate
Haskell programs into Isabelle speci cations [
        <xref ref-type="bibr" rid="ref13">13</xref>
        ]. We can take advantage of our
experience with Isabelle/HOL whilst verifying our Haskell code. However, we
also know that it is possible to verify Haskell programs using testing, model
checking and interactive theorem proving [
        <xref ref-type="bibr" rid="ref7">7</xref>
        ].
3
      </p>
    </sec>
    <sec id="sec-3">
      <title>Current work and next steps</title>
      <p>As a rst step towards our model-checking approach for Circus we produced a
new parser for Circus speci cations written in LATEX. We expanded the JAZA
parser in order to support Circus on top of the existing support for the Z language.
We are making a step forward and bringing the Circus notation into the JAZA
tool so it can parse Circus programs and then, targeting model checking.</p>
      <p>
        As we have the new parser for Circus, we are now working on two new tasks:
(1) designing the tool for automating the translation from Circus into CSPM ,
which should include (2) the implementation of the Circus re nement laws in
Haskell. Task 2 looks similar to CRe ne [
        <xref ref-type="bibr" rid="ref4">4</xref>
        ], however, because we are writing
Haskell code, we will import that code into Isabelle/HOL and use theorem prover
in order to certify that the implementation of the laws is correct.
      </p>
      <p>
        From the tasks (1) and (2), we introduce a third one, which involves
establishing precisely what we mean by a correct translation. The veri cation step
of the implemented tool should involve: (3.1) de ning the speci cation of the
translation to be capture in Isabelle/HOL; (3.2) establishing the theorem of
correctness of the implementation; and (3.3) de ning the re nement relation
between laws and translations from [
        <xref ref-type="bibr" rid="ref22 ref23">22,23</xref>
        ], and the corresponding Haskell code
that implements those translations. We intend to show the correctness of our
implementantion of the Circus re nement laws. By de ning the re nement
relation, we capture the relationship between the mathematical notation of the
laws [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ] and our Haskell representation of the Circus AST.
      </p>
      <p>
        Oliveira et al. [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ], suggest the use of the re nement laws as part of the
translation in order to obtain CSPM speci cations from Circus. In their work, a
sequence of re nement steps is followed, applying a some Circus re nement laws
So far, we have implemented the selected set of re nement laws in Haskell, but
the integration with JAZA is yet to be implemented.
      </p>
      <p>The implementation of part of the Circus re nement laws in Haskell is
essential in order to apply the re nement laws whilst rewriting Circus processes,
according to the proposed translation strategy. We intend to ensure that the
translation process is as automated as possible in order to produce an
equivalent CSPM speci cation that relies on its original Circus version, in order to
avoid the introduction of errors in the speci cation due to user interaction.</p>
      <p>
        The reason for adopting the translation presented by Oliveira et al. is that,
even though it is a manual translation, with no tool support involved, each
translation step is justi ed by the Circus re nement laws, and these have been
formally proved to be consistent using ProofPower-Z [
        <xref ref-type="bibr" rid="ref22">22</xref>
        ]. Currently, their
approach covers a subset of Circus. Once we have implemented that subset, we can
extend it in order to cover a wider group of Circus constructs. In our work, we
want to show that our implementation of the above mentioned translation rules
and re nement laws in our translator is correct.
      </p>
      <p>As the approach for model checking Circus consists of mapping the Circus into
CSP. It means that, for instance, we should consider that CSP does not capture
the notion of state. Thus, we need to provide a transformation that carries the
values stored in a state-rich Circus processes into the CSP speci cations.</p>
      <p>Our tool transforms the speci cation from state-rich to stateless Circus
processes using our Haskell representation of Circus using Haskell's data types,
obtained from the parsing process from LATEX. So far, we have the functions that
transform state-rich into stateless Circus processes, de ned as functions,
implemented but not yet integrated with JAZA. This step is similar to what will
be made with the application of the Circus re nement laws.</p>
      <p>
        Moving towards the CSPM code, we then have to apply the mapping
functions, de ned as functions, that translates stateless Circus into CSPM . Such
task may look simple for some parts of a Circus speci cation since it includes
CSP constructs. However, we have to carefully map the Z constructs into CSP,
such as predicates and expressions. Up to date, we have the implementation of
all the functions [
        <xref ref-type="bibr" rid="ref23">23</xref>
        ]. However, our tool does not contemplate the
translation of all Z expressions and predicates, and neither translates Z schemas and
axiomatic de nitions1 into CSPM , which will be addressed in our future work.
      </p>
      <p>
        In this work, we are proposing the development of a tool that will not only be
able to automatically translate Circus into CSPM , but also to pretty-printing the
speci cation into either: CSPM , after applying the mapping functions; LATEX,
as an output for the re ned speci cation; and, a for a future work Haskell code
resulted from the re nement. Moreover, in a near future, we can integrate the
tool with a Circus re nement calculator allowing us to re ne Circus to Circus.
This is similar to CRe ne, however, we plan to design a tool for discharging
proof obligations with support from a theorem proving [
        <xref ref-type="bibr" rid="ref9">9</xref>
        ], and also plan to
re ne Circus into a programming language, such as Haskell itself.
Acknowledgements This work is funded by CNPq (Brazilian National
Council for Scienti c and Technological Development) within the Science without
Borders programme, Grant No. 201857/2014-6, and partially funded by Science
Foundation Ireland grant 13/RC/2094.
1 We are working with predicates, expressions, schemas and axiomatic de nitions
currently supported by JAZA, based on Spivey's [
        <xref ref-type="bibr" rid="ref27">27</xref>
        ] Z notation.
      </p>
    </sec>
  </body>
  <back>
    <ref-list>
      <ref id="ref1">
        <mixed-citation>
          1.
          <string-name>
            <surname>Abrial</surname>
            ,
            <given-names>J.R.</given-names>
          </string-name>
          :
          <string-name>
            <surname>The B-book -</surname>
          </string-name>
          Assigning Programs to Meanings. Cambridge University Press (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref2">
        <mixed-citation>
          2.
          <string-name>
            <surname>Beg</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Butter</surname>
            <given-names>eld</given-names>
          </string-name>
          , A.:
          <article-title>Development of a prototype translator from Circus to CSPm</article-title>
          . In: ICOSST. pp.
          <volume>16</volume>
          {
          <issue>23</issue>
          (Dec
          <year>2015</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref3">
        <mixed-citation>
          3.
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.L.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woodcock</surname>
            ,
            <given-names>J.C.P.:</given-names>
          </string-name>
          <article-title>ZRC|A Re nement Calculus for Z</article-title>
          .
          <source>Formal Aspects of Computing</source>
          <volume>10</volume>
          (
          <issue>3</issue>
          ),
          <volume>267</volume>
          |
          <fpage>289</fpage>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref4">
        <mixed-citation>
          4.
          <string-name>
            <given-names>Conserva</given-names>
            <surname>Filho</surname>
          </string-name>
          ,
          <string-name>
            <given-names>M.</given-names>
            ,
            <surname>Oliveira</surname>
          </string-name>
          ,
          <string-name>
            <surname>M.V.M.:</surname>
          </string-name>
          <article-title>Implementing tactics of re nement in crene</article-title>
          .
          <source>In: SEFM'12</source>
          . pp.
          <volume>342</volume>
          {
          <fpage>351</fpage>
          . Springer (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref5">
        <mixed-citation>
          5.
          <string-name>
            <given-names>CZT</given-names>
            <surname>: Community Z Tools</surname>
          </string-name>
          (
          <article-title>Oct 2016), czt</article-title>
          .sourceforge.net/
        </mixed-citation>
      </ref>
      <ref id="ref6">
        <mixed-citation>
          6.
          <string-name>
            <surname>Dijkstra</surname>
            ,
            <given-names>E.W.</given-names>
          </string-name>
          :
          <article-title>Guarded Commands, Nondeterminacy and Formal Derivation of Programs</article-title>
          .
          <source>Commun. ACM</source>
          <volume>18</volume>
          ,
          <issue>453</issue>
          {
          <fpage>457</fpage>
          (
          <year>August 1975</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref7">
        <mixed-citation>
          7.
          <string-name>
            <surname>Dybjer</surname>
            ,
            <given-names>P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Haiyan</surname>
            ,
            <given-names>Q.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Takeyama</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Verifying haskell programs by combining testing, model checking and interactive theorem proving</article-title>
          .
          <source>Information and software technology 46(15)</source>
          ,
          <volume>1011</volume>
          {
          <fpage>1025</fpage>
          (
          <year>2004</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref8">
        <mixed-citation>
          8.
          <string-name>
            <surname>Fitzgerald</surname>
            ,
            <given-names>J.S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Larsen</surname>
            ,
            <given-names>P.G.</given-names>
          </string-name>
          :
          <article-title>Modelling Systems - Practical Tools and Techniques in Software Development (2</article-title>
          . ed.). Cambridge University Press (
          <year>2009</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref9">
        <mixed-citation>
          9.
          <string-name>
            <surname>Foster</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Zeyda</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woodcock</surname>
          </string-name>
          , J.:
          <article-title>Isabelle/utp: A mechanised theory engineering framework</article-title>
          . In: Naumann,
          <string-name>
            <surname>D</surname>
          </string-name>
          . (ed.)
          <source>Unifying Theories of Programming - 5th International Symposium, UTP</source>
          <year>2014</year>
          , Singapore, May
          <volume>13</volume>
          ,
          <year>2014</year>
          ,
          <source>Revised Selected Papers. Lecture Notes in Computer Science</source>
          , vol.
          <volume>8963</volume>
          , pp.
          <volume>21</volume>
          {
          <fpage>41</fpage>
          . Springer (
          <year>2014</year>
          ), http://dx.doi.org/10.1007/978-3-
          <fpage>319</fpage>
          -14806-
          <issue>9</issue>
          _
          <fpage>2</fpage>
        </mixed-citation>
      </ref>
      <ref id="ref10">
        <mixed-citation>
          10.
          <string-name>
            <surname>FSE</surname>
            ,
            <given-names>F.S.E.L.</given-names>
          </string-name>
          :
          <article-title>Failures-Divergence Re nement: FDR2 User Manual</article-title>
          .
          <source>(Jun</source>
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref11">
        <mixed-citation>
          11.
          <string-name>
            <surname>Galloway</surname>
            ,
            <given-names>A.J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Stoddart</surname>
            ,
            <given-names>W.J.:</given-names>
          </string-name>
          <article-title>An Operational Semantics for ZCCS</article-title>
          .
          <source>In: ICFEM'97</source>
          . pp.
          <volume>293</volume>
          {
          <fpage>302</fpage>
          . IEEE Computer Society Press (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref12">
        <mixed-citation>
          12.
          <string-name>
            <surname>Gomes</surname>
            ,
            <given-names>A.O.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Butter</surname>
            <given-names>eld</given-names>
          </string-name>
          , A.:
          <article-title>Modelling the Haemodialysis Machine with Circus</article-title>
          .
          <source>In: ABZ'16. LNCS</source>
          , vol.
          <volume>9675</volume>
          , pp.
          <volume>409</volume>
          {
          <fpage>424</fpage>
          . Springer (
          <year>2016</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref13">
        <mixed-citation>
          13.
          <string-name>
            <surname>Haftmann</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          :
          <article-title>From higher-order logic to haskell: there and back again</article-title>
          . In: Gallagher,
          <string-name>
            <surname>J.P.</surname>
          </string-name>
          , Voigtlander, J. (eds.)
          <source>Proceedings of the 2010 ACM SIGPLAN Workshop on Partial Evaluation and Program Manipulation</source>
          ,
          <string-name>
            <surname>PEPM</surname>
          </string-name>
          <year>2010</year>
          , Madrid, Spain, January
          <volume>18</volume>
          -
          <issue>19</issue>
          ,
          <year>2010</year>
          . pp.
          <volume>155</volume>
          {
          <fpage>158</fpage>
          .
          <string-name>
            <surname>ACM</surname>
          </string-name>
          (
          <year>2010</year>
          ), http://doi.acm.
          <source>org/10</source>
          . 1145/1706356.1706385
        </mixed-citation>
      </ref>
      <ref id="ref14">
        <mixed-citation>
          14.
          <string-name>
            <surname>He</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Hoare</surname>
            ,
            <given-names>C.A.R.</given-names>
          </string-name>
          :
          <article-title>Unifying Theories of Programming</article-title>
          . In: Orlowska,
          <string-name>
            <given-names>E.</given-names>
            ,
            <surname>Szalas</surname>
          </string-name>
          ,
          <string-name>
            <surname>A</surname>
          </string-name>
          . (eds.)
          <source>RelMiCS</source>
          . pp.
          <volume>97</volume>
          {
          <issue>99</issue>
          (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref15">
        <mixed-citation>
          15.
          <string-name>
            <surname>Hoare</surname>
            ,
            <given-names>C.A.R.</given-names>
          </string-name>
          : Communicating Sequential Processes. Prentice-Hall, Inc., Upper Saddle River, NJ, USA (
          <year>1985</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref16">
        <mixed-citation>
          16.
          <string-name>
            <surname>Milner</surname>
          </string-name>
          , R.:
          <source>A Calculus of Communicating Systems</source>
          . Springer (
          <year>1982</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref17">
        <mixed-citation>
          17.
          <string-name>
            <surname>Morgan</surname>
          </string-name>
          , C.C.
          <article-title>: Programming From Speci cations, 2nd Edition</article-title>
          . Prentice Hall International series in computer science, Prentice Hall (
          <year>1994</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref18">
        <mixed-citation>
          18.
          <string-name>
            <surname>Mota</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Farias</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Didier</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woodcock</surname>
          </string-name>
          , J.:
          <article-title>Rapid Prototyping of a Semantically Well Founded Circus Model Checker</article-title>
          .
          <source>In: SEFM'14</source>
          . pp.
          <volume>235</volume>
          {
          <fpage>249</fpage>
          . Springer (
          <year>2014</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref19">
        <mixed-citation>
          19.
          <string-name>
            <surname>Mota</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sampaio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <string-name>
            <surname>Model-Checking</surname>
            <given-names>CSP</given-names>
          </string-name>
          -Z.
          <source>In: European Joint Conference on Theory and Practice of Software</source>
          . pp.
          <volume>205</volume>
          {
          <fpage>220</fpage>
          . Springer (
          <year>1998</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref20">
        <mixed-citation>
          20.
          <string-name>
            <surname>Nogueira</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sampaio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Mota</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Test generation from state based use case models</article-title>
          .
          <source>Formal Aspects of Computing</source>
          <volume>26</volume>
          (
          <issue>3</issue>
          ),
          <volume>441</volume>
          {
          <fpage>490</fpage>
          (
          <year>2012</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref21">
        <mixed-citation>
          21.
          <string-name>
            <surname>Oliveira</surname>
            ,
            <given-names>D.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Oliveira</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Joker: An Animation Framework for Formal Specications</article-title>
          . In: SBMF'
          <fpage>11</fpage>
          -
          <string-name>
            <given-names>Short</given-names>
            <surname>Papers</surname>
          </string-name>
          . pp.
          <volume>43</volume>
          {
          <fpage>48</fpage>
          . ICMC/USP (Sep
          <year>2011</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref22">
        <mixed-citation>
          22.
          <string-name>
            <surname>Oliveira</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woodcock</surname>
          </string-name>
          , J.: Unifying Theories in ProofPower-Z.
          <source>Formal Aspects of Computing</source>
          (
          <year>2007</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref23">
        <mixed-citation>
          23.
          <string-name>
            <surname>Oliveira</surname>
            ,
            <given-names>M.V.M.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sampaio</surname>
            ,
            <given-names>A.C.A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Antonino</surname>
            ,
            <given-names>P.R.G.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Ramos</surname>
          </string-name>
          , R.T.,
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.L.C.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Woodcock</surname>
            ,
            <given-names>J.C.P.</given-names>
          </string-name>
          :
          <article-title>Compositional Analysis and Design of CML Models</article-title>
          .
          <source>Tech. Rep. D24</source>
          .1,
          <string-name>
            <given-names>COMPASS</given-names>
            <surname>Deliverable</surname>
          </string-name>
          (
          <year>2013</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref24">
        <mixed-citation>
          24.
          <string-name>
            <surname>Oliveira</surname>
            ,
            <given-names>M.V.M.</given-names>
          </string-name>
          :
          <article-title>Formal Derivation of State-Rich Reactive Programs using Circus</article-title>
          .
          <source>Ph.D. thesis</source>
          , Department of Computer Science, University of York (
          <year>2005</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref25">
        <mixed-citation>
          25.
          <string-name>
            <surname>Sherif</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>He</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Sampaio</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>A process algebraic framework for speci cation and validationof real-time systems</article-title>
          .
          <source>Formal Asp. Comput</source>
          .
          <volume>22</volume>
          (
          <issue>2</issue>
          ),
          <volume>153</volume>
          {
          <fpage>191</fpage>
          (
          <year>2010</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref26">
        <mixed-citation>
          26.
          <string-name>
            <surname>Smith</surname>
            ,
            <given-names>G.</given-names>
          </string-name>
          :
          <article-title>A Semantic Integration of Object-Z and CSP for the Speci cation of Concurrent Systems</article-title>
          .
          <source>In: Proceedings of FME</source>
          <year>1997</year>
          , volume
          <volume>1313</volume>
          <source>of LNCS</source>
          . pp.
          <volume>62</volume>
          {
          <fpage>81</fpage>
          . Springer (
          <year>1997</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref27">
        <mixed-citation>
          27.
          <string-name>
            <surname>Spivey</surname>
          </string-name>
          ,
          <string-name>
            <surname>J.M.: The Z Notation: A Reference Manual.</surname>
          </string-name>
          Prentice-Hall, Inc., Upper Saddle River, NJ, USA (
          <year>1989</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref28">
        <mixed-citation>
          28.
          <string-name>
            <surname>Treharne</surname>
            ,
            <given-names>H.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Schneider</surname>
            ,
            <given-names>S.</given-names>
          </string-name>
          :
          <article-title>Using a Process Algebra to Control B Operations</article-title>
          . In: IFM. pp.
          <volume>437</volume>
          {
          <issue>456</issue>
          (
          <year>1999</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref29">
        <mixed-citation>
          29.
          <string-name>
            <surname>Utting</surname>
            ,
            <given-names>M.</given-names>
          </string-name>
          :
          <article-title>Jaza User Manual and Tutorial (June 2005), www</article-title>
          .cs.waikato.ac.nz/ ~marku/jaza/userman.pdf checked May 1st,
          <year>2016</year>
        </mixed-citation>
      </ref>
      <ref id="ref30">
        <mixed-citation>
          30.
          <string-name>
            <surname>Woodcock</surname>
            ,
            <given-names>J.C.P.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Davies</surname>
          </string-name>
          , J.:
          <article-title>Using Z{Speci cation, Re nement, and Proof</article-title>
          .
          <string-name>
            <surname>Prentice-Hall</surname>
          </string-name>
          (
          <year>1996</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref31">
        <mixed-citation>
          31.
          <string-name>
            <surname>Woodcock</surname>
            ,
            <given-names>J.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>The Semantics of Circus</article-title>
          .
          <source>In: ZB '02</source>
          . pp.
          <volume>184</volume>
          {
          <fpage>203</fpage>
          . Springer, London, UK (
          <year>2002</year>
          )
        </mixed-citation>
      </ref>
      <ref id="ref32">
        <mixed-citation>
          32.
          <string-name>
            <surname>Zeyda</surname>
            ,
            <given-names>F.</given-names>
          </string-name>
          ,
          <string-name>
            <surname>Cavalcanti</surname>
            ,
            <given-names>A.</given-names>
          </string-name>
          :
          <article-title>Mechanical Reasoning about Families of UTP Theories</article-title>
          .
          <source>In: SBMF 2008</source>
          . pp.
          <volume>145</volume>
          {
          <issue>160</issue>
          (
          <year>2008</year>
          )
        </mixed-citation>
      </ref>
    </ref-list>
  </back>
</article>