Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
| Download
GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
Project: cocalc-sagemath-dev-slelievre
Views: 4183461[1X4 [33X[0;0YUser friendly ways to give semigroups and automata[133X[101X23[33X[0;0YThis chapter describes two Tcl/Tk graphical interfaces that can be used to4define and edit semigroups and automata.[133X567[1X4.1 [33X[0;0YFinite automata[133X[101X89[1X4.1-1 XAutomaton[101X1011[29X[2XXAutomaton[102X( [[3XA[103X] ) [32X function1213[33X[0;0YThe function [10X Xautomaton [110X without arguments opens a new window where an14automaton may be specified. A finite automaton (which may then be edited)15may be given as argument.[133X1617[4X[32X Example [32X[104X18[4X[25Xgap>[125X [27XXAutomaton();[127X[104X19[4X[28X [128X[104X20[4X[32X[104X2122[33X[0;0YIt opens a window like the following:[133X2324[33X[0;0Y[10X Var [110X is the [5XGAP[105X name of the automaton, [10X States [110X is the number of states, [10X25Alphabet [110X represents the alphabet and may be given through a positive26integer (in this case the alphabet is understood to be [10X a,b,c,... [110X) or27through a string whose symbols, in order, being the letters of the alphabet.28The numbers corresponding to the initial and accepting states are placed in29the respective boxes. The automaton may be specified to be deterministic,30non deterministic or with epsilon transitions. After pressing the [12X31transition matrix [112X button the window gets larger and the transition matrix32of the automaton may be given. The [13Xi[113Xth row of the matrix describes the33action of the [13Xi[113Xth letter on the states. A non deterministic automaton may be34given as follows:[133X3536[33X[0;0YBy pressing the button [12X Ok [112X the [5XGAP[105X shell aquires the aspect shown in the37following picture and the automaton [10X ndAUT [110X may be used to do computations.38Some computations such as getting a rational expression representing the39language of the automaton, the (complete) minimal automaton representing the40same language or the transition semigroup of the automaton, may be done41directly after pressing the [12X Functions[112X button.[133X4243[33X[0;0YBy pressing the button [12X View [112X an image representing the automaton is44displayed in a new window. An automaton with epsilon transitions may be45given as follows shown in the following picture. The last letter of the46alphabet is always considered to be the [22Xϵ[122X. In the images it is represented47by @.[133X4849[33X[0;0YA new window with an image representing the automaton may be obtained by50pressing the button [12X View [112X.[133X5152[33X[0;0YIn the next example it is given an argument to the function [10XXAutomaton[110X.[133X5354[4X[32X Example [32X[104X55[4X[25Xgap>[125X [27XA := RandomAutomaton("det",2,2);[127X[104X56[4X[28X< deterministic automaton on 2 letters with 2 states >[128X[104X57[4X[25Xgap>[125X [27XXAutomaton(A);[127X[104X58[4X[28X [128X[104X59[4X[32X[104X6061[33X[0;0YIt opens a window like the following:[133X626364[1X4.2 [33X[0;0YFinite semigroups[133X[101X6566[33X[0;0YThe most common ways to give a semigroup to are through generators and67relations, a set of (partial) transformations as generating set and as68syntactic semigroups of automata or rational languages.[133X6970[1X4.2-1 XSemigroup[101X7172[29X[2XXSemigroup[102X( [[3XS[103X] ) [32X function7374[33X[0;0YThe function [10X XSemigroup [110X without arguments opens a new window where a75semigroup (or monoid) may be specified. A finite semigroup (which may then76be edited) may be given as argument.[133X7778[4X[32X Example [32X[104X79[4X[25Xgap>[125X [27XXSemigroup();[127X[104X80[4X[28X [128X[104X81[4X[32X[104X8283[33X[0;0YIt opens a window like the following: where one may choose how to give the84semigroup.[133X858687[1X4.2-2 [33X[0;0YSemigroups given through generators and relations[133X[101X8889[33X[0;0YIn the window opened by [10XXSemigroup[110X, by pressing the button [12XProceed[112X the90window should enlarge and have the following aspect. (If the window does not91enlarge automatically, use the mouse to do it.)[133X9293[33X[0;0Y[10X GAP variable [110X is the [5XGAP[105X name of the semigroup. One has then to specify the94number of generators, the number of relations (which does not to be exact)95and whether one wants to produce a monoid or a semigroup. Pressing the96[12XProceed[112X button one gets:[133X979899[1X4.2-3 [33X[0;0YSemigroups given by partial transformations[133X[101X100101[33X[0;0Y[10XXSemigroup(poi3);[110X would pop up the following window, where everything should102be clear:[133X103104105[1X4.2-4 [33X[0;0YSyntatic semigroups[133X[101X106107[33X[0;0Y[10XXSemigroup();[110X would pop up the following window, where we would select108"Syntatic semigroup", press the [12XProceed[112X button and then choose either to109give a "Rational expression" or an "Automaton" by pressing one of those110buttons: If "Rational expression" is chosen, a new window pops up where the111expression can be specified: After pressing the [12XOk[112X button, notice that the112menu button [12XFunctions[112X appears on the main window (lower right corner)113meaning that [5XGAP[105X already recognizes the given semigroup:[133X114115116117