[1X3 Drawings of semigroups[0X There are some pictures that may give a lot of information about a semigroup. This is the case of the egg-box picture of the D-classes, the right Cayley graph of a finite monoid and the Schutzenberger graphs of a finite inverse monoid. [1X3.1 Drawing the D-class of an element of a semigroup[0X [1X3.1-1 DrawDClassOfElement[0m [2X> DrawDClassOfElement( [0X[3Xarg[0X[2X ) _______________________________________[0Xfunction This function takes as arguments a semigroup followed by a transformation which is the element whose D-class will be drawn. Optionally we can then specify n lists of elements and the elements of each list will be drawn in different colours. Finally, we may specify a string name the file that will be used to write the drawing of the class (in PostScript format) and if the last argument is the integer [10X1[0m then the elements will appear as transformations, otherwise they will appear as words. The idempotents will be marked with a * before them. This last optional argument may also be the integer [10X2[0m and in this case the elements will appear as integers, where [10Xi[0m represents the element [10XElements(S)[i][0m. [4X--------------------------- Example ----------------------------[0X [4Xgap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]));[0X [4Xgap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),1);[0X [4Xgap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),[0X [4X [Transformation( [ 2, 3, 4, 4 ] )],1);[0X [4Xgap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]),[0X [4X [Transformation( [ 2, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] )],[0X [4X [Transformation( [ 2, 4, 3, 4 ] )],1);[0X [4Xgap> DrawDClassOfElement(poi3, Transformation([1,4,3,4]), [0X [4X [Transformation( [ 2, 4, 3, 4 ] )],"Dclass",1);[0X [4X [0X [4X------------------------------------------------------------------[0X [1X3.2 Drawing the D-classes of a semigroup[0X [1X3.2-1 DrawDClasses[0m [2X> DrawDClasses( [0X[3Xarg[0X[2X ) ______________________________________________[0Xfunction This function is similar to the previous one, except that this one draws all the D-classes of the semigroup given as the first argument. It then takes optionally n lists of elements and the elements of each list will be drawn in different colours. It also accepts a string specifying the name of the file in which the drawing will be written and the last, optional, argument, the integer [10X1[0m, to specify whether the elements will appear as words or as transformations as in the previous function. The idempotents will be marked with a * before them. This last optional argument may also be the integer [10X2[0m and in this case the elements will appear as integers, where [10Xi[0m represents the element [10XElements(S)[i][0m. [4X--------------------------- Example ----------------------------[0X [4Xgap> DrawDClasses(poi3,"DClasses");[0X [4Xgap> DrawDClasses(poi3, [Transformation( [ 2, 3, 4, 4 ] ),[0X [4X Transformation( [ 2, 4, 3, 4 ] )],[0X [4X [Transformation( [ 2, 4, 3, 4 ] )],1);[0X [4X [0X [4X------------------------------------------------------------------[0X [1X3.3 Cayley graphs[0X [1X3.3-1 DrawRightCayleyGraph[0m [2X> DrawRightCayleyGraph( [0X[3XS[0X[2X ) ________________________________________[0Xfunction Draws the right Cayley graph of a finite monoid or semigroup [3XS[0m. [1X3.3-2 DrawCayleyGraph[0m [2X> DrawCayleyGraph( [0X[3XS[0X[2X ) _____________________________________________[0Xfunction This function is a synonym of [2XDrawRightCayleyGraph[0m ([14X3.3-1[0m). For example, the command [10XDrawCayleyGraph(b21);[0m would produce the following image (where state [10Xi[0m represents the element [10XElements(S)[i][0m, the neutral element is colored in "light blue" and all other idempotents are colored in "light coral"): [1X3.4 Schutzenberger graphs[0X [1X3.4-1 DrawSchutzenbergerGraphs[0m [2X> DrawSchutzenbergerGraphs( [0X[3XS[0X[2X ) ____________________________________[0Xfunction Draws the Schutzenberger graphs of the inverse semigroup [3XS[0m. For example, [10XDrawSchutzenbergerGraphs(poi3);[0m would produce the following: [1X3.5 Drawings output formats[0X By default, when a drawing is requested, it is outputted in PostScript format. Since [10Xgraphviz[0m allows other output formats (see [7Xhttp://www.graphviz.org/doc/info/output.html[0m), it is possible to also request a drawing in a format other than PostScript. [1X3.5-1 DrawingsListOfExtraFormats[0m [2X> DrawingsListOfExtraFormats_________________________________[0Xglobal variable This is a global variable which holds the valid output formats for a drawing. It currently has the value: [10X["dia", "fig", "gd", "gd2", "gif", "hpgl", "jpg", "mif", "mp", "pcl", "pic", "plain", "plain-ext", "png", "ps", "ps2", "svg", "svgz", "vrml", "vtx", "wbmp", "none"][0m (see [7Xhttp://www.graphviz.org/doc/info/output.html[0m for their description). [1X3.5-2 DrawingsExtraFormat[0m [2X> DrawingsExtraFormat________________________________________[0Xglobal variable This is a global variable which holds the alternative output format for a drawing. By default its value is [10X"none"[0m which indicates that just PostScript will be used as the output format. If its value becomes one of those in [2XDrawingsListOfExtraFormats[0m ([14X3.5-1[0m), then besides the PostScript file, it will also be created a file in the alternative format. To change this variable's value, please use [2XSetDrawingsExtraFormat[0m ([14X3.5-3[0m). [1X3.5-3 SetDrawingsExtraFormat[0m [2X> SetDrawingsExtraFormat( [0X[3Xf[0X[2X ) ______________________________________[0Xfunction This function is used to set the value of [2XDrawingsExtraFormat[0m ([14X3.5-2[0m) to the format [3Xf[0m which is one of [2XDrawingsListOfExtraFormats[0m ([14X3.5-1[0m). [4X--------------------------- Example ----------------------------[0X [4Xgap> DrawingsExtraFormat;[0X [4X"none"[0X [4Xgap> SetDrawingsExtraFormat("jpg");[0X [4Xgap> DrawingsExtraFormat;[0X [4X"jpg"[0X [4X[0X [4Xgap> DrawRightCayleyGraph(poi3);[0X [4XDisplaying file: /tmp/tmp.tpJqvI/cayleygraph.dot.ps[0X [4XThe extra output format file: /tmp/tmp.tpJqvI/cayleygraph.dot.jpg[0X [4Xhas also been created.[0X [4X[0X [4X------------------------------------------------------------------[0X [1X3.6 Drawings extra graph attributes[0X The functions described in this subsection are intended to give the user a finer control over the final drawing. They allow to define the graph attributes described in [7Xhttp://graphviz.org/doc/info/attrs.html[0m. (Note that only graph attributes are allowed to be defined, not edge nor node attributes are supported yet.) [1X3.6-1 DrawingsExtraGraphAttributes[0m [2X> DrawingsExtraGraphAttributes_______________________________[0Xglobal variable This is a global variable which holds a list of strings, each of which defines a [13Xdot[0m graph attribute. This variable is [13Xnot[0m intended to be modified by the user directly, but can be used to check which extra attributes are currently defined. To set the attributes, please use [2XSetDrawingsExtraGraphAttributes[0m ([14X3.6-2[0m). If [10XDrawingsExtraGraphAttributes[0m holds the value [10X"none"[0m then the default [13Xdot[0m settings will be used. Use [2XClearDrawingsExtraGraphAttributes[0m ([14X3.6-3[0m) to set it to [10X"none"[0m. [1X3.6-2 SetDrawingsExtraGraphAttributes[0m [2X> SetDrawingsExtraGraphAttributes( [0X[3XL[0X[2X ) _____________________________[0Xfunction This is the function to define the drawing's graph attributes (see [7Xhttp://graphviz.org/doc/info/attrs.html[0m for a list and explanation of them). the argument [3XL[0m is a list of strings, each of which defines a [13Xdot[0m graph attribute. For example, if we wanted to define the graph size to be 7x9 (in inches), we would call [10XSetDrawingsExtraGraphAttributes(["size=7,9"]);[0m. If we also wanted to define the graph to be displayed in landscape mode we would call [10XSetDrawingsExtraGraphAttributes(["size=7,9", "rotate=90"]);[0m. If, in addition we wanted to define the background color to be, for example, pink, we would call [10XSetDrawingsExtraGraphAttributes(["size=7,9", "rotate=90", "bgcolor=pink"]);[0m. After defining the attributes, any command that creates a drawing will use the last defined attributes. To set them back to the defaults, please use [2XClearDrawingsExtraGraphAttributes[0m ([14X3.6-3[0m). [4X--------------------------- Example ----------------------------[0X [4Xgap> DrawingsExtraGraphAttributes;[0X [4X"none"[0X [4X[0X [4X[0X [4Xgap> SetDrawingsExtraGraphAttributes(["size=7,9"]);[0X [4X[0X [4Xgap> DrawingsExtraGraphAttributes;[0X [4X[ "size=7,9" ][0X [4X[0X [4X[0X [4Xgap> SetDrawingsExtraGraphAttributes(["size=7,9", "rotate=90"]);[0X [4X[0X [4Xgap> DrawingsExtraGraphAttributes;[0X [4X[ "size=7,9", "rotate=90" ][0X [4X[0X [4X[0X [4Xgap> SetDrawingsExtraGraphAttributes(["size=7,9", "rotate=90", "bgcolor=pink"]);[0X [4X[0X [4Xgap> DrawingsExtraGraphAttributes;[0X [4X[ "size=7,9", "rotate=90", "bgcolor=pink" ][0X [4X[0X [4X[0X [4Xgap> ClearDrawingsExtraGraphAttributes();[0X [4X[0X [4Xgap> DrawingsExtraGraphAttributes;[0X [4X"none"[0X [4X------------------------------------------------------------------[0X [1X3.6-3 ClearDrawingsExtraGraphAttributes[0m [2X> ClearDrawingsExtraGraphAttributes( [0X[3X[0X[2X ) ____________________________[0Xfunction This function sets the graph drawing attributes back to [13Xdot[0m's defaults.