  
  [1X4 [33X[0;0YUser friendly ways to give semigroups and automata[133X[101X
  
  [33X[0;0YThis  chapter  describes two Tcl/Tk graphical interfaces that can be used to
  define and edit semigroups and automata.[133X
  
  
  [1X4.1 [33X[0;0YFinite automata[133X[101X
  
  [1X4.1-1 XAutomaton[101X
  
  [33X[1;0Y[29X[2XXAutomaton[102X( [[3XA[103X] ) [32X function[133X
  
  [33X[0;0YThe  function  [10X  Xautomaton  [110X  without arguments opens a new window where an
  automaton  may  be  specified. A finite automaton (which may then be edited)
  may be given as argument.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XXAutomaton();[127X[104X
    [4X[28X      [128X[104X
  [4X[32X[104X
  
  [33X[0;0YIt opens a window like the following:[133X
  
  [33X[0;0Y[10X  Var  [110X is the [5XGAP[105X name of the automaton, [10X States [110X is the number of states, [10X
  Alphabet  [110X  represents  the  alphabet  and  may  be given through a positive
  integer  (in  this  case  the  alphabet  is understood to be [10X a,b,c,... [110X) or
  through a string whose symbols, in order, being the letters of the alphabet.
  The  numbers corresponding to the initial and accepting states are placed in
  the  respective  boxes.  The automaton may be specified to be deterministic,
  non   deterministic  or  with  epsilon  transitions.  After  pressing  the  [12X
  transition  matrix  [112X button the window gets larger and the transition matrix
  of  the  automaton  may  be  given.  The [13Xi[113Xth row of the matrix describes the
  action of the [13Xi[113Xth letter on the states. A non deterministic automaton may be
  given as follows:[133X
  
  [33X[0;0YBy  pressing  the  button [12X Ok [112X the [5XGAP[105X shell aquires the aspect shown in the
  following  picture and the automaton [10X ndAUT [110X may be used to do computations.
  Some  computations  such  as  getting a rational expression representing the
  language of the automaton, the (complete) minimal automaton representing the
  same  language  or  the  transition  semigroup of the automaton, may be done
  directly after pressing the [12X Functions[112X button.[133X
  
  [33X[0;0YBy  pressing  the  button  [12X  View  [112X  an  image representing the automaton is
  displayed  in  a  new  window.  An automaton with epsilon transitions may be
  given  as  follows  shown  in  the following picture. The last letter of the
  alphabet  is  always considered to be the [22Xϵ[122X. In the images it is represented
  by @.[133X
  
  [33X[0;0YA  new  window  with  an image representing the automaton may be obtained by
  pressing the button [12X View [112X.[133X
  
  [33X[0;0YIn the next example it is given an argument to the function [10XXAutomaton[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XA := RandomAutomaton("det",2,2);[127X[104X
    [4X[28X< deterministic automaton on 2 letters with 2 states >[128X[104X
    [4X[25Xgap>[125X [27XXAutomaton(A);[127X[104X
    [4X[28X      [128X[104X
  [4X[32X[104X
  
  [33X[0;0YIt opens a window like the following:[133X
  
  
  [1X4.2 [33X[0;0YFinite semigroups[133X[101X
  
  [33X[0;0YThe  most  common  ways  to  give  a semigroup to are through generators and
  relations,  a  set  of  (partial)  transformations  as generating set and as
  syntactic semigroups of automata or rational languages.[133X
  
  [1X4.2-1 XSemigroup[101X
  
  [33X[1;0Y[29X[2XXSemigroup[102X( [[3XS[103X] ) [32X function[133X
  
  [33X[0;0YThe  function  [10X  XSemigroup  [110X  without  arguments opens a new window where a
  semigroup  (or  monoid) may be specified. A finite semigroup (which may then
  be edited) may be given as argument.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XXSemigroup();[127X[104X
    [4X[28X      [128X[104X
  [4X[32X[104X
  
  [33X[0;0YIt  opens  a window like the following: where one may choose how to give the
  semigroup.[133X
  
  
  [1X4.2-2 [33X[0;0YSemigroups given through generators and relations[133X[101X
  
  [33X[0;0YIn  the  window  opened  by  [10XXSemigroup[110X,  by pressing the button [12XProceed[112X the
  window should enlarge and have the following aspect. (If the window does not
  enlarge automatically, use the mouse to do it.)[133X
  
  [33X[0;0Y[10X GAP variable [110X is the [5XGAP[105X name of the semigroup. One has then to specify the
  number  of  generators, the number of relations (which does not to be exact)
  and  whether  one  wants  to  produce  a monoid or a semigroup. Pressing the
  [12XProceed[112X button one gets:[133X
  
  
  [1X4.2-3 [33X[0;0YSemigroups given by partial transformations[133X[101X
  
  [33X[0;0Y[10XXSemigroup(poi3);[110X would pop up the following window, where everything should
  be clear:[133X
  
  
  [1X4.2-4 [33X[0;0YSyntatic semigroups[133X[101X
  
  [33X[0;0Y[10XXSemigroup();[110X  would  pop  up  the  following  window, where we would select
  "Syntatic  semigroup",  press  the  [12XProceed[112X button and then choose either to
  give  a  "Rational  expression"  or  an "Automaton" by pressing one of those
  buttons:  If "Rational expression" is chosen, a new window pops up where the
  expression  can  be specified: After pressing the [12XOk[112X button, notice that the
  menu  button  [12XFunctions[112X  appears  on  the  main  window (lower right corner)
  meaning that [5XGAP[105X already recognizes the given semigroup:[133X
  
