[1X4 User friendly ways to give semigroups and automata[0X This chapter describes two Tcl/Tk graphical interfaces that can be used to define and edit semigroups and automata. [1X4.1 Finite automata[0X [1X4.1-1 XAutomaton[0m [2X> XAutomaton( [0X[3X[A][0X[2X ) ________________________________________________[0Xfunction The function [10X Xautomaton [0m 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. [4X--------------------------- Example ----------------------------[0X [4Xgap> XAutomaton();[0X [4X [0X [4X------------------------------------------------------------------[0X It opens a window like the following: [10X Var [0m is the [5XGAP[0m name of the automaton, [10X States [0m is the number of states, [10X Alphabet [0m represents the alphabet and may be given through a positive integer (in this case the alphabet is understood to be [10X a,b,c,... [0m) 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 [0m button the window gets larger and the transition matrix of the automaton may be given. The [13Xi[0mth row of the matrix describes the action of the [13Xi[0mth letter on the states. A non deterministic automaton may be given as follows: By pressing the button [12X Ok [0m the [5XGAP[0m shell aquires the aspect shown in the following picture and the automaton [10X ndAUT [0m 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[0m button. By pressing the button [12X View [0m 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 epsilon. In the images it is represented by @. A new window with an image representing the automaton may be obtained by pressing the button [12X View [0m. In the next example it is given an argument to the function [10XXAutomaton[0m. [4X--------------------------- Example ----------------------------[0X [4Xgap> A := RandomAutomaton("det",2,2);[0X [4X< deterministic automaton on 2 letters with 2 states >[0X [4Xgap> XAutomaton(A);[0X [4X [0X [4X------------------------------------------------------------------[0X It opens a window like the following: [1X4.2 Finite semigroups[0X The 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. [1X4.2-1 XSemigroup[0m [2X> XSemigroup( [0X[3X[S][0X[2X ) ________________________________________________[0Xfunction The function [10X XSemigroup [0m 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. [4X--------------------------- Example ----------------------------[0X [4Xgap> XSemigroup();[0X [4X [0X [4X------------------------------------------------------------------[0X It opens a window like the following: where one may choose how to give the semigroup. [1X4.2-2 Semigroups given through generators and relations[0X In the window opened by [10XXSemigroup[0m, by pressing the button [12XProceed[0m the window should enlarge and have the following aspect. (If the window does not enlarge automatically, use the mouse to do it.) [10X GAP variable [0m is the [5XGAP[0m 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[0m button one gets: [1X4.2-3 Semigroups given by partial transformations[0X [10XXSemigroup(poi3);[0m would pop up the following window, where everything should be clear: [1X4.2-4 Syntatic semigroups[0X [10XXSemigroup();[0m would pop up the following window, where we would select "Syntatic semigroup", press the [12XProceed[0m 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[0m button, notice that the menu button [12XFunctions[0m appears on the main window (lower right corner) meaning that [5XGAP[0m already recognizes the given semigroup: