Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/digraphs/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 27.8.2025 mit Größe 917 kB image not shown  

Quelle  main.tex   Sprache: Latech

 
% generated by GAPDoc2LaTeX from XML source (Frank Luebeck)
\documentclass[a4paper,11pt]{report}

            \usepackage{a4wide}
            \newcommand{\bbZ}{\mathbb{Z}}
        
\usepackage[top=37mm,bottom=37mm,left=27mm,right=27mm]{geometry}
\sloppy
\pagestyle{myheadings}
\usepackage{amssymb}
\usepackage[utf8]{inputenc}
\usepackage{makeidx}
\makeindex
\usepackage{color}
\definecolor{FireBrick}{rgb}{0.5812,0.0074,0.0083}
\definecolor{RoyalBlue}{rgb}{0.0236,0.0894,0.6179}
\definecolor{RoyalGreen}{rgb}{0.0236,0.6179,0.0894}
\definecolor{RoyalRed}{rgb}{0.6179,0.0236,0.0894}
\definecolor{LightBlue}{rgb}{0.8544,0.9511,1.0000}
\definecolor{Black}{rgb}{0.0,0.0,0.0}

\definecolor{linkColor}{rgb}{0.0,0.0,0.554}
\definecolor{citeColor}{rgb}{0.0,0.0,0.554}
\definecolor{fileColor}{rgb}{0.0,0.0,0.554}
\definecolor{urlColor}{rgb}{0.0,0.0,0.554}
\definecolor{promptColor}{rgb}{0.0,0.0,0.589}
\definecolor{brkpromptColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapinputColor}{rgb}{0.589,0.0,0.0}
\definecolor{gapoutputColor}{rgb}{0.0,0.0,0.0}

%%  for a long time these were red and blue by default,
%%  now black, but keep variables to overwrite
\definecolor{FuncColor}{rgb}{0.0,0.0,0.0}
%% strange name because of pdflatex bug:
\definecolor{Chapter }{rgb}{0.0,0.0,0.0}
\definecolor{DarkOlive}{rgb}{0.1047,0.2412,0.0064}


\usepackage{fancyvrb}

\usepackage{mathptmx,helvet}
\usepackage[T1]{fontenc}
\usepackage{textcomp}


\usepackage[
            pdftex=true,
            bookmarks=true,        
            a4paper=true,
            pdftitle={Written with GAPDoc},
            pdfcreator={LaTeX with hyperref package / GAPDoc},
            colorlinks=true,
            backref=page,
            breaklinks=true,
            linkcolor=linkColor,
            citecolor=citeColor,
            filecolor=fileColor,
            urlcolor=urlColor,
            pdfpagemode={UseNone}, 
           ]{hyperref}

\newcommand{\maintitlesize}{\fontsize{50}{55}\selectfont}

