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: 418346############################################################################# ## This program is free software: you can redistribute it and/or modify ## it under the terms of the GNU General Public License as published by ## the Free Software Foundation, either version 2 of the License, or ## (at your option) any later version. ## ## This program is distributed in the hope that it will be useful, ## but WITHOUT ANY WARRANTY; without even the implied warranty of ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ## GNU General Public License for more details. ## #W basics.gi Michael Albert, #W Steve Linton, #W Ruth Hoffmann ## ## #Y Copyright (C) 2004-2015 School of Computer Science, #Y University of St. Andrews, North Haugh, #Y St. Andrews, Fife KY16 9SS, Scotland ## ################################################################################ ## #F PermComplement(perm) ## ## The complement of a permutation [p_1, p_2, ..., p_n] is the permutation ## [n+1-p_1, n+1-p_2, ... , n+1-p_n] . ## PermComplement calculates the complement of the input permutation which ## has to be input in the non-rank-encoded form. ## InstallGlobalFunction(PermComplement, function(list) local p, i; p:=[]; for i in [1..Length(list)] do Add(p, Length(list)+1-list[i]); od; return p; end ); ################################################################################ ## #F ComplementAutomaton(aut) ## ## The complement automaton accepts the complement language of aut. In other ## words it accepts all the complements of the words that are accepted by aut. ## InstallGlobalFunction(ComplementAutomaton,function(aut) local accept; accept:=[1..aut!.states]; SubtractSet(accept,aut!.accepting); return Automaton(aut!.type,aut!.states,aut!.alphabet,aut!.transitions, aut!.initial,accept); end ); ################################################################################ ## #F IsRankEncoding(perm) ## ## IsRankEncoding checks whether the inputed list (perm) represents a rank ## encoded permutation. ## InstallGlobalFunction(IsRankEncoding,function(list) local a, m, alph, listnew, i; m:=Maximum(list); a:=BoundedClassAutomaton(m); alph:=AlphabetOfAutomatonAsList(a); listnew:=[]; for i in [1..Length(list)] do Add(listnew,alph[list[i]]); od; return IsRecognizedByAutomaton(a,listnew); end ); ################################################################################ ## #F IsAcceptedWord(aut,perm) ## ## IsAcceptedWord checks whether the list perm is a permutation output by the ## the automaton aut. The permutation perm has to be in rank encoding. ## InstallGlobalFunction(IsAcceptedWord,function(a,list) local listnew, i, alph, p; p:=ShallowCopy(list); alph:=AlphabetOfAutomatonAsList(a); listnew:=[]; for i in [1..Length(p)] do Add(listnew,alph[p[i]]); od; return IsRecognizedByAutomaton(a,listnew); end );