<?xml version="1.0"?>


<!-- Linear Temporal Logic[P77] is widely used to specify systems.

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

F -> a | b | c | d | F or F | neg F | next F | F Until F

Bibliography

[P77] The Temporal Logic of Programs FOCS 1977: 46-57
-->


<!DOCTYPE specification SYSTEM "seed.dtd">



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

  <union id="All"> <!-- defintion of a LTL 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="Next"/> <!-- or the next of a formula-->
    <child idref="Until"/> <!-- or the Until of two formulas-->
  </union> 

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

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

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

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

</specification>
