Quelle semiringmat.tst
Sprache: unbekannt
|
|
Spracherkennung für: .tst vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
#############################################################################
##
#W standard/elements/semiringmat.tst
#Y Copyright (C) 2015- 2022 James D. Mitchell
##
## Licensing information can be found in the README file of this package.
##
#############################################################################
##
#@local S, coll, f, filename, ht, m, mat, x
gap> START_TEST("Semigroups package: standard/elements/semiringmat.tst");
gap> LoadPackage("semigroups", false);;
#
gap> SEMIGROUPS.StartTest();
# Matrix: return an answer, all possibilities, and TransposedMat
gap> Matrix(IsBooleanMat, [[ 1, 0, 0, 0],
> [ 0, 0, 0, 0],
> [ 1, 1, 1, 1],
> [ 1, 0, 1, 1]]);
Matrix(IsBooleanMat, [[ 1, 0, 0, 0], [ 0, 0, 0, 0], [ 1, 1, 1, 1], [ 1, 0, 1, 1]])
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsMaxPlusMatrix, [[ 4, 0, - 2],
> [ 1, - 3, 0],
> [ 5, - 1, - 4]]);
Matrix(IsMaxPlusMatrix, [[ 4, 0, - 2], [ 1, - 3, 0], [ 5, - 1, - 4]])
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsMinPlusMatrix, [[- 1, infinity],
> [ 1, - 1]]);
Matrix(IsMinPlusMatrix, [[- 1, infinity], [ 1, - 1]])
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsTropicalMaxPlusMatrix, [[ 3, 2, 4],
> [ 3, 1, 1],
> [-infinity, 1, 1]],
> 9);
Matrix(IsTropicalMaxPlusMatrix, [[ 3, 2, 4], [ 3, 1, 1], [-infinity, 1, 1]], 9)
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsTropicalMinPlusMatrix, [[ 1, 1, 1],
> [ 0, 3, 0],
> [ 1, 1, 3]],
> 9);
Matrix(IsTropicalMinPlusMatrix, [[ 1, 1, 1], [ 0, 3, 0], [ 1, 1, 3]], 9)
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsProjectiveMaxPlusMatrix, [[ 0, -infinity, - 1, 0],
> [ 0, - 1, -infinity, -infinity],
> [ 4, 4, 2, - 1],
> [ 1, 1, 0, 3]]);
Matrix(IsProjectiveMaxPlusMatrix, [[ 0, -infinity, - 1, 0],
[ 0, - 1, -infinity, -infinity], [ 4, 4, 2, - 1], [ 1, 1, 0, 3]])
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(IsNTPMatrix, [[ 0, 0, 0],
> [ 2, 0, 1],
> [ 2, 2, 2]],
> 2, 1);
Matrix(IsNTPMatrix, [[ 0, 0, 0], [ 2, 0, 1], [ 2, 2, 2]], 2, 1)
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(Integers, [[- 1, - 2, 0],
> [ 0, 3, - 1],
> [ 1, 0, - 3]]);
< 3x3-matrix over Integers>
gap> TransposedMat(TransposedMat(last)) = last;
true
gap> Matrix(Integers, [[- 1, - 2, 0],
> [ 0, 3, - 1],
> [ 1, 0, - 3]]);
< 3x3-matrix over Integers>
gap> TransposedMat(TransposedMat(last)) = last;
true
# gap> Matrix(GF( 3), [[Z( 3), Z( 3) ^ 0, Z( 3)],
# > [Z( 3), Z( 3) ^ 0, Z( 3) ^ 0],
# > [Z( 3), 0 * Z( 3), 0 * Z( 3)]]);
# Matrix(GF( 3), [[Z( 3), Z( 3)^ 0, Z( 3)], [Z( 3), Z( 3)^ 0, Z( 3)^ 0],
# [Z( 3), 0*Z( 3), 0*Z( 3)]])
# gap> TransposedMat(TransposedMat(last)) = last;
# true
# semiringmat: MatrixNC for a matrix over semiring and homogeneous list
gap> mat := Matrix(IsTropicalMaxPlusMatrix, [[ 0, 3], [ 0, 2]], 5);
Matrix(IsTropicalMaxPlusMatrix, [[ 0, 3], [ 0, 2]], 5)
gap> One(mat);
Matrix(IsTropicalMaxPlusMatrix, [[ 0, -infinity], [-infinity, 0]], 5)
# semiringmat: Matrix, for a filter, homogeneous list, pos int, and pos int,
# 1/ 3
gap> Matrix(IsNTPMatrix, [[ 1, 1], [ 2]], 3, 3);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `Matrix' on 4 arguments
gap> Matrix(IsNTPMatrix, [[ 1, 1, 3], [ 1, 2, 3]], 3, 3);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `Matrix' on 4 arguments
# semiringmat: Matrix, for a filter, homogeneous list, pos int, and pos int,
# 2/ 3
gap> Matrix(Integers, [[ 1, 1], [ 2, 2]], 3, 3);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `Matrix' on 4 arguments
# semiringmat: Matrix, for a filter, homogeneous list, pos int, and pos int,
# 3/ 3
gap> Matrix(IsNTPMatrix, [[ 1, 1], [ 2, 10]], 3, 3);
Error, the entries in the 2nd argument do not define a matrix of type IsNTPMat\
rix
# semiringmat: Matrix, for a filter, homogeneous list, and pos int, 1/ 3
gap> Matrix(IsTropicalMaxPlusMatrix, [[ 1, 1], [ 2]], 3);
Error, the 2nd argument must define a square matrix
gap> Matrix(IsTropicalMaxPlusMatrix, [[ 1, 1, 3], [ 1, 2, 3]], 3);
Error, the 2nd argument must define a square matrix
# semiringmat: Matrix, for a filter, homogeneous list, and pos int, 3/ 3
gap> Matrix(IsTropicalMinPlusMatrix, [[ 1, 1], [ 2, 10]], 3);
Error, the entries in the 2nd argument do not define a matrix of type IsTropic\
alMinPlusMatrix
# semiringmat: Matrix, for Integers and homogeneous list, 1/ 3
# TODO(MatrixObj-later) the following works fine in MatrixObj land
# see https://github.com/gap-system/gap/issues/4885
# gap> Matrix(Integers, [[ 1, 1], [ 2]]);
# Error, no method found! For debugging hints type ?Recovery from NoMethodFound
# Error, no 2nd choice method found for `Matrix' on 2 arguments
# The following works fine in GAP 4. 12.x but not in GAP 4. 11. 1
# gap> Matrix(Integers, [[ 1, 1, 3], [ 1, 2, 3]]);
# < 2x3-matrix over Integers>
# semiringmat: Matrix, for a filter and homogeneous list, 2/ 3
gap> Matrix(IsNTPMatrix, [[ 1, 1], [ 1, 2]]);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `Matrix' on 2 arguments
# semiringmat: Matrix, for a filter and homogeneous list, 3/ 3
# TODO(MatrixObj-later) the following works fine in MatrixObj land
# see: https://github.com/gap-system/gap/issues/4884
# gap> Matrix(Integers, [[ 1, 1], [ 2, E( 8)]]);
# Error, the entries in the 2nd argument do not define a matrix of type IsIntege\
# rMatrix
# semiringmat: Matrix, for a semiring and homogeneous list, 1/ 3
# WORKAROUND: disabled until https://github.com/gap-system/gap/issues/4814
# is fully resolved
#gap> Matrix(Integers, [[ 1, 1], [ 2]]);
#Error, the 2nd argument <mat> does not give a rectangular table
# semiringmat: Matrix, for a semiring and homogeneous list, 2/ 3
gap> Matrix(Rationals, [[ 1, 1], [ 2, 2]]);
< 2x2-matrix over Rationals>
# semiringmat: Matrix, for a semiring and homogeneous list, 3/ 3
# TODO(MatrixObj-later) the following works fine in MatrixObj land
# see: https://github.com/gap-system/gap/issues/4884
# gap> Matrix(Integers, [[ 1, 1], [ 2, E( 8)]]);
# Error, the entries in the 2nd argument do not define a matrix of type IsIntege\
# rMatrix
# semiringmat: RandomMatrix, 1
gap> RandomMatrix(Integers, 2);;
# semiringmat: RandomMatrix, 2
gap> RandomMatrix(IsTropicalMaxPlusMatrix, 2, 2);;
# semiringmat: RandomMatrix, 3
gap> RandomMatrix(IsNTPMatrix, 2, 2, 2);;
# semiringmat: RandomMatrix, 4
gap> RandomMatrix(GF( 7), 2);;
# semiringmat: RandomMatrix, 5
gap> RandomMatrix( 7, 2);;
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `RandomMatrix' on 2 arguments
# semiringmat: RandomMatrix, 6
gap> RandomMatrix( 7, 2, 3);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 1st choice method found for `RandomMatrix' on 3 arguments
# semiringmat: RandomMatrix, for a semiring, 7
gap> RandomMatrix(Integers, 20);;
# semiringmat: PrintString, DisplayString for a collection
gap> mat := Matrix(IsBooleanMat, [[ 1, 0, 0, 0],
> [ 0, 0, 0, 0],
> [ 1, 1, 1, 1],
> [ 1, 0, 1, 1]]);
Matrix(IsBooleanMat, [[ 1, 0, 0, 0], [ 0, 0, 0, 0], [ 1, 1, 1, 1], [ 1, 0, 1, 1]])
gap> Display([mat, mat ^ 2]);
1 0 0 0
0 0 0 0
1 1 1 1
1 0 1 1
1 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
gap> PrintString([mat, mat ^ 2]);
"\>\>Matrix(\<\>IsBooleanMat\<, \>[\>\>[ 1, 0, 0, 0]\<, \<\>\>[ 0, 0, 0, 0]\<, \
\<\>\>[ 1, 1, 1, 1]\<, \<\>\>[ 1, 0, 1, 1]\<\<]\<)\<\>\>\>Matrix(\<\>IsBooleanMa\
t\<, \>[\>\>[ 1, 0, 0, 0]\<, \<\>\>[ 0, 0, 0, 0]\<, \<\>\>[ 1, 1, 1, 1]\<, \<\>\>\
[ 1, 1, 1, 1]\<\<]\<)\<\<"
gap> PrintString(MinimalDClass(Semigroup(mat)));
"\>\>\>GreensDClassOfElement\<(\>\>Semigroup(\>\n\>\>\>Matrix(\<\>IsBooleanMat\
\<, \>[\>\>[ 1, 0, 0, 0]\<, \<\>\>[ 0, 0, 0, 0]\<, \<\>\>[ 1, 1, 1, 1]\<, \<\>\>[\
1, 0, 1, 1]\<\<]\<\<\> \<)\<\<,\< \>\>\>Matrix(\<\>IsBooleanMat\<, \>[\>\>[ 1, \
0, 0, 0]\<, \<\>\>[ 0, 0, 0, 0]\<, \<\>\>[ 1, 1, 1, 1]\<, \<\>\>[ 1, 1, 1, 1]\<\<\
]\<)\<\<)\<\<"
# semiringmat: Display and DisplayString for a matrix
gap> Matrix(IsProjectiveMaxPlusMatrix, [[ 0, -infinity, - 1, 0],
> [ 0, - 1, -infinity, -infinity],
> [ 4, 4, 2, - 1],
> [ 1, 1, 0, 3]]);
Matrix(IsProjectiveMaxPlusMatrix, [[ 0, -infinity, - 1, 0],
[ 0, - 1, -infinity, -infinity], [ 4, 4, 2, - 1], [ 1, 1, 0, 3]])
gap> Display(last);
0 -∞ - 1 0
0 - 1 -∞ -∞
4 4 2 - 1
1 1 0 3
gap> mat := One(RandomMatrix(IsMinPlusMatrix, 2));
Matrix(IsMinPlusMatrix, [[ 0, infinity], [infinity, 0]])
gap> Display(mat);
0 ∞
∞ 0
gap> mat := Matrix(IsMaxPlusMatrix, [[ 0, -infinity, - 1, 0],
> [ 100, - 1, -infinity, -infinity],
> [ 4, 40, 2, - 1],
> [ 1, 1, 1000, 33313]]);;
gap> Display(mat);
0 -∞ - 1 0
100 - 1 -∞ -∞
4 40 2 - 1
1 1 1000 33313
# semiringmat: ViewString for a matrix of dim >= 9
gap> mat := RandomMatrix(IsTropicalMinPlusMatrix, 9, 3);
< 9x9 tropical min-plus matrix>
# semiringmat: \=, different types, 1/ 4
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> = Matrix(IsTropicalMaxPlusMatrix, [[ 1, 1], [-infinity, 3]], 3);
false
# semiringmat: \=, different dims, 2/ 4
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> = Matrix(IsTropicalMinPlusMatrix, [[ 2]], 3);
false
# semiringmat: \=, different threshold, 3/ 4
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> = Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 4);
false
# semiringmat: \=, different period, 4/ 4
gap> Matrix(IsNTPMatrix, [[ 2, 1], [ 1, 3]], 3, 3)
> = Matrix(IsNTPMatrix, [[ 2, 1], [ 1, 3]], 3, 4);
false
# semiringmat: \<, 1/ 4
gap> mat := Matrix(IsTropicalMinPlusMatrix,
> [[ 2, infinity, infinity, 3, 1, 1, infinity, 3, 3],
> [ 1, 1, 1, 1, 1, 2, 0, infinity, 0],
> [ 0, 1, 1, 2, 2, 1, 0, infinity, 1],
> [ 1, 3, infinity, infinity, 3, 2, 2, 3, 2],
> [ 1, infinity, infinity, 1, 2, 1, 1, 3, 2],
> [infinity, infinity, 0, 0, 2, 1, 3, 3, infinity],
> [infinity, 2, 1, 0, 1, 2, 2, 0, 2],
> [infinity, 0, 3, infinity, 1, 3, infinity, 2, 3],
> [ 0, 2, infinity, 2, 1, 0, infinity, 1, 1]], 3);
< 9x9 tropical min-plus matrix>
gap> S := Semigroup(mat);
<commutative semigroup of 9x9 tropical min-plus matrices with 1 generator>
gap> Size(S);
9
gap> AsSet(AsList(S));
[ < 9x9 tropical min-plus matrix>, < 9x9 tropical min-plus matrix>,
< 9x9 tropical min-plus matrix>, < 9x9 tropical min-plus matrix>,
< 9x9 tropical min-plus matrix>, < 9x9 tropical min-plus matrix>,
< 9x9 tropical min-plus matrix>, < 9x9 tropical min-plus matrix>,
< 9x9 tropical min-plus matrix> ]
# semiringmat: \<, equal matrices, 2/ 4
gap> mat := Matrix(Integers, [[- 2, 0], [ 0, 3]]);;
gap> mat < mat;
false
# semiringmat: \<, different types, 3/ 4
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> < Matrix(IsTropicalMaxPlusMatrix, [[ 1, 1], [-infinity, 3]], 3);
Error, the matrices are not of the same type
# semiringmat: \<, different dims, 4/ 4
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> < Matrix(IsTropicalMinPlusMatrix, [[ 2]], 3);
false
gap> Matrix(IsTropicalMinPlusMatrix, [[ 2, infinity], [infinity, 3]], 3)
> > Matrix(IsTropicalMinPlusMatrix, [[ 2]], 3);
true
# semiringmat: ChooseHashFunction and use that hash function, 1/ 1
gap> mat := Matrix(IsTropicalMinPlusMatrix,
> [[ 2, infinity, infinity, 3, 1, 1, infinity, 3, 3],
> [ 1, 1, 1, 1, 1, 2, 0, infinity, 0],
> [ 0, 1, 1, 2, 2, 1, 0, infinity, 1],
> [ 1, 3, infinity, infinity, 3, 2, 2, 3, 2],
> [ 1, infinity, infinity, 1, 2, 1, 1, 3, 2],
> [infinity, infinity, 0, 0, 2, 1, 3, 3, infinity],
> [infinity, 2, 1, 0, 1, 2, 2, 0, 2],
> [infinity, 0, 3, infinity, 1, 3, infinity, 2, 3],
> [ 0, 2, infinity, 2, 1, 0, infinity, 1, 1]], 3);
< 9x9 tropical min-plus matrix>
gap> ht := HTCreate(mat);
<tree hash table len= 100003 used= 0 colls= 0 accs= 0>
gap> for x in Semigroup(mat) do
> HTAdd(ht, x, true);
> od;
gap> ht;
<tree hash table len= 100003 used= 9 colls= 0 accs= 9>
# maxplusmat: AsMatrix, trop. min-plus <-> min-plus, 1/ 3
gap> mat := Matrix(IsTropicalMinPlusMatrix, [[ 1, infinity, 1], [ 0, infinity, 2],
> [infinity, 4, 0]], 10);;
gap> AsMatrix(IsMinPlusMatrix, mat);
Matrix(IsMinPlusMatrix, [[ 1, infinity, 1], [ 0, infinity, 2], [infinity, 4, 0]]
)
gap> AsMatrix(IsTropicalMinPlusMatrix, last, 10);
Matrix(IsTropicalMinPlusMatrix, [[ 1, infinity, 1], [ 0, infinity, 2],
[infinity, 4, 0]], 10)
gap> last = mat;
true
# maxplusmat: AsMatrix, trop. min-plus <-> trop. min-plus, 2/ 3
gap> mat := Matrix(IsTropicalMinPlusMatrix, [[ 1, infinity, 1], [ 0, infinity, 2],
> [infinity, 4, 0]], 10);;
gap> AsMatrix(IsTropicalMinPlusMatrix, mat, 2);
Matrix(IsTropicalMinPlusMatrix, [[ 1, infinity, 1], [ 0, infinity, 2],
[infinity, 2, 0]], 2)
# maxplusmat: AsMatrix, everything, 3/ 3
gap> mat := Matrix(IsTropicalMinPlusMatrix, [[ 0, 1, 3],
> [ 1, 1, 6],
> [ 0, 4, 2]], 10);;
gap> AsMatrix(IsMinPlusMatrix, mat);
Matrix(IsMinPlusMatrix, [[ 0, 1, 3], [ 1, 1, 6], [ 0, 4, 2]])
gap> mat := Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 3],
> [ 0, 1, 3],
> [ 4, 1, 0]], 10);;
gap> AsMatrix(IsMaxPlusMatrix, mat);
Matrix(IsMaxPlusMatrix, [[-infinity, -infinity, 3], [ 0, 1, 3], [ 4, 1, 0]])
gap> mat := Matrix(IsProjectiveMaxPlusMatrix, [[- 1, 2, 1],
> [- 2, - 1, 1],
> [ 1, 1, 2]]);;
gap> AsMatrix(IsMaxPlusMatrix, mat);
Matrix(IsMaxPlusMatrix, [[- 1, 2, 1], [- 2, - 1, 1], [ 1, 1, 2]])
gap> mat := Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 3],
> [ 0, 1, 3],
> [ 4, 1, 0]], 10);;
gap> AsMatrix(IsProjectiveMaxPlusMatrix, mat);
Matrix(IsProjectiveMaxPlusMatrix, [[-infinity, -infinity, 3], [ 0, 1, 3],
[ 4, 1, 0]])
gap> mat := Matrix(IsNTPMatrix, [[ 1, 2, 2],
> [ 0, 2, 0],
> [ 1, 3, 0]], 4, 5);;
gap> Matrix(Integers, mat);
< 3x3-matrix over Integers>
gap> mat := Matrix(IsMinPlusMatrix, [[ 0, 1, 3], [ 1, 1, 6], [ 0, 4, 2]]);;
gap> mat := AsMatrix(IsTropicalMinPlusMatrix, mat, 2);
Matrix(IsTropicalMinPlusMatrix, [[ 0, 1, 2], [ 1, 1, 2], [ 0, 2, 2]], 2)
gap> mat := AsMatrix(IsTropicalMinPlusMatrix, mat, 1);
Matrix(IsTropicalMinPlusMatrix, [[ 0, 1, 1], [ 1, 1, 1], [ 0, 1, 1]], 1)
gap> mat := Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 3],
> [ 0, 1, 3],
> [ 4, 1, 0]], 10);;
gap> AsMatrix(IsTropicalMaxPlusMatrix, mat, 4);
Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 3], [ 0, 1, 3],
[ 4, 1, 0]], 4)
gap> mat := Matrix(IsProjectiveMaxPlusMatrix,
> [[-infinity, -infinity, 3],
> [ 0, 1, 3],
> [ 4, 1, 0]]);;
gap> AsMatrix(IsTropicalMaxPlusMatrix, mat, 1);
Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 1], [ 0, 1, 1],
[ 1, 1, 0]], 1)
gap> mat := Matrix(IsMaxPlusMatrix, [[-infinity, -infinity, 3],
> [ 0, 1, 3],
> [ 4, 1, 0]]);;
gap> AsMatrix(IsTropicalMaxPlusMatrix, mat, 10);
Matrix(IsTropicalMaxPlusMatrix, [[-infinity, -infinity, 3], [ 0, 1, 3],
[ 4, 1, 0]], 10)
gap> AsMatrix(IsProjectiveMaxPlusMatrix, mat);
Matrix(IsProjectiveMaxPlusMatrix, [[-infinity, -infinity, 3], [ 0, 1, 3],
[ 4, 1, 0]])
gap> mat := Matrix(IsNTPMatrix, [[ 0, 1, 0],
> [ 1, 3, 1],
> [ 1, 0, 1]], 10, 10);;
gap> mat := AsMatrix(IsNTPMatrix, mat, 5, 6);
Matrix(IsNTPMatrix, [[ 0, 1, 0], [ 1, 3, 1], [ 1, 0, 1]], 5, 6)
gap> mat := AsMatrix(IsNTPMatrix, mat, 2, 6);
Matrix(IsNTPMatrix, [[ 0, 1, 0], [ 1, 3, 1], [ 1, 0, 1]], 2, 6)
gap> mat := AsMatrix(IsNTPMatrix, mat, 2, 1);
Matrix(IsNTPMatrix, [[ 0, 1, 0], [ 1, 2, 1], [ 1, 0, 1]], 2, 1)
gap> mat := Matrix(Integers, mat);
< 3x3-matrix over Integers>
gap> AsMatrix(IsNTPMatrix, mat, 1, 2);
Matrix(IsNTPMatrix, [[ 0, 1, 0], [ 1, 2, 1], [ 1, 0, 1]], 1, 2)
# semiringmat: ELM_LIST, 1/ 1
gap> mat := Matrix(Integers, [[ 0, 1, 0], [ 1, 2, 1], [ 1, 0, 1]]);;
gap> mat[ 1];
<plist vector over Integers of length 3>
gap> mat[ 4];
Error, List Element: <list>[ 4] must have an assigned value
# semiringmat, pickling
gap> S := FullTropicalMaxPlusMonoid( 2, 10);
<monoid of 2x2 tropical max-plus matrices with 69 generators>
gap> filename := Filename(DirectoryTemporary(), "fulltrop.gz");;
gap> WriteGenerators(filename, [S]);
IO_OK
gap> S = Semigroup(ReadGenerators(filename)[ 1]);
true
# semiringmat, unpickling boolean mats
gap> S := FullBooleanMatMonoid( 4);
<monoid of 4x4 boolean matrices with 7 generators>
gap> filename := Filename(DirectoryTemporary(), "fulltrop.gz");;
gap> WriteGenerators(filename, [S]);
IO_OK
gap> S = Semigroup(ReadGenerators(filename)[ 1]);
true
gap> Exec("rm ", filename);
# semiringmat, IsGeneratorsOfSemigroup
gap> coll := [Matrix(Integers, [[- 1, - 1, 0, 3, 0], [- 1, 1, 3, 0, 0],
> [- 1, 0, 0, - 1, 0], [ 0, 4, 4, 2, - 1], [ 1, 1, 0, 3, 0]]),
> Matrix(Integers, [[- 3, 0, 0, 4, 0, 2], [- 3, 1, 0, 0, 0, 4],
> [ 0, 1, 2, - 3, 3, - 1], [- 2, 0, 0, 3, - 1, 1], [ 0, - 3, 3, - 1, - 1, 1],
> [ 1, 1, - 2, 0, 0, 0]])];;
gap> IsGeneratorsOfSemigroup(coll);
false
gap> IsGeneratorsOfSemigroup([coll[ 1]]);
true
# semiringmat, TraceMat for Integer matrices
gap> m := Matrix(Integers, [[ 1, 2, 3], [ 4, 5, 6], [ 7, 8, - 9]]);;
gap> TraceMat(m);
- 3
# Test AsTransformation
gap> mat := Matrix(IsMaxPlusMatrix, [[- 2, 2], [ 0, - 1]]);;
gap> AsTransformation(mat);
fail
gap> mat := Matrix(IsMaxPlusMatrix, [[-infinity, 0], [-infinity, 0]]);;
gap> AsTransformation(mat);
Transformation( [ 2, 2 ] )
# Test AsMatrix
gap> mat := AsMatrix(IsMaxPlusMatrix, Transformation([ 2, 2]));
Matrix(IsMaxPlusMatrix, [[-infinity, 0], [-infinity, 0]])
# Test IsGeneratorsOfSemigroup
gap> S := Semigroup(Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10));
<commutative semigroup of 2x2 tropical max-plus matrices with 1 generator>
gap> IsGeneratorsOfSemigroup(DClass(S, S. 1));
true
gap> coll := [Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10),
> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 11)];;
gap> IsGeneratorsOfSemigroup(coll);
false
gap> coll := [Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10),
> Matrix(IsTropicalMinPlusMatrix, [[ 2, 2], [ 0, 1]], 10)];;
gap> IsGeneratorsOfSemigroup(coll);
false
gap> coll := [Matrix(IsTropicalMaxPlusMatrix, [[ 2]], 10),
> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10)];;
gap> IsGeneratorsOfSemigroup(coll);
false
gap> coll := [Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10),
> Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 9, 10)];;
gap> IsGeneratorsOfSemigroup(coll);
false
gap> coll := [Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10),
> Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 9)];;
gap> IsGeneratorsOfSemigroup(coll);
false
# Test Matrix for a finite field
gap> mat := Matrix(GF( 3), [[Z( 3)]]);
[ [ Z( 3) ] ]
gap> Matrix(GF( 3), mat);
[ [ Z( 3) ] ]
# Test RandomMatrix for a finite field
gap> mat := RandomMatrix(GF( 3), 3, 2);;
gap> Rank(mat);
2
gap> mat := RandomMatrix(GF( 3), 3, [ 2, 3]);;
gap> Rank(mat) in [ 2, 3];
true
# Test OneImmutable, fails
gap> coll := [Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10),
> Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 9)];;
gap> OneImmutable(coll);
fail
# Test InverseMutable, fails
gap> InverseMutable(Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10));
fail
# Test InverseImmutable, fails
gap> InverseImmutable(Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10));
fail
# Test TraceMat for a finite field matrix
gap> mat := Matrix(GF( 4), [[Z( 4), Z( 4) ^ 2], [ 0 * Z( 4), Z( 4)]]);;
gap> TraceMat(mat);
0*Z( 2)
# Test DimensionOfMatrixOverSemiringCollection, for a list
gap> coll := [Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10),
> Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 9)];;
gap> DimensionOfMatrixOverSemiringCollection(coll);
2
gap> coll := [Matrix(IsTropicalMaxPlusMatrix, [[ 2]], 10),
> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10)];;
gap> DimensionOfMatrixOverSemiringCollection(coll);
Error, the argument <coll> must be a collection of matrices of equal dimension
# Test DimensionOfMatrixOverSemiringCollection, for a semigroup
gap> S := Semigroup(Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10));;
gap> DimensionOfMatrixOverSemiringCollection(S);
2
# Test String
gap> mat := Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10);;
gap> String(mat);
"Matrix(IsNTPMatrix, [ [ 2, 2 ], [ 0, 1 ] ], 10, 10)"
gap> mat = EvalString(String(mat));
true
gap> mat := Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10);;
gap> String(mat);
"Matrix(IsTropicalMaxPlusMatrix, [ [ 2, 2 ], [ 0, 1 ] ], 10)"
gap> mat = EvalString(String(mat));
true
# Test IsBound
gap> mat := Matrix(IsNTPMatrix, [[ 2, 2], [ 0, 1]], 10, 10);;
gap> IsBound(mat[ 10]);
false
gap> IsBound(mat[ 1]);
true
gap> IsBound(mat[ 3]);
false
# Test \<
gap> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10) <
> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 11);
true
gap> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10) <
> Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10);
false
# Test Matrix for a finite field and list consisting of an empty list
gap> Matrix(GF( 3), [[]]);
[ [ ] ]
# Pickling
gap> filename := Concatenation(SEMIGROUPS.PackageDir,
> "/tst/standard/elements/semiringmat.tst");;
gap> f := IO_File(filename, "r");;
gap> x := Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10);
Matrix(IsTropicalMaxPlusMatrix, [[ 2, 2], [ 0, 1]], 10)
gap> IO_Unpicklers.MOSR(f);
IO_Error
gap> IO_Pickle(f, x);
IO_Error
# RandomMatrix
gap> RandomMatrix(Integers, - 1);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `RandomMatrix' on 2 arguments
gap> RandomMatrix(Integers, - 1, 2);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `RandomMatrix' on 3 arguments
gap> RandomMatrix(Integers, - 1, [ 2]);
Error, no method found! For debugging hints type ?Recovery from NoMethodFound
Error, no 2nd choice method found for `RandomMatrix' on 3 arguments
#
gap> SEMIGROUPS.StopTest();
gap> STOP_TEST("Semigroups package: standard/elements/semiringmat.tst");
[Dauer der Verarbeitung: 0.42 Sekunden, vorverarbeitet 2026-06-17]
|
2026-07-27
|