% write page numbers to a .pnr log file for online help
\newwrite\pagenrlog
\immediate\openout\pagenrlog =\jobname.pnr
\immediate\write\pagenrlog{PAGENRS := [}
\newcommand{\logpage}[1]{\protect\write\pagenrlog{#1, \thepage,}}
%% were never documented, give conflicts with some additional packages

\newcommand{\GAP}{\textsf{GAP}}

%% nicer description environments, allows long labels
\usepackage{enumitem}
\setdescription{style=nextline}

%% depth of toc
\setcounter{tocdepth}{1}





%% command for ColorPrompt style examples
\newcommand{\gapprompt}[1]{\color{promptColor}{\bfseries #1}}
\newcommand{\gapbrkprompt}[1]{\color{brkpromptColor}{\bfseries #1}}
\newcommand{\gapinput}[1]{\color{gapinputColor}{#1}}


\begin{document}

\logpage{[ 0, 0, 0 ]}
\begin{titlepage}
\mbox{}\vfill

\begin{center}{\maintitlesize \textbf{ Digraphs \mbox{}}}\\
\vfill

\hypersetup{pdftitle= Digraphs }
\markright{\scriptsize \mbox{}\hfill  Digraphs  \hfill\mbox{}}
{\Huge \textbf{ Graphs, digraphs, and multidigraphs in \textsf{GAP} \mbox{}}}\\
\vfill

{\Huge  1.13.1 \mbox{}}\\[1cm]
{ 27 September 2025 \mbox{}}\\[1cm]
\mbox{}\\[2cm]
{\Large \textbf{ Jan De Beule\\
    \mbox{}}}\\
{\Large \textbf{ Julius Jonusas\\
   \mbox{}}}\\
{\Large \textbf{ James Mitchell\\
    \mbox{}}}\\
{\Large \textbf{ Wilf A. Wilson\\
   \mbox{}}}\\
{\Large \textbf{ Michael Young\\
    \mbox{}}}\\
{\Large \textbf{ Marina Anagnostopoulou\texttt{\symbol{45}}Merkouri\\
   \mbox{}}}\\
{\Large \textbf{ Finn Buck\\
   \mbox{}}}\\
{\Large \textbf{ Stuart Burrell\\
   \mbox{}}}\\
{\Large \textbf{ Graham Campbell\\
 \mbox{}}}\\
{\Large \textbf{ Raiyan Chowdhury\\
 \mbox{}}}\\
{\Large \textbf{ Reinis Cirpons\\
   \mbox{}}}\\
{\Large \textbf{ Ashley Clayton\\
   \mbox{}}}\\
{\Large \textbf{ Tom Conti\texttt{\symbol{45}}Leslie\\
   \mbox{}}}\\
{\Large \textbf{ Joseph Edwards\\
    \mbox{}}}\\
{\Large \textbf{ Luna Elliott\\
   \mbox{}}}\\
{\Large \textbf{ Jan Engelhardt\\
   \mbox{}}}\\
{\Large \textbf{ Isuru Fernando\\
  \mbox{}}}\\
{\Large \textbf{ Ewan Gilligan\\
  \mbox{}}}\\
{\Large \textbf{ Gillis Frankie\\
  \mbox{}}}\\
{\Large \textbf{ Sebastian Gutsche\\
  \mbox{}}}\\
{\Large \textbf{ Samantha Harper\\
  \mbox{}}}\\
{\Large \textbf{ Max Horn\\
    \mbox{}}}\\
{\Large \textbf{ Harry Jack\\
  \mbox{}}}\\
{\Large \textbf{ Christopher Jefferson\\
    \mbox{}}}\\
{\Large \textbf{ Malachi Johns\\
  \mbox{}}}\\
{\Large \textbf{ Olexandr Konovalov\\
    \mbox{}}}\\
{\Large \textbf{ Hyeokjun Kwon\\
  \mbox{}}}\\
{\Large \textbf{ Aidan Lau\\
 \mbox{}}}\\
{\Large \textbf{ Andrea Lee\\
  \mbox{}}}\\
{\Large \textbf{ Saffron McIver\\
  \mbox{}}}\\
{\Large \textbf{ Seyyed Ali Mohammadiyeh\\
  \mbox{}}}\\
{\Large \textbf{ Michael Orlitzky\\
   \mbox{}}}\\
{\Large \textbf{ Matthew Pancer\\
  \mbox{}}}\\
{\Large \textbf{ Markus Pfeiffer\\
   \mbox{}}}\\
{\Large \textbf{ Daniel Pointon\\
  \mbox{}}}\\
{\Large \textbf{ Pramoth Ragavan\\
  \mbox{}}}\\
{\Large \textbf{ Lea Racine\\
   \mbox{}}}\\
{\Large \textbf{ Christopher Russell\\
 \mbox{}}}\\
{\Large \textbf{ Artur Schaefer\\
  \mbox{}}}\\
{\Large \textbf{ Isabella Scott\\
  \mbox{}}}\\
{\Large \textbf{ Kamran Sharma\\
   \mbox{}}}\\
{\Large \textbf{ Finn Smith\\
   \mbox{}}}\\
{\Large \textbf{ Ben Spiers\\
  \mbox{}}}\\
{\Large \textbf{ Maria Tsalakou\\
    \mbox{}}}\\
{\Large \textbf{ Agastyaa Vishvanath\\
  \mbox{}}}\\
{\Large \textbf{ Meike Weiss\\
    \mbox{}}}\\
{\Large \textbf{ Murray Whyte\\
   \mbox{}}}\\
{\Large \textbf{ Fabian Zickgraf\\
  \mbox{}}}\\
\hypersetup{pdfauthor= Jan De Beule\\
    ;  Julius Jonusas\\
   ;  James Mitchell\\
    ;  Wilf A. Wilson\\
   ;  Michael Young\\
    ;  Marina Anagnostopoulou\texttt{\symbol{45}}Merkouri\\
   ;  Finn Buck\\
   ;  Stuart Burrell\\
   ;  Graham Campbell\\
 ;  Raiyan Chowdhury\\
 ;  Reinis Cirpons\\
   ;  Ashley Clayton\\
   ;  Tom Conti\texttt{\symbol{45}}Leslie\\
   ;  Joseph Edwards\\
    ;  Luna Elliott\\
   ;  Jan Engelhardt\\
   ;  Isuru Fernando\\
  ;  Ewan Gilligan\\
  ;  Gillis Frankie\\
  ;  Sebastian Gutsche\\
  ;  Samantha Harper\\
  ;  Max Horn\\
    ;  Harry Jack\\
  ;  Christopher Jefferson\\
    ;  Malachi Johns\\
  ;  Olexandr Konovalov\\
    ;  Hyeokjun Kwon\\
  ;  Aidan Lau\\
 ;  Andrea Lee\\
  ;  Saffron McIver\\
  ;  Seyyed Ali Mohammadiyeh\\
  ;  Michael Orlitzky\\
   ;  Matthew Pancer\\
  ;  Markus Pfeiffer\\
   ;  Daniel Pointon\\
  ;  Pramoth Ragavan\\
  ;  Lea Racine\\
   ;  Christopher Russell\\
 ;  Artur Schaefer\\
  ;  Isabella Scott\\
  ;  Kamran Sharma\\
   ;  Finn Smith\\
   ;  Ben Spiers\\
  ;  Maria Tsalakou\\
    ;  Agastyaa Vishvanath\\
  ;  Meike Weiss\\
    ;  Murray Whyte\\
   ;  Fabian Zickgraf\\
  }
\end{center}\vfill

\mbox{}\\
{\mbox{}\\
\small \noindent \textbf{ Jan De Beule\\
    }  Email: \href{mailto://jdebeule@cage.ugent.be} {\texttt{jdebeule@cage.ugent.be}}\\
  Homepage: \href{https://researchportal.vub.be/en/persons/jan-de-beule} {\texttt{https://researchportal.vub.be/en/persons/jan\texttt{\symbol{45}}de\texttt{\symbol{45}}beule}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Vrije Universiteit Brussel, Vakgroep Wiskunde, Pleinlaan 2, B
\texttt{\symbol{45}} 1050 Brussels, Belgium\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Julius Jonusas\\
   }  Email: \href{mailto://j.jonusas@gmail.com} {\texttt{j.jonusas@gmail.com}}\\
  Homepage: \href{http://julius.jonusas.work} {\texttt{http://julius.jonusas.work}}}\\
{\mbox{}\\
\small \noindent \textbf{ James Mitchell\\
    }  Email: \href{mailto://jdm3@st-andrews.ac.uk} {\texttt{jdm3@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://jdbm.me} {\texttt{https://jdbm.me}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Wilf A. Wilson\\
   }  Email: \href{mailto://gap@wilf-wilson.net} {\texttt{gap@wilf\texttt{\symbol{45}}wilson.net}}\\
  Homepage: \href{https://wilf.me} {\texttt{https://wilf.me}}}\\
{\mbox{}\\
\small \noindent \textbf{ Michael Young\\
    }  Email: \href{mailto://mct25@st-andrews.ac.uk} {\texttt{mct25@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://myoung.uk/work/} {\texttt{https://myoung.uk/work/}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Marina Anagnostopoulou\texttt{\symbol{45}}Merkouri\\
   }  Email: \href{mailto://mam49@st-andrews.ac.uk} {\texttt{mam49@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Finn Buck\\
   }  Email: \href{mailto://finneganlbuck@gmail.com} {\texttt{finneganlbuck@gmail.com}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Stuart Burrell\\
   }  Email: \href{mailto://stuartburrell1994@gmail.com} {\texttt{stuartburrell1994@gmail.com}}\\
  Homepage: \href{https://stuartburrell.github.io} {\texttt{https://stuartburrell.github.io}}}\\
{\mbox{}\\
\small \noindent \textbf{ Reinis Cirpons\\
   }  Email: \href{mailto://rc234@st-andrews.ac.uk} {\texttt{rc234@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Ashley Clayton\\
   }  Email: \href{mailto://ac323@st-andrews.ac.uk} {\texttt{ac323@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Tom Conti\texttt{\symbol{45}}Leslie\\
   }  Email: \href{mailto://tom.contileslie@gmail.com} {\texttt{tom.contileslie@gmail.com}}\\
  Homepage: \href{https://tomcontileslie.com} {\texttt{https://tomcontileslie.com}}}\\
{\mbox{}\\
\small \noindent \textbf{ Joseph Edwards\\
    }  Email: \href{mailto://jde1@st-andrews.ac.uk} {\texttt{jde1@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://github.com/Joseph-Edwards} {\texttt{https://github.com/Joseph\texttt{\symbol{45}}Edwards}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Luna Elliott\\
   }  Email: \href{mailto://luna.elliott142857@gmail.com} {\texttt{luna.elliott142857@gmail.com}}\\
  Homepage: \href{https://research.manchester.ac.uk/en/persons/luna-elliott} {\texttt{https://research.manchester.ac.uk/en/persons/luna\texttt{\symbol{45}}elliott}}}\\
{\mbox{}\\
\small \noindent \textbf{ Jan Engelhardt\\
   }  Email: \href{mailto://jengelh@inai.de} {\texttt{jengelh@inai.de}}\\
  Homepage: \href{https://inai.de} {\texttt{https://inai.de}}}\\
{\mbox{}\\
\small \noindent \textbf{ Isuru Fernando\\
  }  Email: \href{mailto://isuruf@gmail.com} {\texttt{isuruf@gmail.com}}}\\
{\mbox{}\\
\small \noindent \textbf{ Ewan Gilligan\\
  }  Email: \href{mailto://eg207@st-andrews.ac.uk} {\texttt{eg207@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Gillis Frankie\\
  }  Email: \href{mailto://fotg1@st-andrews.ac.uk} {\texttt{fotg1@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Sebastian Gutsche\\
  }  Email: \href{mailto://gutsche@momo.math.rwth-aachen.de} {\texttt{gutsche@momo.math.rwth\texttt{\symbol{45}}aachen.de}}}\\
{\mbox{}\\
\small \noindent \textbf{ Samantha Harper\\
  }  Email: \href{mailto://seh25@st-andrews.ac.uk} {\texttt{seh25@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Max Horn\\
    }  Email: \href{mailto://mhorn@rptu.de} {\texttt{mhorn@rptu.de}}\\
  Homepage: \href{https://www.quendi.de/math} {\texttt{https://www.quendi.de/math}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Fachbereich Mathematik, RPTU Kaiserslautern\texttt{\symbol{45}}Landau,
Gottlieb\texttt{\symbol{45}}Daimler\texttt{\symbol{45}}Stra{\ss}e 48, 67663
Kaiserslautern, Germany\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Harry Jack\\
  }  Email: \href{mailto://hrj4@st-andrews.ac.uk} {\texttt{hrj4@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Christopher Jefferson\\
    }  Email: \href{mailto://caj21@st-andrews.ac.uk} {\texttt{caj21@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://heather.cafe/} {\texttt{https://heather.cafe/}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Malachi Johns\\
  }  Email: \href{mailto://zlj1@st-andrews.ac.uk} {\texttt{zlj1@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Olexandr Konovalov\\
    }  Email: \href{mailto://obk1@st-andrews.ac.uk} {\texttt{obk1@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://olexandr-konovalov.github.io/} {\texttt{https://olexandr\texttt{\symbol{45}}konovalov.github.io/}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Hyeokjun Kwon\\
  }  Email: \href{mailto://hk78@st-andrews.ac.uk} {\texttt{hk78@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Andrea Lee\\
  }  Email: \href{mailto://ahwl1@st-andrews.ac.uk} {\texttt{ahwl1@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Saffron McIver\\
  }  Email: \href{mailto://sm544@st-andrews.ac.uk} {\texttt{sm544@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Seyyed Ali Mohammadiyeh\\
  }  Email: \href{mailto://MaxBaseCode@Gmail.Com} {\texttt{MaxBaseCode@Gmail.Com}}}\\
{\mbox{}\\
\small \noindent \textbf{ Michael Orlitzky\\
   }  Email: \href{mailto://michael@orlitzky.com} {\texttt{michael@orlitzky.com}}\\
  Homepage: \href{https://michael.orlitzky.com/} {\texttt{https://michael.orlitzky.com/}}}\\
{\mbox{}\\
\small \noindent \textbf{ Matthew Pancer\\
  }  Email: \href{mailto://mp322@st-andrews.ac.uk} {\texttt{mp322@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Markus Pfeiffer\\
   }  Email: \href{mailto://markus.pfeiffer@morphism.de} {\texttt{markus.pfeiffer@morphism.de}}\\
  Homepage: \href{https://markusp.morphism.de/} {\texttt{https://markusp.morphism.de/}}}\\
{\mbox{}\\
\small \noindent \textbf{ Daniel Pointon\\
  }  Email: \href{mailto://dp211@st-andrews.ac.uk} {\texttt{dp211@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Pramoth Ragavan\\
  }  Email: \href{mailto://107881923+pramothragavan@users.noreply.github.com} {\texttt{107881923+pramothragavan@users.noreply.github.com}}}\\
{\mbox{}\\
\small \noindent \textbf{ Lea Racine\\
   }  Email: \href{mailto://lr217@st-andrews.ac.uk} {\texttt{lr217@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Artur Schaefer\\
  }  Email: \href{mailto://as305@st-and.ac.uk} {\texttt{as305@st\texttt{\symbol{45}}and.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Isabella Scott\\
  }  Email: \href{mailto://iscott@uchicago.edu} {\texttt{iscott@uchicago.edu}}}\\
{\mbox{}\\
\small \noindent \textbf{ Kamran Sharma\\
   }  Email: \href{mailto://kks4@st-andrews.ac.uk} {\texttt{kks4@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Jack Cole Building, North Haugh, St Andrews, Fife, KY16 9SX, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Finn Smith\\
   }  Email: \href{mailto://fls3@st-andrews.ac.uk} {\texttt{fls3@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Ben Spiers\\
  }  Email: \href{mailto://bspiers972@outlook.com} {\texttt{bspiers972@outlook.com}}}\\
{\mbox{}\\
\small \noindent \textbf{ Maria Tsalakou\\
    }  Email: \href{mailto://mt200@st-andrews.ac.uk} {\texttt{mt200@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Homepage: \href{https://mariatsalakou.github.io/} {\texttt{https://mariatsalakou.github.io/}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Agastyaa Vishvanath\\
  }  Email: \href{mailto://av215@st-andrews.ac.uk} {\texttt{av215@st\texttt{\symbol{45}}andrews.ac.uk}}}\\
{\mbox{}\\
\small \noindent \textbf{ Meike Weiss\\
    }  Email: \href{mailto://weiss@art.rwth-aachen.de} {\texttt{weiss@art.rwth\texttt{\symbol{45}}aachen.de}}\\
  Homepage: \href{https://bit.ly/4e6pUeP} {\texttt{https://bit.ly/4e6pUeP}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Chair of Algebra and Representation Theory, Pontdriesch
10\texttt{\symbol{45}}16, 52062 Aachen\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Murray Whyte\\
   }  Email: \href{mailto://mw231@st-andrews.ac.uk} {\texttt{mw231@st\texttt{\symbol{45}}andrews.ac.uk}}\\
  Address\begin{minipage}[t]{8cm}\noindent
 Mathematical Institute, North Haugh, St Andrews, Fife, KY16 9SS, Scotland\\
 \end{minipage}
}\\
{\mbox{}\\
\small \noindent \textbf{ Fabian Zickgraf\\
  }  Email: \href{mailto://f.zickgraf@dashdos.com} {\texttt{f.zickgraf@dashdos.com}}}\\
\end{titlepage}

\newpage\setcounter{page}{2}
{\small 
\section*{Abstract}
\logpage{[ 0, 0, 1 ]}
 The \textsf{Digraphs} package is a \textsf{GAP} package containing methods for graphs, digraphs, and multidigraphs. \mbox{}}\\[1cm]
{\small 
\section*{Copyright}
\logpage{[ 0, 0, 2 ]}
 Jan De Beule, Julius Jonu{\v s}as, James D. Mitchell, Wilf A. Wilson, Michael
Young et al.

 \textsf{Digraphs} is free software; you can redistribute it and/or modify it under the terms of
the \hrefhttps://www.fsf.org/licenses/gpl.html} {GNU General Public License} as published by the Free Software Foundation; either version 3 of the License,
or (at your option) any later version. \mbox{}}\\[1cm]
{\small 
\section*{Acknowledgements}
\logpage{[ 0, 0, 3 ]}
 We would like to thank Christopher Jefferson for his help in including \href{http://www.tcs.tkk.fi/Software/bliss/} {bliss}  in \textsf{Digraphs}. We also gratefully acknowledge the encouragement and assistance of Leonard
Soicher, and the inspiration of his \href{https://gap-packages.github.io/grape} {GRAPE}  package, at many points throughout the development of \textsf{Digraphs}. This package's methods for computing digraph homomorphisms are based on work
by Max Neunh{\"o}ffer, and independently Artur Sch{\"a}fer. \mbox{}}\\[1cm]
\newpage

\def\contentsname{Contents\logpage{[ 0, 0, 4 ]}}

\tableofcontents
\newpage

 
\chapter{\textcolor{Chapter }{ The \textsf{Digraphs} package }}\label{The Digraphs package}
\logpage{[ 1, 0, 0 ]}
\hyperdef{L}{X7F202ABA780E595D}{}
{
  \index{Digraphs@\textsf{Digraphs} package overview} 
\section{\textcolor{Chapter }{Introduction}}\logpage{[ 1, 1, 0 ]}
\hyperdef{L}{X7DFB63A97E67C0A1}{}
{
 This is the manual for version 1.13.1 of the \textsf{Digraphs} package. This package was developed at the University of St Andrews by: 
\begin{itemize}
\item Jan De Beule,
\item Julius Jonu{\v s}as,
\item James D. Mitchell,
\item Maria Tsalakou,
\item Wilf A. Wilson, and
\item Michael C. Young.
\end{itemize}
 Additional contributions were made by many people, for which the authors are
very grateful. A full list can be found on the title page. The \textsf{Digraphs} package contains a variety of methods for efficiently creating and storing
mutable and immutable digraphs and computing information about them. Full
explanations of all the functions contained in the package are provided below. 

 If the \href{https://gap-packages.github.io/grape} {GRAPE}  package is available, it will be loaded automatically. Digraphs created with
the \textsf{Digraphs} package can be converted to \href{https://gap-packages.github.io/grape} {GRAPE}  graphs with \texttt{Graph} (\ref{Graph}), and conversely \href{https://gap-packages.github.io/grape} {GRAPE}  graphs can be converted to \textsf{Digraphs} objects with \texttt{Digraph} (\ref{Digraph}). \href{https://gap-packages.github.io/grape} {GRAPE}  is not required for \textsf{Digraphs} to run. 

 The \href{http://www.tcs.tkk.fi/Software/bliss/} {bliss}  tool \cite{JK07} is included in this package. It is an open\texttt{\symbol{45}}source tool for
computing automorphism groups and canonical forms of graphs, written by Tommi
Junttila and Petteri Kaski. Several of the methods in the \textsf{Digraphs} package rely on \href{http://www.tcs.tkk.fi/Software/bliss/} {bliss} . If the \href{https://github.com/gap-packages/NautyTracesInterface} {NautyTracesInterface}  package for GAP is available then it is also possible to use \href{https://pallini.di.uniroma1.it} {nauty}  \cite{MP14} for computing automorphism groups and canonical forms in \textsf{Digraphs}. See Section \ref{Isomorphisms and canonical labellings} for more details. 

 The \href{https://github.com/graph-algorithms/edge-addition-planarity-suite} {edge-addition-planarity-suite}  is also included in \textsf{Digraphs}; see \cite{BM04}, \cite{B06}, \cite{BM06}, and \cite{B12} . The \href{https://github.com/graph-algorithms/edge-addition-planarity-suite} {edge-addition-planarity-suite}  is an open\texttt{\symbol{45}}source implementation of the edge addition
planar graph embedding algorithm and related algorithms by John M. Boyer. See
Section \ref{Planarity} for more details. 

 From version 1.0.0 of this package, digraphs can be either mutable or
immutable. Mutable digraphs can be changed in\texttt{\symbol{45}}place by many
of the methods in the package, which avoids unnecessary copying. Immutable
digraphs cannot be changed in\texttt{\symbol{45}}place, but their advantage is
that the value of an attribute of an immutable digraph is only ever computed
once. Mutable digraphs can be converted into immutable digraphs
in\texttt{\symbol{45}}place using \texttt{MakeImmutable} (\textbf{Reference: MakeImmutable}). One of the motivations for introducing mutable digraphs in version 1.0.0 was
that in practice the authors often wanted to create a digraph and immediately
modify it (removing certain edges, loops, and so on). Before version 1.0.0,
this involved copying the digraph several times, with each copy being
discarded almost immediately. From version 1.0.0, this unnecessary copying can
be eliminated by first creating a mutable digraph, then changing it
in\texttt{\symbol{45}}place, and finally converting the mutable digraph to an
immutable one in\texttt{\symbol{45}}place (if desirable). 
\subsection{\textcolor{Chapter }{Definitions}}\label{Definitions}
\logpage{[ 1, 1, 1 ]}
\hyperdef{L}{X84541F61810C741D}{}
{
 For the purposes of this package and its documentation, the following
definitions apply: 

 A \emph{digraph} $E=(E^0,E^1,r,s)$, also known as a \emph{directed graph}, consists of a set of vertices $E^0$ and a set of edges $E^1$ together with functions $s, r: E^1 \to E^0$, called the \emph{source} and \emph{range}, respectively. The source and range of an edge is respectively the values of $s, r$ at that edge. An edge is called a \emph{loop} if its source and range are the same. A digraph is called a \emph{multidigraph} if there exist two or more edges with the same source and the same range. 

 A \emph{directed walk} on a digraph is a sequence of alternating vertices and edges $(v_1, e_1, v_2, e_2, ..., e_{n-1}, v_n)$ such that each edge $e_i$ has source $v_i$ and range $v_{i+1}$. A \emph{directed path} is a directed walk where no vertex (and hence no edge) is repeated. A \emph{directed circuit} is a directed walk where $v_1 = v_n$, and a \emph{directed cycle} is a directed circuit where where no vertex is repeated, except for $v_1 = v_n$. 

 The \emph{length} of a directed walk $(v_1, e_1, v_2, e_2, ..., e_{n-1}, v_n)$ is equal to $n-1$, the number of edges it contains. A directed walk (or path) $(v_1, e_1, v_2, e_2, ..., e_{n-1}, v_n)$ is sometimes called a directed walk (or path) \emph{from vertex $v_1$ to vertex $v_n$}. A directed walk of zero length, i.e. a sequence $(v)$ for some vertex $v$, is called \emph{trivial}. A trivial directed walk is considered to be both a circuit and a cycle, as
is the empty directed walk $()$. A \emph{simple circuit} is another name for a non\texttt{\symbol{45}}trivial and
non\texttt{\symbol{45}}empty directed cycle.

 }

 }

 }

 
\chapter{\textcolor{Chapter }{Installing \textsf{Digraphs}}}\label{Installing Digraphs}
\logpage{[ 2, 0, 0 ]}
\hyperdef{L}{X817088B27F90D596}{}
{
  
\section{\textcolor{Chapter }{For those in a hurry}}\label{For those in a hurry}
\logpage{[ 2, 1, 0 ]}
\hyperdef{L}{X7DA3059C79842BF3}{}
{
  In this section we give a brief description of how to start using \textsf{Digraphs}.

 It is assumed that you have a working copy of \textsf{GAP} with version number 4.10.0 or higher. The most
up\texttt{\symbol{45}}to\texttt{\symbol{45}}date version of \textsf{GAP} and instructions on how to install it can be obtained from the main \textsf{GAP} webpage \href{https://www.gap-system.org} {\texttt{https://www.gap\texttt{\symbol{45}}system.org}}.

 The following is a summary of the steps that should lead to a successful
installation of \textsf{Digraphs}: 
\begin{itemize}
\item  ensure that the \href{https://gap-packages.github.io/io} {IO}  package version 4.5.1 or higher is available. \href{https://gap-packages.github.io/io} {IO}  must be compiled before \textsf{Digraphs} can be loaded. 
\item  ensure that the \textsf{orb} package version 4.8.2 or higher is available. \textsf{orb} has better performance when compiled, but although compilation is recommended,
it is not required to be compiled for \textsf{Digraphs} to be loaded. 
\item  ensure that the \textsf{datastructures} package version 0.2.5 or higher is available. 
\item  \textsc{This step is optional:} certain functions in \textsf{Digraphs} require the \href{https://gap-packages.github.io/grape} {GRAPE}  package to be available; see Section \ref{The Grape package} for full details. To use these functions make sure that the \href{https://gap-packages.github.io/grape} {GRAPE}  package version 4.8.1 or higher is available. If \href{https://gap-packages.github.io/grape} {GRAPE}  is not available, then \textsf{Digraphs} can be used as normal with the exception that the functions listed in
Subsection \ref{The Grape package} will not work. 
\item  \textsc{This step is optional:} certain functions in \textsf{Digraphs} require the \href{https://github.com/gap-packages/NautyTracesInterface} {NautyTracesInterface}  package to be available.  If you want to make use of these functions, please ensure that the \href{https://github.com/gap-packages/NautyTracesInterface} {NautyTracesInterface}  package version 0.2 or higher is available. If \href{https://github.com/gap-packages/NautyTracesInterface} {NautyTracesInterface}  is not available, then \textsf{Digraphs} can be used as normal with the exception that functions whose names contain ``Nauty'' will not work. 
\item  download the package archive \texttt{digraphs\texttt{\symbol{45}}1.13.1.tar.gz.tar.gz} from \href{https://digraphs.github.io/Digraphs/} {the Digraphs package webpage}
\item  unzip and untar the file, this should create a directory called \texttt{digraphs\texttt{\symbol{45}}1.13.1.tar.gz}. 
\item  locate the \texttt{pkg} directory of your \textsf{GAP} directory, which contains the directories \texttt{lib}, \texttt{doc} and so on. Move the directory \texttt{digraphs\texttt{\symbol{45}}1.13.1.tar.gz} into the \texttt{pkg} directory. 
\item  it is necessary to compile the \textsf{Digraphs} package. Inside the \texttt{pkg/digraphs\texttt{\symbol{45}}1.13.1.tar.gz} directory, type 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=]
  ./configure
  make
\end{Verbatim}
 Further information about this step can be found in Section \ref{Compiling the kernel module}
\item  start \textsf{GAP} in the usual way (i.e. type \texttt{gap} at the command line). 
\item  type \texttt{LoadPackage("digraphs");} 
\end{itemize}
 If you want to check that the package is working correctly, you should run
some of the tests described in Section \ref{Testing your installation}. 
\subsection{\textcolor{Chapter }{Configuration options}}\label{Configuration options}
\logpage{[ 2, 1, 1 ]}
\hyperdef{L}{X7C1F2E6D860DBDEC}{}
{
  In addition to the usual autoconf generated configuration flags, the following
flags are provided. \begin{center}
\begin{tabular}{|l|l|}\hline
Option&
Meaning\\
\hline
\hline
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}enable\texttt{\symbol{45}}code\texttt{\symbol{45}}coverage}&
 enable code coverage support\\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}enable\texttt{\symbol{45}}compile\texttt{\symbol{45}}warnings}&
 enable compiler warnings\\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}enable\texttt{\symbol{45}}debug}&
 enable debug mode\\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}with\texttt{\symbol{45}}external\texttt{\symbol{45}}bliss}&
 use external \href{http://www.tcs.tkk.fi/Software/bliss/} {bliss} \\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}with\texttt{\symbol{45}}external\texttt{\symbol{45}}planarity}&
 use external \href{https://github.com/graph-algorithms/edge-addition-planarity-suite} {edge-addition-planarity-suite} \\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}with\texttt{\symbol{45}}gaproot}&
 specify root of GAP installation\\
\texttt{\texttt{\symbol{45}}\texttt{\symbol{45}}without\texttt{\symbol{45}}intrinsics}&
 do not use compiler intrinsics even if available\\
\hline
\end{tabular}\\[2mm]
\textbf{Table: }Configuration flags\end{center}

 }

 }

   
\section{\textcolor{Chapter }{Optional package dependencies}}\label{Optional package dependencies}
\logpage{[ 2, 2, 0 ]}
\hyperdef{L}{X780AA9D97EBCA95D}{}
{
   The \textsf{Digraphs} package is written in \textsf{GAP} and C code and requires the \href{https://gap-packages.github.io/io} {IO}  package. The \href{https://gap-packages.github.io/io} {IO}  package is used to read and write transformations, partial permutations, and
bipartitions to a file. 

  
\subsection{\textcolor{Chapter }{The Grape package}}\label{The Grape package}
\logpage{[ 2, 2, 1 ]}
\hyperdef{L}{X8493C7587FCF6D8B}{}
{
  The \href{https://gap-packages.github.io/grape} {GRAPE}  package must be available for the following operations to be available: 
\begin{itemize}
\item \texttt{Graph} (\ref{Graph}) with a digraph argument
\item \texttt{AsGraph} (\ref{AsGraph}) with a digraph argument
\item \texttt{Digraph} (\ref{Digraph}) with a \href{https://gap-packages.github.io/grape} {GRAPE}  graph argument
\end{itemize}
 If \href{https://gap-packages.github.io/grape} {GRAPE}  is not available, then \textsf{Digraphs} can be used as normal with the exception that the functions above will not
work. }

 }

   
\section{\textcolor{Chapter }{Compiling the kernel module}}\label{Compiling the kernel module}
\logpage{[ 2, 3, 0 ]}
\hyperdef{L}{X849F6196875A6DF5}{}
{
  The \textsf{Digraphs} package has a \textsf{GAP} kernel component in C which should be compiled. This component contains
certain low\texttt{\symbol{45}}level functions required by \textsf{Digraphs}. 

 It is not possible to use the \textsf{Digraphs} package without compiling it.

 To compile the kernel component inside the \texttt{pkg/digraphs\texttt{\symbol{45}}1.13.1.tar.gz} directory, type 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=]
  
  ./configure
  make
\end{Verbatim}
 

 If you installed the package in another 'pkg' directory than the standard
'pkg' directory in your \textsf{GAP} installation, then you have to do two things. Firstly during compilation you
have to use the option
'\texttt{\symbol{45}}\texttt{\symbol{45}}with\texttt{\symbol{45}}gaproot=PATH'
of the 'configure' script where 'PATH' is a path to the main GAP root
directory (if not given the default '../..' is assumed).

 If you installed \textsf{GAP} on several architectures, you must execute the configure/make step for each of
the architectures. You can either do this immediately after configuring and
compiling GAP itself on this architecture, or alternatively set the
environment variable 'CONFIGNAME' to the name of the configuration you used
when compiling GAP before running './configure'. Note however that your
compiler choice and flags (environment variables 'CC' and 'CFLAGS') need to be
chosen to match the setup of the original GAP compilation. For example you
have to specify 32\texttt{\symbol{45}}bit or 64\texttt{\symbol{45}}bit mode
correctly! }

   
\section{\textcolor{Chapter }{Rebuilding the documentation}}\label{Rebuilding the documentation}
\logpage{[ 2, 4, 0 ]}
\hyperdef{L}{X857CBE5484CF703A}{}
{
  The \textsf{Digraphs} package comes complete with pdf, html, and text versions of the documentation.
However, you might find it necessary, at some point, to rebuild the
documentation. To rebuild the documentation, please use the function \texttt{DigraphsMakeDoc} (\ref{DigraphsMakeDoc}). 

\subsection{\textcolor{Chapter }{DigraphsMakeDoc}}
\logpage{[ 2, 4, 1 ]}\nobreak
\hyperdef{L}{X870631C38610AC25}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphsMakeDoc({\mdseries\slshape })\index{DigraphsMakeDoc@\texttt{DigraphsMakeDoc}}
\label{DigraphsMakeDoc}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
Nothing



 This function should be called with no argument to compile the \textsf{Digraphs} documentation. }

 }

   
\section{\textcolor{Chapter }{Testing your installation}}\label{Testing your installation}
\logpage{[ 2, 5, 0 ]}
\hyperdef{L}{X7862D3F37C5BBDEF}{}
{
  In this section we describe how to test that \textsf{Digraphs} is working as intended. To test that \textsf{Digraphs} is installed correctly use \texttt{DigraphsTestInstall} (\ref{DigraphsTestInstall}) or for more extensive tests use \texttt{DigraphsTestStandard} (\ref{DigraphsTestStandard}). 

 If something goes wrong, then please review the instructions in Section \ref{For those in a hurry} and ensure that \textsf{Digraphs} has been properly installed. If you continue having problems, please use the \href{https://github.com/digraphs/Digraphs/issues} {issue tracker} to report the issues you are having. 

\subsection{\textcolor{Chapter }{DigraphsTestInstall}}
\logpage{[ 2, 5, 1 ]}\nobreak
\hyperdef{L}{X86AF4DAE80B978DA}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphsTestInstall({\mdseries\slshape })\index{DigraphsTestInstall@\texttt{DigraphsTestInstall}}
\label{DigraphsTestInstall}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
\texttt{true} or \texttt{false}.



 This function can be called without arguments to test your installation of \textsf{Digraphs} is working correctly. These tests should take no more than a few seconds to
complete. To test more comprehensively that \textsf{Digraphs} is working correctly, use \texttt{DigraphsTestStandard} (\ref{DigraphsTestStandard}). }

 

\subsection{\textcolor{Chapter }{DigraphsTestStandard}}
\logpage{[ 2, 5, 2 ]}\nobreak
\hyperdef{L}{X7A20088B7C406C4A}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphsTestStandard({\mdseries\slshape })\index{DigraphsTestStandard@\texttt{DigraphsTestStandard}}
\label{DigraphsTestStandard}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
\texttt{true} or \texttt{false}.



 This function can be called without arguments to test all of the methods
included in \textsf{Digraphs}. These tests should take less than a minute to complete. 

 To quickly test that \textsf{Digraphs} is installed correctly use \texttt{DigraphsTestInstall} (\ref{DigraphsTestInstall}). For a more thorough test, use \texttt{DigraphsTestExtreme} (\ref{DigraphsTestExtreme}). }

 

\subsection{\textcolor{Chapter }{DigraphsTestExtreme}}
\logpage{[ 2, 5, 3 ]}\nobreak
\hyperdef{L}{X7885EF3E785D4298}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphsTestExtreme({\mdseries\slshape })\index{DigraphsTestExtreme@\texttt{DigraphsTestExtreme}}
\label{DigraphsTestExtreme}
}\hfill{\scriptsize (function)}}\\
\textbf{\indent Returns:}
\texttt{true} or \texttt{false}.



 This function should be called with no argument. It executes a series of very
demanding tests, which measure the performance of a variety of functions on
large examples. These tests take a long time to complete, at least several
minutes. 

 For these tests to complete, the digraphs library \texttt{digraphs\texttt{\symbol{45}}lib} must be downloaded and placed in the \texttt{digraphs} directory in a subfolder named \texttt{digraphs\texttt{\symbol{45}}lib}. This library can be found on the \textsf{Digraphs} website. }

 }

   }

 
\chapter{\textcolor{Chapter }{Creating digraphs}}\label{Creating digraphs}
\logpage{[ 3, 0, 0 ]}
\hyperdef{L}{X7D34861E863A5D93}{}
{
 In this chapter we describe how to create digraphs.

 
\section{\textcolor{Chapter }{Creating digraphs}}\logpage{[ 3, 1, 0 ]}
\hyperdef{L}{X7D34861E863A5D93}{}
{
 

\subsection{\textcolor{Chapter }{IsDigraph}}
\logpage{[ 3, 1, 1 ]}\nobreak
\hyperdef{L}{X7877ADC77F85E630}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsDigraph\index{IsDigraph@\texttt{IsDigraph}}
\label{IsDigraph}
}\hfill{\scriptsize (Category)}}\\


 Every digraph in \textsf{Digraphs} belongs to the category \texttt{IsDigraph}. Some basic attributes and operations for digraphs are \texttt{DigraphVertices} (\ref{DigraphVertices}), \texttt{DigraphEdges} (\ref{DigraphEdges}), and \texttt{OutNeighbours} (\ref{OutNeighbours}). }

 

\subsection{\textcolor{Chapter }{IsMutableDigraph}}
\logpage{[ 3, 1, 2 ]}\nobreak
\hyperdef{L}{X7D7EDF83820ED6F5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsMutableDigraph\index{IsMutableDigraph@\texttt{IsMutableDigraph}}
\label{IsMutableDigraph}
}\hfill{\scriptsize (Category)}}\\


 \texttt{IsMutableDigraph} is a synonym for \texttt{IsDigraph} (\ref{IsDigraph}) and \texttt{IsMutable} (\textbf{Reference: IsMutable}). A mutable digraph may be changed in\texttt{\symbol{45}}place by methods in
the \textsf{Digraphs} package, and is not attribute\texttt{\symbol{45}}storing {\textendash} see \texttt{IsAttributeStoringRep} (\textbf{Reference: IsAttributeStoringRep}). 

 A mutable digraph may be converted into an immutable
attribute\texttt{\symbol{45}}storing digraph by calling \texttt{MakeImmutable} (\textbf{Reference: MakeImmutable}) on the digraph. }

 

\subsection{\textcolor{Chapter }{IsImmutableDigraph}}
\logpage{[ 3, 1, 3 ]}\nobreak
\hyperdef{L}{X7CAFAA89804F80BD}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsImmutableDigraph\index{IsImmutableDigraph@\texttt{IsImmutableDigraph}}
\label{IsImmutableDigraph}
}\hfill{\scriptsize (Category)}}\\


 \texttt{IsImmutableDigraph} is a subcategory of \texttt{IsDigraph} (\ref{IsDigraph}). Digraphs that lie in \texttt{IsImmutableDigraph} are immutable and attribute\texttt{\symbol{45}}storing. In particular, they
lie in \texttt{IsAttributeStoringRep} (\textbf{Reference: IsAttributeStoringRep}). 

 A mutable digraph may be converted to an immutable digraph that lies in the
category \texttt{IsImmutableDigraph} by calling \texttt{MakeImmutable} (\textbf{Reference: MakeImmutable}) on the digraph.

 The operation \texttt{DigraphMutableCopy} (\ref{DigraphMutableCopy}) can be used to construct a mutable copy of an immutable digraph. It is however
not possible to convert an immutable digraph into a mutable digraph
in\texttt{\symbol{45}}place. }

 

\subsection{\textcolor{Chapter }{IsCayleyDigraph}}
\logpage{[ 3, 1, 4 ]}\nobreak
\hyperdef{L}{X7E749324800B38A5}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsCayleyDigraph\index{IsCayleyDigraph@\texttt{IsCayleyDigraph}}
\label{IsCayleyDigraph}
}\hfill{\scriptsize (Category)}}\\


 \texttt{IsCayleyDigraph} is a subcategory of \texttt{IsDigraph}. Digraphs that are Cayley digraphs of a group and that are constructed by the
operation \texttt{CayleyDigraph} (\ref{CayleyDigraph}) are constructed in this category, and are always immutable. }

 

\subsection{\textcolor{Chapter }{IsDigraphWithAdjacencyFunction}}
\logpage{[ 3, 1, 5 ]}\nobreak
\hyperdef{L}{X80F1B6D28478D8B9}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{IsDigraphWithAdjacencyFunction\index{IsDigraphWithAdjacencyFunction@\texttt{IsDigraphWithAdjacencyFunction}}
\label{IsDigraphWithAdjacencyFunction}
}\hfill{\scriptsize (Category)}}\\


 \texttt{IsDigraphWithAdjacencyFunction} is a subcategory of \texttt{IsDigraph}. Digraphs that are \emph{created} using an adjacency function are constructed in this category. }

 

\subsection{\textcolor{Chapter }{DigraphByOutNeighboursType}}
\logpage{[ 3, 1, 6 ]}\nobreak
\hyperdef{L}{X86E798B779515678}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphByOutNeighboursType\index{DigraphByOutNeighboursType@\texttt{DigraphByOutNeighboursType}}
\label{DigraphByOutNeighboursType}
}\hfill{\scriptsize (global variable)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphFamily\index{DigraphFamily@\texttt{DigraphFamily}}
\label{DigraphFamily}
}\hfill{\scriptsize (family)}}\\


 The type of all digraphs is \texttt{DigraphByOutNeighboursType}. The family of all digraphs is \texttt{DigraphFamily}. }

 

\subsection{\textcolor{Chapter }{Digraph}}
\logpage{[ 3, 1, 7 ]}\nobreak
\hyperdef{L}{X834843057CE86655}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Digraph({\mdseries\slshape [filt, ]obj[, source, range]})\index{Digraph@\texttt{Digraph}}
\label{Digraph}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Digraph({\mdseries\slshape [filt, ]list, func})\index{Digraph@\texttt{Digraph}!for a list and function}
\label{Digraph:for a list and function}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{Digraph({\mdseries\slshape [filt, ]G, list, act, adj})\index{Digraph@\texttt{Digraph}!for a group, list, function, and function}
\label{Digraph:for a group, list, function, and function}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
A digraph.



 If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is present, then this should specify the category or representation the
digraph being created will belong to. For example, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsMutableDigraph} (\ref{IsMutableDigraph}), then the digraph being created will be mutable, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}), then the digraph will be immutable. If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is not present, then \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}) is used by default.

 
\begin{description}
\item[{for a list (i.e. an adjacency list)}]  if \mbox{\texttt{\mdseries\slshape obj}} is a list of lists of positive integers in the range from \texttt{1} to \texttt{Length(\mbox{\texttt{\mdseries\slshape obj}})}, then this function returns the digraph with vertices $E ^ 0 = $\texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape obj}})]}, and edges corresponding to the entries of \mbox{\texttt{\mdseries\slshape obj}}. 

 More precisely, there is an edge from vertex \texttt{i} to \texttt{j} if and only if \texttt{j} is in \texttt{\mbox{\texttt{\mdseries\slshape obj}}[i]}; the source of this edge is \texttt{i} and the range is \texttt{j}. If \texttt{j} occurs in \texttt{\mbox{\texttt{\mdseries\slshape obj}}[i]} with multiplicity \texttt{k}, then there are \texttt{k} edges from \texttt{i} to \texttt{j}. 
\item[{for three lists}]  if \mbox{\texttt{\mdseries\slshape obj}} is a duplicate\texttt{\symbol{45}}free list, and \mbox{\texttt{\mdseries\slshape source}} and \mbox{\texttt{\mdseries\slshape range}} are lists of equal length consisting of positive integers in the list \texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape obj}})]}, then this function returns a digraph with vertices $E ^ 0 = $\texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape obj}})]}, and \texttt{Length(\mbox{\texttt{\mdseries\slshape source}})} edges. For each \texttt{i} in \texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape source}})]} there exists an edge with source vertex \texttt{source[i]} and range vertex \texttt{range[i]}. See \texttt{DigraphSource} (\ref{DigraphSource}) and \texttt{DigraphRange} (\ref{DigraphRange}). 

 The vertices of the digraph will be labelled by the elements of \mbox{\texttt{\mdseries\slshape obj}}. 
\item[{for an integer, and two lists}]  if \mbox{\texttt{\mdseries\slshape obj}} is an integer, and \mbox{\texttt{\mdseries\slshape source}} and \mbox{\texttt{\mdseries\slshape range}} are lists of equal length consisting of positive integers in the list \texttt{[1 .. \mbox{\texttt{\mdseries\slshape obj}}]}, then this function returns a digraph with vertices $E ^ 0 = $\texttt{[1 .. \mbox{\texttt{\mdseries\slshape obj}}]}, and \texttt{Length(\mbox{\texttt{\mdseries\slshape source}})} edges. For each \texttt{i} in \texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape source}})]} there exists an edge with source vertex \texttt{source[i]} and range vertex \texttt{range[i]}. See \texttt{DigraphSource} (\ref{DigraphSource}) and \texttt{DigraphRange} (\ref{DigraphRange}). 
\item[{for a list and a function}]  if \mbox{\texttt{\mdseries\slshape list}} is a list and \mbox{\texttt{\mdseries\slshape func}} is a function taking 2 arguments that are elements of \mbox{\texttt{\mdseries\slshape list}}, and \mbox{\texttt{\mdseries\slshape func}} returns \texttt{true} or \texttt{false}, then this operation creates a digraph with vertices \texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape list}})]} and an edge from vertex \texttt{i} to vertex \texttt{j} if and only if \texttt{\mbox{\texttt{\mdseries\slshape func}}(\mbox{\texttt{\mdseries\slshape list}}[i], \mbox{\texttt{\mdseries\slshape list}}[j])} returns \texttt{true}. 
\item[{for a group, a list, and two functions}]  The arguments will be \mbox{\texttt{\mdseries\slshape G, list, act, adj}}. 

 Let \mbox{\texttt{\mdseries\slshape G}} be a group acting on the objects in \mbox{\texttt{\mdseries\slshape list}} via the action \mbox{\texttt{\mdseries\slshape act}}, and let \mbox{\texttt{\mdseries\slshape adj}} be a function taking two objects from \mbox{\texttt{\mdseries\slshape list}} as arguments and returning \texttt{true} or \texttt{false}. The function \mbox{\texttt{\mdseries\slshape adj}} will describe the adjacency between objects from \mbox{\texttt{\mdseries\slshape list}}, which is invariant under the action of \mbox{\texttt{\mdseries\slshape G}}. This variant of the constructor returns a digraph with vertices the objects
of \mbox{\texttt{\mdseries\slshape list}} and directed edges \texttt{[x, y]} when \texttt{f(x, y)} is \texttt{true}. 

 The action of the group \mbox{\texttt{\mdseries\slshape G}} on the objects in \mbox{\texttt{\mdseries\slshape list}} is stored in the attribute \texttt{DigraphGroup} (\ref{DigraphGroup}), and is used to speed up operations like \texttt{DigraphDiameter} (\ref{DigraphDiameter}). 
\item[{for a Grape package graph}]  if \mbox{\texttt{\mdseries\slshape obj}} is a \href{https://gap-packages.github.io/grape} {GRAPE}  package graph (i.e. a record for which the function \texttt{IsGraph} returns \texttt{true}), then this function returns a digraph isomorphic to \mbox{\texttt{\mdseries\slshape obj}}. 
\item[{for a binary relation}]  if \mbox{\texttt{\mdseries\slshape obj}} is a binary relation on the points \texttt{[1 .. n]} for some positive integer $n$, then this function returns the digraph defined by \mbox{\texttt{\mdseries\slshape obj}}. Specifically, this function returns a digraph which has $n$ vertices, and which has an edge with source \texttt{i} and range \texttt{j} if and only if \texttt{[i,j]} is a pair in the binary relation \mbox{\texttt{\mdseries\slshape obj}}. 
\item[{for a string naming a digraph}]  if \mbox{\texttt{\mdseries\slshape obj}} is a non\texttt{\symbol{45}}empty string, then this function returns the
digraph that has name \mbox{\texttt{\mdseries\slshape obj}}. \textsf{Digraphs} comes with a database containing a few hundred common digraph names that can
be loaded in this way. Valid names include \texttt{"folkman"}, \texttt{"diamond"} and \texttt{"brinkmann"}. If the name is commonly followed by the word \texttt{"graph"}, then it is called without writing \texttt{"graph"} at the end. You can explore the available graph names using \texttt{ListNamedDigraphs} (\ref{ListNamedDigraphs}). Digraph names are case and whitespace insensitive. 

 Note that any undirected graphs in the database are stored as symmetric
digraphs, so the resulting digraph will have twice as many edges as its
undirected counterpart. 
\end{description}
 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@gr := Digraph([|
  !gapprompt@>| !gapinput@[2, 5, 8, 10], [2, 3, 4, 2, 5, 6, 8, 9, 10], [1],|
  !gapprompt@>| !gapinput@[3, 5, 7, 8, 10], [2, 5, 7], [3, 6, 7, 9, 10], [1, 4],|
  !gapprompt@>| !gapinput@[1, 5, 9], [1, 2, 7, 8], [3, 5]]);|
  <immutable multidigraph with 10 vertices, 38 edges>
  !gapprompt@gap>| !gapinput@gr := Digraph(["a""b""c"], ["a"], ["b"]);|
  <immutable digraph with 3 vertices, 1 edge>
  !gapprompt@gap>| !gapinput@gr := Digraph(5, [1, 2, 2, 4, 1, 1], [2, 3, 5, 5, 1, 1]);|
  <immutable multidigraph with 5 vertices, 6 edges>
  !gapprompt@gap>| !gapinput@Petersen := Graph(SymmetricGroup(5), [[1, 2]], OnSets,|
  !gapprompt@>| !gapinput@function(x, y) return Intersection(x, y) = []; end);;|
  !gapprompt@gap>| !gapinput@Digraph(Petersen);|
  <immutable digraph with 10 vertices, 30 edges>
  !gapprompt@gap>| !gapinput@gr := Digraph([1 .. 10], ReturnTrue);|
  <immutable digraph with 10 vertices, 100 edges>
  !gapprompt@gap>| !gapinput@Digraph("Diamond");|
  <immutable digraph with 4 vertices, 10 edges>
\end{Verbatim}
 The next example illustrates the uses of the fourth and fifth variants of this
constructor. The resulting digraph is a strongly regular graph, and it is
actually the point graph of the van Lint\texttt{\symbol{45}}Schrijver partial
geometry, \cite{vLS81}. The algebraic description is taken from the seminal paper of Calderbank and
Kantor \cite{CK86}. 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@f := GF(3 ^ 4);|
  GF(3^4)
  !gapprompt@gap>| !gapinput@gamma := First(f, x -> Order(x) = 5);|
  Z(3^4)^64
  !gapprompt@gap>| !gapinput@L := Union([Zero(f)], List(Group(gamma)));|
  [ 0*Z(3), Z(3)^0, Z(3^4)^16, Z(3^4)^32, Z(3^4)^48, Z(3^4)^64 ]
  !gapprompt@gap>| !gapinput@omega := Union(List(L, x -> List(Difference(L, [x]), y -> x - y)));|
  [ Z(3)^0, Z(3), Z(3^4)^5, Z(3^4)^7, Z(3^4)^8, Z(3^4)^13, Z(3^4)^15, 
    Z(3^4)^16, Z(3^4)^21, Z(3^4)^23, Z(3^4)^24, Z(3^4)^29, Z(3^4)^31, 
    Z(3^4)^32, Z(3^4)^37, Z(3^4)^39, Z(3^4)^45, Z(3^4)^47, Z(3^4)^48, 
    Z(3^4)^53, Z(3^4)^55, Z(3^4)^56, Z(3^4)^61, Z(3^4)^63, Z(3^4)^64, 
    Z(3^4)^69, Z(3^4)^71, Z(3^4)^72, Z(3^4)^77, Z(3^4)^79 ]
  !gapprompt@gap>| !gapinput@adj := function(x, y)|
  !gapprompt@>| !gapinput@  return x - y in omega;|
  !gapprompt@>| !gapinput@end;|
  function( x, y ) ... end
  !gapprompt@gap>| !gapinput@digraph := Digraph(AsList(f), adj);|
  <immutable digraph with 81 vertices, 2430 edges>
  !gapprompt@gap>| !gapinput@group := Group(Z(3));;|
  !gapprompt@gap>| !gapinput@act := \*;|
  <Operation "*">
  !gapprompt@gap>| !gapinput@digraph := Digraph(group, List(f), act, adj);|
  <immutable digraph with 81 vertices, 2430 edges>
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{DigraphByAdjacencyMatrix}}
\logpage{[ 3, 1, 8 ]}\nobreak
\hyperdef{L}{X8023FE387A3AB609}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphByAdjacencyMatrix({\mdseries\slshape [filt, ]list})\index{DigraphByAdjacencyMatrix@\texttt{DigraphByAdjacencyMatrix}}
\label{DigraphByAdjacencyMatrix}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
A digraph.



 If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is present, then this should specify the category or representation the
digraph being created will belong to. For example, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsMutableDigraph} (\ref{IsMutableDigraph}), then the digraph being created will be mutable, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}), then the digraph will be immutable. If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is not present, then \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}) is used by default.

 If \mbox{\texttt{\mdseries\slshape list}} is the adjacency matrix of a digraph in the sense o\texttt{AdjacencyMatrix} (\ref{AdjacencyMatrix}), then this operation returns the digraph which is defined by \mbox{\texttt{\mdseries\slshape list}}. 

 Alternatively, if \mbox{\texttt{\mdseries\slshape list}} is a square boolean matrix, then this operation returns the digraph with \texttt{Length(}\mbox{\texttt{\mdseries\slshape list}}\texttt{)} vertices which has the edge \texttt{[i,j]} if and only if \mbox{\texttt{\mdseries\slshape list}}\texttt{[i][j]} is \texttt{true}. 

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@DigraphByAdjacencyMatrix([|
  !gapprompt@>| !gapinput@[0, 1, 0, 2, 0],|
  !gapprompt@>| !gapinput@[1, 1, 1, 0, 1],|
  !gapprompt@>| !gapinput@[0, 3, 2, 1, 1],|
  !gapprompt@>| !gapinput@[0, 0, 1, 0, 1],|
  !gapprompt@>| !gapinput@[2, 0, 0, 0, 0]]);|
  <immutable multidigraph with 5 vertices, 18 edges>
  !gapprompt@gap>| !gapinput@D := DigraphByAdjacencyMatrix([|
  !gapprompt@>| !gapinput@[true, false, true],|
  !gapprompt@>| !gapinput@[false, false, true],|
  !gapprompt@>| !gapinput@[false, true, false]]);|
  <immutable digraph with 3 vertices, 4 edges>
  !gapprompt@gap>| !gapinput@OutNeighbours(D);|
  [ [ 1, 3 ], [ 3 ], [ 2 ] ]
  !gapprompt@gap>| !gapinput@D := DigraphByAdjacencyMatrix(IsMutableDigraph, |
  !gapprompt@>| !gapinput@[[true, false, true],|
  !gapprompt@>| !gapinput@ [false, false, true],|
  !gapprompt@>| !gapinput@ [false, true, false]]);|
  <mutable digraph with 3 vertices, 4 edges>
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{DigraphByEdges}}
\logpage{[ 3, 1, 9 ]}\nobreak
\hyperdef{L}{X7F37B6768349E269}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphByEdges({\mdseries\slshape [filt, ]list[, n]})\index{DigraphByEdges@\texttt{DigraphByEdges}}
\label{DigraphByEdges}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
A digraph.



 If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is present, then this should specify the category or representation the
digraph being created will belong to. For example, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsMutableDigraph} (\ref{IsMutableDigraph}), then the digraph being created will be mutable, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}), then the digraph will be immutable. If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is not present, then \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}) is used by default.

 If \mbox{\texttt{\mdseries\slshape list}} is list of pairs of positive integers, then this function returns the digraph
