<?xml version="1.0"?>


<!-- Propositional Logic formulas are defined by atomic formula, and boolean operator and, or, neg.
In this file, we consider that operator "and" and "or" are associative, and that neg is idempotent.
 
-->




<!DOCTYPE specification SYSTEM "seed.dtd">


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

  <union id="All"> <!-- defintion of a propositional formula -->
    <child idref="S"/> <!-- either an atomic formula-->
    <child idref="And"/> <!-- or the conjunction of two logical formulas-->
    <child idref="Or"/><!-- or the disjunction of two logical formulas-->
    <child idref="Neg"/><!-- or the negation of an logical formula-->
  </union> 

  <constants id="S"> <!-- defintion of the alphabet-->
    <symbol value="a"/>
    <symbol value="b"/>
    <symbol value="c"/>
    <symbol value="d"/>
    <symbol value="e"/>
    <symbol value="f"/>
    <symbol value="g"/>
  </constants>

  <union id="nonAnd"> <!-- definition of non-conjunction logical formulas -->
    <child idref="Neg"/><!-- either a negation-->
    <child idref="Or"/><!-- or a disjunction-->
    <child idref="S"/> <!-- or a letter-->
  </union>

  <union id="nonNeg"> <!-- definition of non-negation logical formulas -->
    <child idref="And"/> <!-- either a conjunction -->
    <child idref="Or"/><!-- or a disjunction-->
    <child idref="S"/> <!-- or a letter-->
  </union>

  <union id="nonOr"> <!-- definition of non-disjunction logical formulas -->
    <child idref="And"/><!-- either a conjunction -->
    <child idref="Neg"/><!-- or a negation-->
    <child idref="S"/> <!-- or a letter-->
  </union>


  <sequence id="And"> 
    <symbol value="and"/>
    <child idref="nonAnd"/>
  </sequence>

  <sequence id="Or"> 
    <symbol value="or"/>
    <child idref="nonOr"/>
  </sequence>


  <unary id="Neg">
    <symbol value="not"/>
    <child idref="nonNeg"/>
  </unary>

</specification>

