  
  [1X4 [33X[0;0YDrawing the Faithful Transitive Permutation Representation Graph[133X[101X
  
  
  [1X4.1 [33X[0;0YDrawing functions[133X[101X
  
  [33X[0;0YOne  of  the  advantages  of  Faithful Transitive Permutation Representation
  Graph are on Groups generated by involutions, such as C-groups. These graphs
  are very useful in the research of abstract polytopes and hypertopes, mainly
  called as "Schreier coset graphs" or "CPR graphs" in this area. Here we will
  give  a  function that builds this graph given a permutation group generated
  by  involutions,  a group and one of its core-free subgroups or by giving an
  isomorphism  of  the  group  into  the symmetric group acting faithfully and
  transitively  on  its  domain.  To use Graphviz in order to create the image
  file,  you  need to be running GAP on a Linux Environment (Windows Subsystem
  for Linux is supported), with graphviz installed.[133X
  
  [1X4.1-1 DotFTPRGraph[101X
  
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3XG[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3XG[103X[, [3Xgenerators_name[103X] ) [32X operation[133X
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3Xmap[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3Xmap[103X[, [3Xgenerators_name[103X] ) [32X operation[133X
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3XH[103X, [3XK[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XDotFTPRGraph[102X( [3XH[103X, [3XK[103X[, [3Xgenerators_name[103X] ) [32X operation[133X
  [6XReturns:[106X  [33X[0;10Ya graph written in dot[133X
  
  [33X[0;0YGiven  a  transitive  permutation group [3XG[103X, a faithful transitive permutation
  representation  of  a  group  [3Xmap[103X  or  a  group  [3XH[103X  and one of its core-free
  subgroups  [3XK[103X,  the function will output the permutation representation graph
  written  in  the  language of a Dot file. If given a list of the name of the
  generators [3Xgenerators_name[103X, these will be given to the label of their action
  on  the  graph.  Otherwise,  the  labels  will  be  [3Xr0,  r1, r2, ...[103X for the
  generators [3XG.1, G.2, G.3, ...[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:= Group((1,2),(2,3),(3,4));; H :=Subgroup(G,[(1,2),(2,3)]);;[127X[104X
    [4X[25Xgap>[125X [27Xdotprint := DotFTPRGraph(G);[127X[104X
    [4X[28X"digraph {\n1 -> 2 [label = r1,dir=none];\n 2 -> 3 [label = r2,dir=none];\n 3 \[128X[104X
    [4X[28X-> 4 [label = r3,dir=none];\n }\n"[128X[104X
    [4X[25Xgap>[125X [27XPrint(dotprint);[127X[104X
    [4X[28Xdigraph {[128X[104X
    [4X[28X1 -> 2 [label = r1,dir=none];[128X[104X
    [4X[28X 2 -> 3 [label = r2,dir=none];[128X[104X
    [4X[28X 3 -> 4 [label = r3,dir=none];[128X[104X
    [4X[28X }[128X[104X
    [4X[25Xgap>[125X [27XPrint(DotFTPRGraph(G,H,["A","B","C"]));[127X[104X
    [4X[28Xdigraph {[128X[104X
    [4X[28X3 -> 4 [label = A,dir=none];[128X[104X
    [4X[28X 2 -> 3 [label = B,dir=none];[128X[104X
    [4X[28X 1 -> 2 [label = C,dir=none];[128X[104X
    [4X[28X }[128X[104X
  [4X[32X[104X
  
  [1X4.1-2 DrawFTPRGraph[101X
  
  [33X[1;0Y[29X[2XDrawFTPRGraph[102X( [3Xarg[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan  image  of  the  faithful transitive permutation representation
            graph[133X
  
  [33X[0;0YThis global function takes as input the following arguments:[133X
  
  [30X    [33X[0;6Y[3Xarg[103X := [3Xdotstring[103X[, [3Xrec[103X][133X
  
  [30X    [33X[0;6Y[3Xarg[103X := [3XG[103X[, [3Xrec[103X][133X
  
  [30X    [33X[0;6Y[3Xarg[103X := [3Xmap[103X[,[3Xrec[103X][133X
  
  [30X    [33X[0;6Y[3Xarg[103X := [3XH[103X,[3XK[103X[,[3Xrec[103X][133X
  
  [33X[0;0YGiven  a  string  of a graph in dot [3Xdotstring[103X, this function will output and
  show an image of the graph. Alternatively, a transitive permutation group [3XG[103X,
  a faithful transitive permutation representation of a group [3Xmap[103X or a group [3XH[103X
  and  one  of  its  core-free  subgroups  [3XK[103X,  can  be  given.  This  will use
  [3XDotFTPRGraph[103X  to  calculate the [3Xdotstring[103X. Moreover, extra parameters can be
  given  as  a  form  of a record [3Xrec[103X. The set of parameters that can be given
  inside a record can be found below, with information regarding their effect:[133X
  
  [30X    [33X[0;6Y[3Xlayout[103X - (a string) the engine that is used to calculate the layout of
        the  vertices  and edges of graph to output in the dot image (not used
        for  TeX  output).  The supported layouts are "dot", "neato", "twopi",
        "circo",  "fdp",  "sfdp",  "patchwork", "osage". By default "neato" is
        used.[133X
  
  [30X    [33X[0;6Y[3Xdirectory[103X  - (a string) the name of the folder where the dot and image
        files are created. By default, a temporary folder of GAP is used.[133X
  
  [30X    [33X[0;6Y[3Xpath[103X - (a string) the path where the directory will be created. If the
        directory  is not specified, a folder "tmp.viz" will be created at the
        determined  path. If no path is given, the default path is "~/". If no
        path  nor  directory is given, it will be saved in a temporary path of
        GAP.[133X
  
  [30X    [33X[0;6Y[3Xfile[103X  -  (a  string)  the  name of the dot and image files created. By
        default, the name will be "vizpicture".[133X
  
  [30X    [33X[0;6Y[3Xfiletype[103X  -  (a  string)  the image file type that will be created. By
        default, the filetype will be "pdf".[133X
  
  [30X    [33X[0;6Y[3Xviewer[103X - (a string) the name of the visualizer used to open the image.
        The  supported  ones  are  "evince","xpdf","xdg-open","okular",  "gv",
        "open" (for the different System Architectures).[133X
  
  [30X    [33X[0;6Y[3Xtikz[103X - (a boolean) if true, then the function will produce a TeX file,
        compile it to pdf and open.[133X
  
  [30X    [33X[0;6Y[3Xviewtexfile[103X  -  (a  boolean) if true, then the function will produce a
        TeX  file and return the text of the Tex file (but it will not compile
        and open any pdf from the TeX file).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XG:= SymmetricGroup(4);;H:= Subgroup(G,[(1,2)]);;K:= Subgroup(G,[(1,2,3)]);;[127X[104X
    [4X[25Xgap>[125X [27XDrawFTPRGraph(G);[127X[104X
    [4X[25Xgap>[125X [27Xtexfile := DrawFTPRGraph(G,H,rec(viewtexfile := true));; [127X[104X
    [4X[25Xgap>[125X [27XPrint(texfile{[1..115]});[127X[104X
    [4X[28X\documentclass{article}[128X[104X
    [4X[28X\usepackage[x11names, svgnames, rgb]{xcolor}[128X[104X
    [4X[28X\usepackage[utf8]{inputenc}[128X[104X
    [4X[28X\usepackage{tikz}[128X[104X
    [4X[25Xgap>[125X [27XDrawFTPRGraph(FactorCosetAction(G,K),rec(directory := "myfolder", layout:="fdp"));;[127X[104X
  [4X[32X[104X
  
  [1X4.1-3 TeXFTPRGraph[101X
  
  [33X[1;0Y[29X[2XTeXFTPRGraph[102X( [3Xarg[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan  image  of  the  faithful transitive permutation representation
            graph[133X
  
  [33X[0;0YThe same as [3XDrawFTPRGraph[103X with the parameter [3Xviewtexfile := true[103X.[133X
  
  [1X4.1-4 DrawTeXFTPRGraph[101X
  
  [33X[1;0Y[29X[2XDrawTeXFTPRGraph[102X( [3Xarg[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Yan  image  of  the  faithful transitive permutation representation
            graph[133X
  
  [33X[0;0YThe same as [3XDrawFTPRGraph[103X with the parameter [3Xtikz := true[103X.[133X
  
  
  [1X4.2 [33X[0;0YInformation Level of Drawing Functions[133X[101X
  
  [33X[0;0YWe  can  set  the  amount  of  verbosity  of  the functions "DrawFTPRGraph",
  "TeXFTPRGraph"  and  "DrawTeXFTPRGraph",  which  can  be  controlled  by the
  [3XInfoDrawFTPR[103X  variable.  As  of  right now, there are only two levels of the
  [3XInfoDrawFTPR[103X  and,  by default, the level is set as 1. To change to level 2,
  you can do the following:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSetInfoLevel(InfoDrawFTPR,2);[127X[104X
  [4X[32X[104X
  
  [33X[0;0YParticularly,  [3XInfoDrawFTPR[103X  in  level 2 will give information regarding the
  location in which the files are being created and processed.[133X
  