with the minimum number of vertices \texttt{m} such that its list equal \mbox{\texttt{\mdseries\slshape list}}.

 If the optional second argument \mbox{\texttt{\mdseries\slshape n}} is a positive integer with \texttt{\mbox{\texttt{\mdseries\slshape n}} {\textgreater}= m} (with \texttt{m} defined as above), then this function returns the digraph with \mbox{\texttt{\mdseries\slshape n}} vertices and list \mbox{\texttt{\mdseries\slshape list}}. 

 See \texttt{DigraphEdges} (\ref{DigraphEdges}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@DigraphByEdges(|
  !gapprompt@>| !gapinput@[[1, 3], [2, 1], [2, 3], [2, 5], [3, 6],|
  !gapprompt@>| !gapinput@ [4, 6], [5, 2], [5, 4], [5, 6], [6, 6]]);|
  <immutable digraph with 6 vertices, 10 edges>
  !gapprompt@gap>| !gapinput@DigraphByEdges(|
  !gapprompt@>| !gapinput@[[1, 3], [2, 1], [2, 3], [2, 5], [3, 6],|
  !gapprompt@>| !gapinput@ [4, 6], [5, 2], [5, 4], [5, 6], [6, 6]], 12);|
  <immutable digraph with 12 vertices, 10 edges>
  !gapprompt@gap>| !gapinput@DigraphByEdges(IsMutableDigraph, |
  !gapprompt@>| !gapinput@[[1, 3], [2, 1], [2, 3], [2, 5], [3, 6],|
  !gapprompt@>| !gapinput@ [4, 6], [5, 2], [5, 4], [5, 6], [6, 6]], 12);|
  <mutable digraph with 12 vertices, 10 edges>
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{EdgeOrbitsDigraph}}
\logpage{[ 3, 1, 10 ]}\nobreak
\hyperdef{L}{X7B75C1D680757D6F}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{EdgeOrbitsDigraph({\mdseries\slshape G, edges[, n]})\index{EdgeOrbitsDigraph@\texttt{EdgeOrbitsDigraph}}
\label{EdgeOrbitsDigraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
 An immutable digraph. 



 If \mbox{\texttt{\mdseries\slshape G}} is a permutation group, \mbox{\texttt{\mdseries\slshape edges}} is an edge or list of edges, and \mbox{\texttt{\mdseries\slshape n}} is a non\texttt{\symbol{45}}negative integer such that \mbox{\texttt{\mdseries\slshape G}} fixes \texttt{[1 .. \mbox{\texttt{\mdseries\slshape n}}]} setwise, then this operation returns an immutable digraph with \mbox{\texttt{\mdseries\slshape n}} vertices and the union of the orbits of the edges in \mbox{\texttt{\mdseries\slshape  edges }} under the action of the permutation group \mbox{\texttt{\mdseries\slshape G}}. An edge in this context is simply a pair of positive integers. 

 If the optional third argument \mbox{\texttt{\mdseries\slshape n}} is not present, then the largest moved point of the permutation group \mbox{\texttt{\mdseries\slshape G}} is used by default.

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@digraph := EdgeOrbitsDigraph(Group((1, 3), (1, 2)(3, 4)),|
  !gapprompt@>| !gapinput@                                [[1, 2], [4, 5]], 5);|
  <immutable digraph with 5 vertices, 12 edges>
  !gapprompt@gap>| !gapinput@OutNeighbours(digraph);|
  [ [ 2, 4, 5 ], [ 1, 3, 5 ], [ 2, 4, 5 ], [ 1, 3, 5 ], [  ] ]
  !gapprompt@gap>| !gapinput@RepresentativeOutNeighbours(digraph);|
  [ [ 2, 4, 5 ], [  ] ]
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{DigraphByInNeighbours}}
\logpage{[ 3, 1, 11 ]}\nobreak
\hyperdef{L}{X81BC49B57EAADEFB}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphByInNeighbours({\mdseries\slshape [filt, ]list})\index{DigraphByInNeighbours@\texttt{DigraphByInNeighbours}}
\label{DigraphByInNeighbours}
}\hfill{\scriptsize (operation)}}\\
\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{DigraphByInNeighbors({\mdseries\slshape [filt, ]list})\index{DigraphByInNeighbors@\texttt{DigraphByInNeighbors}}
\label{DigraphByInNeighbors}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
A digraph.



 If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is present, then this should specify the category or representation the
digraph being created will belong to. For example, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsMutableDigraph} (\ref{IsMutableDigraph}), then the digraph being created will be mutable, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}), then the digraph will be immutable. If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is not present, then \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}) is used by default.

 If \mbox{\texttt{\mdseries\slshape list}} is a list of lists of positive integers list the range \texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape list}})]}, then this function returns the digraph with vertices $E^0=$\texttt{[1 .. Length(\mbox{\texttt{\mdseries\slshape list}})]}, and edges corresponding to the entries of \mbox{\texttt{\mdseries\slshape list}}. More precisely, there is an edge with source vertex \texttt{i} and range vertex \texttt{j} if \texttt{i} is in the list \texttt{\mbox{\texttt{\mdseries\slshape list}}[j]}. 

 If \texttt{i} occurs in the list \texttt{\mbox{\texttt{\mdseries\slshape list}}[j]} with multiplicity \texttt{k}, then there are \texttt{k} multiple edges from \texttt{i} to \texttt{j}. 

 See \texttt{InNeighbours} (\ref{InNeighbours}). 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@D := DigraphByInNeighbours([|
  !gapprompt@>| !gapinput@[2, 5, 8, 10], [2, 3, 4, 5, 6, 8, 9, 10],|
  !gapprompt@>| !gapinput@[1], [3, 5, 7, 8, 10], [2, 5, 7], [3, 6, 7, 9, 10], [1, 4],|
  !gapprompt@>| !gapinput@[1, 5, 9], [1, 2, 7, 8], [3, 5]]);|
  <immutable digraph with 10 vertices, 37 edges>
  !gapprompt@gap>| !gapinput@D := DigraphByInNeighbours([[2, 3, 2], [1], [1, 2, 3]]);|
  <immutable multidigraph with 3 vertices, 7 edges>
  !gapprompt@gap>| !gapinput@D := DigraphByInNeighbours(IsMutableDigraph, |
  !gapprompt@>| !gapinput@                              [[2, 3, 2], [1], [1, 2, 3]]);|
  <mutable multidigraph with 3 vertices, 7 edges>
