<?xml version="1.0"?>

<!-- This file describes an LTL [P77] fragment pointed out in [MW04]
and whose related model-checling problem is NP-complete.  On alphabet
S={a,b,c,d} this fragment is desrcibed by the following grammar:

E -> true | false | Xa E | Xb E | Xc E | Xd E | FE | GE | E or E | E and E

Bibliography

[MWO4] : A. Muscholl and I. Walukiewicz. An NP-Complete Fragment of
LTL , Proc. of DLT'04, Lecture Notes in Computer Science 3340,
pp. 334-344, 2004.

[P>77] 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-NP formula-->
    <child idref="TF"/> <!-- either True/False-->
    <child idref="Or"/> <!-- or the disjunction of two formulas-->
    <child idref="And"/> <!-- or the conjunction of two  formulas-->
    <child idref="F"/> <!-- or the eventually of a formula-->
    <child idref="G"/> <!-- or the always of two formulas-->
    <child idref="X"/> <!-- or the next of formulas -->
  </union> 

  <constants id="TF"> <!-- defintion of the alphabet / Atomic Formulas-->
    <symbol value="True"/>
    <symbol value="False"/>
  </constants>



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

  <binary_sym_neq id="And"> <!-- Conjunction -->
    <symbol value="and"/>
    <child idref="All"/>
  </binary_sym_neq>


  <unary id="F"> <!-- Eventually -->
    <symbol value="F"/>
    <child idref="All"/>
  </unary>

  <unary id="G"> <!-- Always -->
    <symbol value="G"/>
    <child idref="All"/>
  </unary>

  <union id="X"> <!-- Next-->
    <child idref="Xa"/> <!-- Xa -->
    <child idref="Xb"/> <!-- Xb -->
    <child idref="Xc"/> <!-- Xc -->
    <child idref="Xd"/> <!-- Xd -->
  </union> 


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

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

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

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

</specification>
