<?xml version="1.0"?>


<!-- Regular Expressions with Squaring were introduced in [MS72] in
order to study complexity results on regular expressions. There are
frequently used for theoretical complexity reduction issues.

A regular expression with Squaring is an extension of classical
regular expression (finite sets, union, concatenation and Kleene star)
with a suqring operator. Regular expressions with squaring 
on the alphabet S={a,b,c}
are generated by the following grammar

S -> a | b | c
Sub -> Set (S)
E -> Sub | E U E | E.E | E* | E²

The Union is commutative and idempotent. SInce there exists a squaring operator, we require the product to be idempotent

Bibliography

[MS72]
-->


<!DOCTYPE specification SYSTEM "seed.dtd">


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

  <union id="All"> <!-- defintion of a regular expression with squaring-->
    <child idref="Sub"/> <!-- either a subset of the alphabet-->
    <child idref="Prod"/> <!-- or the product of two expressions-->
    <child idref="Union"/><!-- or the union of two expressions-->
    <child idref="Star"/><!-- or the star of an expression-->
    <child idref="Square"/><!-- or the square of an expression-->
  </union> 

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



  <constants_set id="Sub">  <!-- defintion of subsets of S-->
    <child idref="S"/>
  </constants_set>


  <unary id="Star"> <!-- stars of Expression-->
    <symbol value="*"/>
    <child idref="All"/>
  </unary>

  
  <binary_sym_neq id="Union"> <!-- product of expressions -->
    <symbol value="+"/>
    <child idref="All"/>
  </binary_sym_neq>


  <binary_neq id="Prod"> <!-- product of expressions -->
    <symbol value="."/>
    <child idref="All"/>
  </binary_neq>

  <unary id="Square"> <!-- square of Expression-->
    <symbol value="^2"/>
    <child idref="All"/>
  </unary>

</specification>

