<?xml version="1.0"?>


<!-- Computation Tree Logic is widely used to specify systems.

CTL formulas are defined with classical boolean operators, with
constants (atomic formulas) and with existential temporal operators. 
In this file
we use the simplest CTL definition on atomic formula \{a,b,c,d\}:

F -> false | a | b | c | d | F or F | neg F | EG F | F EUntil F | Enext F

-->


<!DOCTYPE specification SYSTEM "seed.dtd">



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

  <union id="All"> <!-- defintion of a CTL formula-->
    <child idref="Atomic"/> <!-- either an atomic formula-->
    <child idref="Or"/> <!-- or the disjunction of two formulas-->
    <child idref="Neg"/> <!-- or the negation of a formula-->
    <child idref="ENext"/> <!-- or the next of a formula-->
    <child idref="EUntil"/> <!-- or the Until of two formulas-->
    <child idref="EG"/> <!-- or the globally of a fromula-->
  </union> 

  <constants id="Atomic"> <!-- defintion of Atomic Formulas-->
    <symbol value="False"/>
    <symbol value="a"/>
    <symbol value="b"/>
    <symbol value="c"/>    <symbol value="d"/>
  </constants>

  <unary id="ENext"> <!--next -->
    <symbol value="Enext"/>
    <child idref="All"/>
  </unary>

  <unary id="EG"> <!-- globally -->
    <symbol value="EG"/>
    <child idref="All"/>
  </unary>

  <unary id="Neg"> <!-- negation -->
    <symbol value="neg"/>
    <child idref="All"/>
  </unary>

  <binary_neq id="EUntil"> <!-- until -->
    <symbol value="Euntil"/>
    <child idref="All"/>
  </binary_neq>
  
  <binary_sym_neq id="Or"> <!-- disjunction -->
    <symbol value="or"/>
    <child idref="All"/>
  </binary_sym_neq>

</specification>
