diff --git a/.VERSION b/.VERSION index fdd3be6df..266146b87 100644 --- a/.VERSION +++ b/.VERSION @@ -1 +1 @@ -1.6.2 +1.6.3 diff --git a/.codespellrc b/.codespellrc new file mode 100644 index 000000000..d56f2972d --- /dev/null +++ b/.codespellrc @@ -0,0 +1,3 @@ +[codespell] +skip = ./.git,./tmp,./data,./extern,./tst,./bin,./libtool,configure,configure~,./gh-pages,./autom4te.cache,./cnf,aclocal.m4,./m4,./doc/*.log,./doc/*.html,./doc/*.txt,./doc/*.six,./doc/*.js,./doc/*.bbl,./doc/*.tex,./doc/*.bib +ignore-words-list=ist,MIS,mis diff --git a/.github/workflows/codespell.yml b/.github/workflows/codespell.yml new file mode 100644 index 000000000..7dea7c1d6 --- /dev/null +++ b/.github/workflows/codespell.yml @@ -0,0 +1,14 @@ +name: codespell +on: + workflow_dispatch: + pull_request: + push: + branches: + - main + - stable-*.* +jobs: + codespell: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: codespell-project/actions-codespell@v1.0 diff --git a/.github/workflows/gap.yml b/.github/workflows/gap.yml index 021cbe028..da9670377 100644 --- a/.github/workflows/gap.yml +++ b/.github/workflows/gap.yml @@ -3,6 +3,9 @@ on: workflow_dispatch: pull_request: push: + branches: + - main + - stable-*.* schedule: # Every day at 3:30 AM UTC - cron: '30 3 * * *' @@ -14,8 +17,6 @@ jobs: test-unix: name: "${{ matrix.os }}${{ matrix.ABI }} / GAP ${{ matrix.gap-branch }}" runs-on: "${{ matrix.os }}-latest" - # Don't run this twice for PRs from branches in the same repository - if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }} strategy: fail-fast: false matrix: @@ -61,34 +62,27 @@ jobs: curl --retry 5 -L -O "https://digraphs.github.io/Digraphs/${{ env.DIGRAPHS_LIB }}.tar.gz" tar xf "${{ env.DIGRAPHS_LIB }}.tar.gz" - name: "Run DigraphsTestInstall" - if: ${{ always() }} uses: gap-actions/run-pkg-tests@v2 with: GAP_TESTFILE: "tst/github_actions/install.g" - name: "Run DigraphsTestStandard" - if: ${{ always() }} uses: gap-actions/run-pkg-tests@v2 with: GAP_TESTFILE: "tst/github_actions/standard.g" - name: "Run DigraphsTestManualExamples" - if: ${{ always() }} uses: gap-actions/run-pkg-tests@v2 with: GAP_TESTFILE: "tst/github_actions/examples.g" - name: "Run DigraphsTestExtreme" - if: ${{ always() }} uses: gap-actions/run-pkg-tests@v2 with: GAP_TESTFILE: "tst/github_actions/extreme.g" - uses: gap-actions/process-coverage@v2 - if: ${{ always() }} - uses: codecov/codecov-action@v3 - if: ${{ always() }} test-cygwin: name: "cygwin / GAP master" runs-on: windows-2019 - if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }} env: CHERE_INVOKING: 1 steps: diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 0d0dbe78c..514d27078 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -3,6 +3,9 @@ on: workflow_dispatch: pull_request: push: + branches: + - main + - stable-*.* schedule: # Every day at 3:30 AM UTC - cron: '30 3 * * *' @@ -11,8 +14,6 @@ jobs: lint: name: "${{ matrix.linter }}" runs-on: ubuntu-latest - # Don't run this twice for PRs from branches in the same repository - if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }} strategy: fail-fast: false matrix: diff --git a/.github/workflows/manual.yml b/.github/workflows/manual.yml index 0e7547b52..49ed386c2 100644 --- a/.github/workflows/manual.yml +++ b/.github/workflows/manual.yml @@ -3,6 +3,9 @@ on: workflow_dispatch: pull_request: push: + branches: + - main + - stable-*.* schedule: # Every day at 3:20 AM UTC - cron: '20 3 * * *' @@ -11,8 +14,6 @@ jobs: manual: name: "compile and upload manual" runs-on: ubuntu-latest - # Don't run this twice for PRs from branches in the same repository - if: ${{ !(github.event_name == 'pull_request' && github.event.pull_request.head.repo.full_name == github.repository) }} steps: - uses: actions/checkout@v3 - name: "Install TeX Live" diff --git a/CHANGELOG.md b/CHANGELOG.md index a5a9a310d..a6c01f276 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,21 @@ Wilf A. Wilson, Michael Young et al. Licensing information can be found in the `LICENSE` file. +## Version 1.6.3 (released 13/09/2023) + +This is a minor release with some bug fixes, and other issues resolved: + +* There was a minor bug in the `RandomDigraph` method for `IsEulerianDigraph`, + resolved by @mtorpey +* Joe Edwards and Maria Tsalakou were incorrectly listed as authors resolved + partially by @james-d-mitchell in https://github.com/digraphs/Digraphs/pull/576 +* Standardise the way that `UndirectedSpanningForest` works in relation to + mutability by @wilfwilson in https://github.com/digraphs/Digraphs/pull/582 +* Add immediate methods for connected and strongly connected digraphs by + @mtorpey +* There was a minor memory leak in the kernel extension resolved by + @james-d-mitchell + ## Version 1.6.2 (released 05/04/2023) * PackageInfo.g: link to Mathjax manual by default by @fingolfin in diff --git a/PackageInfo.g b/PackageInfo.g index f76aa9027..90e36668d 100644 --- a/PackageInfo.g +++ b/PackageInfo.g @@ -9,7 +9,7 @@ ## ## <#GAPDoc Label="PKGVERSIONDATA"> -## +## ## ## ## @@ -28,8 +28,8 @@ _STANDREWSCS := Concatenation(["Jack Cole Building, North Haugh, ", SetPackageInfo(rec( PackageName := "Digraphs", Subtitle := "Graphs, digraphs, and multidigraphs in GAP", -Version := "1.6.2", -Date := "05/04/2023", # dd/mm/yyyy format +Version := "1.6.3", +Date := "13/09/2023", # dd/mm/yyyy format License := "GPL-3.0-or-later", ArchiveFormats := ".tar.gz", @@ -122,7 +122,7 @@ Persons := [ rec( LastName := "Edwards", FirstNames := "Joe", - IsAuthor := true, + IsAuthor := false, IsMaintainer := false, Email := "je53@st-andrews.ac.uk", PostalAddress := _STANDREWSMATHS, @@ -304,7 +304,7 @@ Persons := [ rec( LastName := "Tsalakou", FirstNames := "Maria", - IsAuthor := true, + IsAuthor := false, IsMaintainer := false, Email := "mt200@st-andrews.ac.uk", WWWHome := "https://mariatsalakou.github.io/", diff --git a/VERSIONS b/VERSIONS index 5a8dffd38..7373bd65e 100644 --- a/VERSIONS +++ b/VERSIONS @@ -8,6 +8,7 @@ ############################################################################# ## +release 1.6.3 - 13/09/2023 release 1.6.2 - 05/04/2023 release 1.6.1 - 06/12/2022 release 1.6.0 - 08/09/2022 diff --git a/doc/main.xml b/doc/main.xml index 62158dce8..95ee02d6b 100644 --- a/doc/main.xml +++ b/doc/main.xml @@ -41,7 +41,7 @@ <#Include SYSTEM="z-chap0.xml"> <#Include SYSTEM="z-chap1.xml"> <#Include SYSTEM="z-chap2.xml"> - <#Include SYSTEM="z-chap3.xml"> + <#Include SYSTEM="z-chap3.xml"> <#Include SYSTEM="z-chap4.xml"> <#Include SYSTEM="z-chap5.xml"> <#Include SYSTEM="z-chap6.xml"> diff --git a/etc/tst-local-vars.py b/etc/tst-local-vars.py new file mode 100755 index 000000000..915c453b7 --- /dev/null +++ b/etc/tst-local-vars.py @@ -0,0 +1,40 @@ +#!/usr/bin/env python3 +""" +This simple script adds the local variables used in a GAP tst file to the top +of the file. +""" +import os +import re +import sys +import textwrap + +import yaml +from bs4 import BeautifulSoup + + +def main(): + if sys.version_info[0] < 3: + raise Exception("Python 3 is required") + args = sys.argv[1:] + pattern1 = re.compile(r"(\w+)\s*:=") + pattern2 = re.compile(r"for (\w+) in") + for fname in args: + lvars = [] + with open(fname, "r") as f: + lines = f.read() + lvars.extend([x.group(1) for x in re.finditer(pattern1, lines)]) + lvars.extend([x.group(1) for x in re.finditer(pattern2, lines)]) + lvars = ", ".join(sorted([*{*lvars}])) + lvars = [x if x[-1] != "," else x[:-1] for x in textwrap.wrap(lvars, width=72)] + lvars = [""] + ["#@local " + x for x in lvars] + lines = lines.split("\n") + pos = next(i for i in range(len(lines)) if "START_TEST" in lines[i]) + lines = lines[:pos] + lvars + lines[pos:] + lines = "\n".join(lines) + with open(fname, "w") as f: + print(f"Writing local variables to {fname}...") + f.write(lines) + + +if __name__ == "__main__": + main() diff --git a/etc/tst-unbind-local-vars.py b/etc/tst-unbind-local-vars.py new file mode 100755 index 000000000..0ce912013 --- /dev/null +++ b/etc/tst-unbind-local-vars.py @@ -0,0 +1,49 @@ +#!/usr/bin/env python3 +""" +This simple script adds the "Unbind" statements to the end of a GAP tst file. +""" +import os +import re +import sys +import textwrap + +import yaml +from bs4 import BeautifulSoup + + +def main(): + if sys.version_info[0] < 3: + raise Exception("Python 3 is required") + args = sys.argv[1:] + pattern1 = re.compile(r"(\w+)\s*:=") + pattern2 = re.compile(r"for (\w+) in") + for fname in args: + lvars = [] + with open(fname, "r") as f: + lines = f.read() + lvars.extend([x.group(1) for x in re.finditer(pattern1, lines)]) + lvars.extend([x.group(1) for x in re.finditer(pattern2, lines)]) + lvars = sorted([*{*lvars}]) + lvars = [ + "# Unbind local variables, auto-generated by etc/tst-unbind-local-vars.py" + ] + [f"gap> Unbind({lvar});" for lvar in lvars] + lvars.append("") + lines = lines.split("\n") + pos1 = next(i for i in range(len(lines)) if "STOP_TEST" in lines[i]) - 1 + try: + pos0 = next( + i + for i in range(len(lines)) + if "etc/tst-unbind-local-vars.py" in lines[i] + ) + except StopIteration: + pos0 = pos1 + lines = lines[:pos0] + lvars + lines[pos1:] + lines = "\n".join(lines) + with open(fname, "w") as f: + print(f"Writing local variables to {fname}...") + f.write(lines) + + +if __name__ == "__main__": + main() diff --git a/gap/attr.gi b/gap/attr.gi index e76c728ca..1f0b2dde0 100644 --- a/gap/attr.gi +++ b/gap/attr.gi @@ -2341,36 +2341,38 @@ InstallMethod(DigraphReflexiveTransitiveReductionAttr, "for an immutable digraph", [IsImmutableDigraph], DigraphReflexiveTransitiveReduction); -InstallMethod(UndirectedSpanningForest, "for a digraph by out-neighbours", -[IsDigraphByOutNeighboursRep], +InstallMethod(UndirectedSpanningForest, +"for a mutable digraph by out-neighbours", +[IsMutableDigraph and IsDigraphByOutNeighboursRep], function(D) - local C; if DigraphHasNoVertices(D) then return fail; fi; - C := MaximalSymmetricSubdigraph(D)!.OutNeighbours; - C := DIGRAPH_SYMMETRIC_SPANNING_FOREST(C); - if IsMutableDigraph(D) then - D!.OutNeighbours := C; - ClearDigraphEdgeLabels(D); - return D; + MaximalSymmetricSubdigraph(D); + D!.OutNeighbours := DIGRAPH_SYMMETRIC_SPANNING_FOREST(D!.OutNeighbours); + ClearDigraphEdgeLabels(D); + return D; +end); + +InstallMethod(UndirectedSpanningForest, "for an immutable digraph", +[IsImmutableDigraph], UndirectedSpanningForestAttr); + +InstallMethod(UndirectedSpanningForestAttr, "for an immutable digraph", +[IsImmutableDigraph and IsDigraphByOutNeighboursRep], +function(D) + local C; + if DigraphHasNoVertices(D) then + return fail; fi; + C := MaximalSymmetricSubdigraph(D); + C := DIGRAPH_SYMMETRIC_SPANNING_FOREST(C!.OutNeighbours); C := ConvertToImmutableDigraphNC(C); - SetUndirectedSpanningForestAttr(D, C); SetIsUndirectedForest(C, true); SetIsMultiDigraph(C, false); SetDigraphHasLoops(C, false); return C; end); -InstallMethod(UndirectedSpanningForest, -"for a digraph with known undirected spanning forest", -[IsDigraph and HasUndirectedSpanningForestAttr], SUM_FLAGS, -UndirectedSpanningForestAttr); - -InstallMethod(UndirectedSpanningForestAttr, "for an immutable digraph", -[IsImmutableDigraph], UndirectedSpanningForest); - InstallMethod(UndirectedSpanningTree, "for a mutable digraph", [IsMutableDigraph], function(D) diff --git a/gap/labels.gi b/gap/labels.gi index d72762059..17965083a 100644 --- a/gap/labels.gi +++ b/gap/labels.gi @@ -57,7 +57,7 @@ InstallMethod(SetDigraphVertexLabels, "for a digraph and list", [IsDigraph, IsList], function(D, names) if Length(names) <> DigraphNrVertices(D) then - ErrorNoReturn("the 2nd arument must be a list with length equal ", + ErrorNoReturn("the 2nd argument must be a list with length equal ", "to the number of vertices of the digraph that is the ", "1st argument,"); fi; diff --git a/tst/standard/attr.tst b/tst/standard/attr.tst index 28944f72c..6732b43ee 100644 --- a/tst/standard/attr.tst +++ b/tst/standard/attr.tst @@ -789,8 +789,8 @@ gap> IsSymmetricDigraph(gr); true # Digraph(Reflexive)TransitiveClosure -gap> gr := Digraph(rec(DigraphNrVertices := 2, -> DigraphSource := [1, 1], +gap> gr := Digraph(rec(DigraphNrVertices := 2, +> DigraphSource := [1, 1], > DigraphRange := [2, 2])); gap> DigraphReflexiveTransitiveClosure(gr); @@ -1606,7 +1606,7 @@ gap> ChromaticNumber(gr : lawler); gap> ChromaticNumber(gr : lawler); 3 -# Test ChromaticNumber Byskov +# Test ChromaticNumber Byskov gap> ChromaticNumber(NullDigraph(10) : byskov); 1 gap> ChromaticNumber(CompleteDigraph(10) : byskov); @@ -1767,7 +1767,7 @@ true # ArticulationPoints gap> ArticulationPoints(CycleDigraph(5)); [ ] -gap> StrongOrientation(DigraphSymmetricClosure(CycleDigraph(5))) +gap> StrongOrientation(DigraphSymmetricClosure(CycleDigraph(5))) > = CycleDigraph(5); true gap> ArticulationPoints(Digraph([[2, 7], [3, 5], [4], [2], [6], [1], []])); @@ -1890,8 +1890,8 @@ gap> Bridges(D); # StrongOrientation gap> filename := Concatenation(DIGRAPHS_Dir(), "/data/graph5.g6.gz");; gap> D := ReadDigraphs(filename);; -gap> ForAll(D, -> d -> StrongOrientation(d) = fail +gap> ForAll(D, +> d -> StrongOrientation(d) = fail > or IsStronglyConnectedDigraph(StrongOrientation(d))); true gap> Number(D, d -> StrongOrientation(d) <> fail); @@ -1901,7 +1901,7 @@ gap> Number(D, IsBridgelessDigraph); gap> D := Filtered(D, d -> StrongOrientation(d) <> fail);; gap> ForAll(D, d -> IsSubdigraph(d, StrongOrientation(d))); true -gap> ForAll(D, +gap> ForAll(D, > d -> DigraphNrEdges(d) / 2 = DigraphNrEdges(StrongOrientation(d))); true @@ -1985,8 +1985,8 @@ gap> g := Digraph([[2, 4, 6, 10], [1, 3, 4, 5, 6, 7, 9, 10], [1, 5, 7, 8], gap> HamiltonianPath(g); [ 1, 4, 6, 9, 10, 3, 8, 5, 7, 2 ] -gap> IsDigraphMonomorphism(CycleDigraph(10), -> g, +gap> IsDigraphMonomorphism(CycleDigraph(10), +> g, > Transformation(HamiltonianPath(g))); true gap> g := CompleteMultipartiteDigraph([1, 30]); @@ -2404,7 +2404,7 @@ gap> RankOfTransformation(proj[3]); gap> S := ImageSetOfTransformation(proj[2]);; gap> IsIsomorphicDigraph(CycleDigraph(4), InducedSubdigraph(D, S)); true -gap> G := DigraphRemoveLoops(RandomDigraph(12));; +gap> G := DigraphRemoveLoops(RandomDigraph(12));; gap> H := DigraphRemoveLoops(RandomDigraph(50));; gap> D := DigraphCartesianProduct(G, H);; gap> proj := DigraphCartesianProductProjections(D);; @@ -2431,7 +2431,7 @@ gap> P := DigraphRemoveAllMultipleEdges( > ReducedDigraph(OnDigraphs(D, proj[2])));; gap> IsIsomorphicDigraph(CycleDigraph(4), P); true -gap> G := RandomDigraph(12);; +gap> G := RandomDigraph(12);; gap> H := RandomDigraph(50);; gap> D := DigraphDirectProduct(G, H);; gap> proj := DigraphDirectProductProjections(D);; @@ -2510,21 +2510,21 @@ true gap> Length(M); 111 gap> M1 := [ -> [1, 198], [2, 61], [3, 219], [4, 189], [5, 10], [6, 63], [7, 98], [8, 26], -> [9, 62], [11, 18], [12, 81], [13, 155], [14, 67], [15, 30], [16, 125], -> [17, 168], [19, 23], [20, 162], [21, 143], [22, 197], [24, 166], [25, 79], -> [27, 154], [28, 56], [29, 70], [31, 221], [32, 92], [33, 90], [34, 134], -> [35, 101], [36, 54], [37, 39], [38, 209], [40, 108], [41, 130], [42, 218], -> [43, 144], [44, 120], [45, 116], [46, 192], [47, 217], [48, 159], [49, 203], -> [50, 128], [51, 141], [52, 66], [53, 188], [55, 57], [58, 82], [59, 171], -> [60, 99], [64, 126], [65, 216], [68, 208], [69, 102], [71, 182], [72, 96], -> [73, 137], [74, 184], [75, 152], [76, 111], [77, 185], [78, 167], [80, 207], -> [83, 97], [84, 201], [85, 202], [86, 206], [87, 117], [88, 94], [89, 112], -> [91, 115], [93, 176], [95, 195], [100, 158], [103, 170], [104, 114], -> [105, 131], [106, 139], [107, 177], [109, 127], [110, 133], [113, 212], -> [118, 119], [121, 199], [122, 142], [123, 157], [124, 145], [129, 183], -> [132, 181], [135, 178], [136, 172], [138, 150], [140, 165], [146, 210], -> [147, 211], [148, 149], [151, 161], [153, 187], [156, 191], [160, 193], +> [1, 198], [2, 61], [3, 219], [4, 189], [5, 10], [6, 63], [7, 98], [8, 26], +> [9, 62], [11, 18], [12, 81], [13, 155], [14, 67], [15, 30], [16, 125], +> [17, 168], [19, 23], [20, 162], [21, 143], [22, 197], [24, 166], [25, 79], +> [27, 154], [28, 56], [29, 70], [31, 221], [32, 92], [33, 90], [34, 134], +> [35, 101], [36, 54], [37, 39], [38, 209], [40, 108], [41, 130], [42, 218], +> [43, 144], [44, 120], [45, 116], [46, 192], [47, 217], [48, 159], [49, 203], +> [50, 128], [51, 141], [52, 66], [53, 188], [55, 57], [58, 82], [59, 171], +> [60, 99], [64, 126], [65, 216], [68, 208], [69, 102], [71, 182], [72, 96], +> [73, 137], [74, 184], [75, 152], [76, 111], [77, 185], [78, 167], [80, 207], +> [83, 97], [84, 201], [85, 202], [86, 206], [87, 117], [88, 94], [89, 112], +> [91, 115], [93, 176], [95, 195], [100, 158], [103, 170], [104, 114], +> [105, 131], [106, 139], [107, 177], [109, 127], [110, 133], [113, 212], +> [118, 119], [121, 199], [122, 142], [123, 157], [124, 145], [129, 183], +> [132, 181], [135, 178], [136, 172], [138, 150], [140, 165], [146, 210], +> [147, 211], [148, 149], [151, 161], [153, 187], [156, 191], [160, 193], > [163, 169], [164, 174], [173, 175], [179, 220], [180, 213], [186, 214], > [190, 205], [194, 204], [196, 200], [215, 222]];; gap> M = M1; @@ -2546,14 +2546,14 @@ true gap> Length(M); 63 gap> M1 := [ -> [1, 76], [2, 56], [3, 95], [4, 57], [5, 22], [6, 60], [7, 30], [8, 125], -> [9, 52], [10, 100], [11, 28], [12, 89], [13, 40], [14, 105], [15, 37], -> [16, 67], [17, 91], [18, 58], [19, 120], [20, 73], [21, 87], [23, 63], -> [24, 85], [25, 99], [26, 45], [27, 46], [29, 90], [31, 78], [32, 98], -> [33, 74], [34, 108], [35, 86], [36, 117], [38, 48], [39, 119], [41, 84], -> [42, 75], [43, 71], [44, 123], [47, 88], [49, 114], [50, 83], [51, 68], -> [53, 92], [54, 59], [55, 64], [61, 77], [62, 116], [65, 118], [66, 107], -> [69, 104], [70, 103], [72, 121], [79, 115], [80, 113], [81, 94], [82, 122], +> [1, 76], [2, 56], [3, 95], [4, 57], [5, 22], [6, 60], [7, 30], [8, 125], +> [9, 52], [10, 100], [11, 28], [12, 89], [13, 40], [14, 105], [15, 37], +> [16, 67], [17, 91], [18, 58], [19, 120], [20, 73], [21, 87], [23, 63], +> [24, 85], [25, 99], [26, 45], [27, 46], [29, 90], [31, 78], [32, 98], +> [33, 74], [34, 108], [35, 86], [36, 117], [38, 48], [39, 119], [41, 84], +> [42, 75], [43, 71], [44, 123], [47, 88], [49, 114], [50, 83], [51, 68], +> [53, 92], [54, 59], [55, 64], [61, 77], [62, 116], [65, 118], [66, 107], +> [69, 104], [70, 103], [72, 121], [79, 115], [80, 113], [81, 94], [82, 122], > [93, 110], [96, 109], [97, 112], [101, 111], [102, 106], [124, 126]];; gap> M = M1; true @@ -2918,7 +2918,7 @@ gap> ForAll(probs, # all zeros except for the sink > or (v[comp] = 1 and scc.id[comp] = sink))); true -# DIGRAPHS_UnbindVariables +# Unbind local variables, auto-generated by etc/tst-unbind-local-vars.py gap> Unbind(A); gap> Unbind(B); gap> Unbind(D); @@ -2934,9 +2934,11 @@ gap> Unbind(a); gap> Unbind(adj); gap> Unbind(adj1); gap> Unbind(adj2); +gap> Unbind(adjacencies); gap> Unbind(b); gap> Unbind(circuit); gap> Unbind(complete15); +gap> Unbind(comps); gap> Unbind(cycle12); gap> Unbind(e); gap> Unbind(erev); @@ -2949,11 +2951,16 @@ gap> Unbind(gr2); gap> Unbind(gr3); gap> Unbind(gr4); gap> Unbind(grid); +gap> Unbind(group); gap> Unbind(i); +gap> Unbind(id); +gap> Unbind(isGraph); gap> Unbind(j); gap> Unbind(mat); gap> Unbind(multiple); +gap> Unbind(names); gap> Unbind(nbs); +gap> Unbind(order); gap> Unbind(probs); gap> Unbind(proj); gap> Unbind(r); @@ -2961,9 +2968,11 @@ gap> Unbind(rd); gap> Unbind(reflextrans); gap> Unbind(reflextrans1); gap> Unbind(reflextrans2); +gap> Unbind(representatives); gap> Unbind(rev); gap> Unbind(rgr); gap> Unbind(scc); +gap> Unbind(schreierVector); gap> Unbind(sink); gap> Unbind(soccer); gap> Unbind(str); diff --git a/tst/standard/labels.tst b/tst/standard/labels.tst index f2bb80744..de899dc6f 100644 --- a/tst/standard/labels.tst +++ b/tst/standard/labels.tst @@ -18,8 +18,8 @@ gap> gr := RandomDigraph(10);; gap> DigraphVertexLabels(gr); [ 1 .. 10 ] gap> SetDigraphVertexLabels(gr, ["a", "b", 10]); -Error, the 2nd arument must be a list with length equal to the number \ -of vertices of the digraph that is the 1st argument, +Error, the 2nd argument must be a list with length equal to the number\ + of vertices of the digraph that is the 1st argument, gap> gr := RandomDigraph(3);; gap> SetDigraphVertexLabels(gr, ["a", "b", 10]); gap> DigraphVertexLabels(gr);