<?xml version="1.0"?>


<!--  CCS was introduced by Hoare
[H78] to describe pattern of interaction in concurrent systems. 
Processes on a set of actions \{a1,a2,a3\} are defined by the folloing grammar
(initial symbol is P)

S -> a1 | a2 | a3
X -> Set (S)
E -> Seq (S)
P -> P ext P | P nondet P | P inter P | P\X | P;P | P timetout P | P interupt P | P par S par P | E Par P | STOP | Skip

We only present here a sub-algebra of CCS: we do not represent boolean
conditions, deivergence, piping, etc.


Warning
There is no process of size 2

Bibliography 

[H78] C.A.R. Hoare, Communicating Sequential Processes, Communications of the ACM, 21 (8), pages 666-667, 1978. -->


<!DOCTYPE specification SYSTEM "seed.dtd">

<specification>
  <start idref="All"/> 

  <union id="All"> <!-- defintion of a LTL formula-->
    <child idref="Const"/> <!-- either STOP or Skip -->
    <child idref="Ext"/> <!-- or external choice-->
    <child idref="Int"/> <!-- or internal choice -->
    <child idref="Ndet"/> <!-- or non detrminist choice-->
    <child idref="Inter"/> <!-- or interleaving-->
    <child idref="Par"/> <!-- or interface parallel -->
    <child idref="Seq"/> <!-- or Sequential composition -->
    <child idref="TO"/> <!-- or timeout -->
    <child idref="Intrpt"/> <!-- or interrupt -->
    <child idref="Hide"/> <!-- or hiding -->
    <child idref="Pre"/> <!-- or prefixing -->
  </union> 

  <constants id="Const"> <!-- defintion of STOP/SKIP-->
    <symbol value="STOP"/>
    <symbol value="SKIP"/>
  </constants>

  <binary id="Ext"> <!-- External choice -->
    <symbol value="ext-choice"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>

  <binary id="Int"> <!-- interleaving -->
    <symbol value="int-choice"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary id="Inter"> <!-- interleaving -->
    <symbol value="Interleaving"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary id="Seq"> <!-- sequential -->
    <symbol value="Sequential"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary id="TO"> <!-- timeout -->
    <symbol value="TimeOut"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary id="Intrpt"> <!-- Interupt -->
    <symbol value="interupt"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary>
  
  <binary id="Ndet"> <!-- restriction -->
    <symbol value="Non-det-choice"/>
    <child idref="All"/>
    <child idref="All"/>
  </binary >

  <constants id="S"> <!-- actionnames-->
    <symbol value="a"/>
    <symbol value="b"/>
    <symbol value="c"/>
    <symbol value="d"/>
  </constants>

  <constants_set id="X">  <!-- defintion of subsets of S-->
    <child idref="S"/>
  </constants_set>
  
  <binary id="Hide"> <!-- Interupt -->
    <symbol value="hide"/>
    <child idref="All"/>
    <child idref="X"/>
  </binary>

  <binary id="Par"> <!-- Parallel interface -->
    <symbol value="Parallel"/>
    <child idref="All"/>
    <child idref="H"/>
  </binary>
  
  <binary id="H"> <!-- binary encoding for Parallel interface -->
    <symbol value="Par"/>
    <child idref="X"/>
    <child idref="All"/>
  </binary>
  
  <sequence id="Pre1"> <!-- definition of sequences -->
    <symbol value="->"/>
    <child idref="S"/>
  </sequence>

  <binary id="Pre"> <!-- binary encoding for Parallel interface -->
    <symbol value="->"/>
    <child idref="Pre1"/>
    <child idref="All"/>
  </binary>
</specification>
