Skip to content

Commit 76a5b6d

Browse files
committed
Improve BaseDomain for plist-of-list matrices
The added tests also reveal various long standing bugs in the underlying code.
1 parent ab576a6 commit 76a5b6d

File tree

2 files changed

+74
-2
lines changed

2 files changed

+74
-2
lines changed

lib/matrix.gi

+12-2
Original file line numberDiff line numberDiff line change
@@ -1280,9 +1280,19 @@ InstallOtherMethod( ConstructingFilter,
12801280
v -> IsPlistRep );
12811281

12821282
InstallOtherMethod( BaseDomain,
1283-
"generic method for a matrix that is a plain list",
1283+
"generic method for a plain list matrix",
12841284
[ IsMatrix and IsPlistRep ],
1285-
mat -> BaseDomain( mat[1] ) );
1285+
mat -> BaseDomain( Concatenation( mat ) ) );
1286+
1287+
InstallOtherMethod( BaseDomain,
1288+
"generic method for a plain list matrix over a finite field",
1289+
[ IsMatrix and IsPlistRep and IsFFECollColl ],
1290+
DefaultFieldOfMatrix );
1291+
1292+
InstallOtherMethod( BaseDomain,
1293+
"generic method for a plain list over the cyclotomics",
1294+
[ IsMatrix and IsPlistRep and IsCyclotomicCollColl ],
1295+
DefaultFieldOfMatrix );
12861296

12871297
InstallOtherMethod( OneOfBaseDomain,
12881298
"generic method for a matrix that is a plain list",
+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
gap> START_TEST("BaseDomain.tst");
2+
3+
#
4+
gap> m := [[1,2],[3,4]];;
5+
gap> BaseDomain(m);
6+
Rationals
7+
gap> BaseDomain(Matrix(m));
8+
Rationals
9+
gap> BaseDomain(Matrix(Rationals, m));
10+
Rationals
11+
gap> BaseDomain(Matrix(Integers, m));
12+
Integers
13+
14+
# FIXME: BUG:
15+
#gap> BaseDomain(Matrix(GF(2), m));
16+
#Rationals
17+
18+
#
19+
gap> m := [[1,2],[3,4/3]];;
20+
gap> BaseDomain(m);
21+
Rationals
22+
gap> BaseDomain(Matrix(m));
23+
Rationals
24+
gap> BaseDomain(Matrix(Rationals, m));
25+
Rationals
26+
27+
# FIXME: BUG:
28+
# gap> BaseDomain(Matrix(Integers, m));
29+
#Integers
30+
#gap> BaseDomain(Matrix(GF(2), m));
31+
#Rationals
32+
33+
#
34+
gap> m := [[1,2],[3,4]] * Z(2);;
35+
gap> BaseDomain(m);
36+
GF(2)
37+
gap> BaseDomain(Matrix(m));
38+
GF(2)
39+
gap> BaseDomain(Matrix(GF(2), m));
40+
GF(2)
41+
42+
# FIXME: BUG:
43+
#gap> BaseDomain(Matrix(Rationals, m));
44+
#Rationals
45+
46+
#
47+
gap> m := [[1,2],[3,Z(4)]] * Z(2);;
48+
gap> BaseDomain(m);
49+
GF(2^2)
50+
gap> BaseDomain(Matrix(m));
51+
GF(2^2)
52+
gap> BaseDomain(Matrix(GF(4), m));
53+
GF(2^2)
54+
gap> BaseDomain(Matrix(GF(2), m));
55+
Error, ConvertToVectorRepNC: Vector cannot be written over GF(2)
56+
57+
# FIXME: BUG:
58+
#gap> BaseDomain(Matrix(Rationals, m));
59+
#Rationals
60+
61+
#
62+
gap> STOP_TEST("BaseDomain.tst");

0 commit comments

Comments
 (0)