\end{Verbatim}
 }

 

\subsection{\textcolor{Chapter }{CayleyDigraph}}
\logpage{[ 3, 1, 12 ]}\nobreak
\hyperdef{L}{X7FCADADC7EC28478}{}
{\noindent\textcolor{FuncColor}{$\triangleright$\enspace\texttt{CayleyDigraph({\mdseries\slshape [filt, ]G[, gens]})\index{CayleyDigraph@\texttt{CayleyDigraph}}
\label{CayleyDigraph}
}\hfill{\scriptsize (operation)}}\\
\textbf{\indent Returns:}
A digraph.



 Let \mbox{\texttt{\mdseries\slshape G}} be any group and let \mbox{\texttt{\mdseries\slshape gens}} be a list of elements of \mbox{\texttt{\mdseries\slshape G}}. This operation returns a digraph that corresponds to the Cayley graph of \mbox{\texttt{\mdseries\slshape G}} with respect to \mbox{\texttt{\mdseries\slshape gens}}. 

 The vertices of the digraph correspond to the elements of \mbox{\texttt{\mdseries\slshape G}}, in the order given by \texttt{Set(\mbox{\texttt{\mdseries\slshape G}})}. There exists an edge from vertex \texttt{u} to vertex \texttt{v} if and only if there exists a generator \texttt{g} in \mbox{\texttt{\mdseries\slshape gens}} such that \texttt{Set(\mbox{\texttt{\mdseries\slshape G}})[u] * g = Set(\mbox{\texttt{\mdseries\slshape G}})[v]}. 

 The labels of the vertices \texttt{u}, \texttt{v}, and the edge \texttt{[u, v]} are the corresponding elements \texttt{AsList(\mbox{\texttt{\mdseries\slshape G}})[u]}, \texttt{AsList(\mbox{\texttt{\mdseries\slshape G}})[v]}, and generator \texttt{g}, respectively; see \texttt{DigraphVertexLabel} (\ref{DigraphVertexLabel}) and \texttt{DigraphEdgeLabel} (\ref{DigraphEdgeLabel}). 

 If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is present, then this should specify the category or representation the
digraph being created will belong to. For example, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsMutableDigraph} (\ref{IsMutableDigraph}), then the digraph being created will be mutable, if \mbox{\texttt{\mdseries\slshape filt}} is \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}), then the digraph will be immutable. If the optional first argument \mbox{\texttt{\mdseries\slshape filt}} is not present, then \texttt{IsImmutableDigraph} (\ref{IsImmutableDigraph}) is used by default.

 If the optional third argument \mbox{\texttt{\mdseries\slshape gens}} is not present, then the generators of \mbox{\texttt{\mdseries\slshape G}} are used by default.

 The digraph created by this operation belongs to the category \texttt{IsCayleyDigraph} (\ref{IsCayleyDigraph}), the group \mbox{\texttt{\mdseries\slshape G}} can be recovered from the digraph using \texttt{GroupOfCayleyDigraph} (\ref{GroupOfCayleyDigraph}), and the generators \mbox{\texttt{\mdseries\slshape gens}} can be obtained using \texttt{GeneratorsOfCayleyDigraph} (\ref{GeneratorsOfCayleyDigraph}).

 
\begin{Verbatim}[commandchars=!@|,fontsize=\small,frame=single,label=Example]
  !gapprompt@gap>| !gapinput@G := DihedralGroup(8);|
  <pc group of size 8 with 3 generators>
  !gapprompt@gap>| !gapinput@CayleyDigraph(G);|
  <immutable digraph with 8 vertices, 24 edges>
  !gapprompt@gap>| !gapinput@G := DihedralGroup(IsPermGroup, 8);|
  Group([ (1,2,3,4), (2,4) ])
  !gapprompt@gap>| !gapinput@CayleyDigraph(G);|
  <immutable digraph with 8 vertices, 16 edges>
  !gapprompt@gap>| !gapinput@digraph := CayleyDigraph(G, [()]);|
  <immutable digraph with 8 vertices, 8 edges>
  !gapprompt@gap>| !gapinput@GroupOfCayleyDigraph(digraph) = G;|
  true
  !gapprompt@gap>| !gapinput@GeneratorsOfCayleyDigraph(digraph);|
  [ () ]
--> --------------------

--> maximum size reached

--> --------------------

100%


¤ Dauer der Verarbeitung: 0.36 Sekunden  (vorverarbeitet)  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.