Linear algebra bug with subspace
SamSchiavone opened this issue · 3 comments
SamSchiavone commented
When I try to compute a Hilbert modular surface with nontrivial level, I get a bug with the subspace constructor. It looks like the error occurs inside ComplementBasis
.
Loading file "config.m"
> SetDebugOnError(true);
> F := LMFDBField("2.2.13.1");
> NN := LMFDBIdeal(F, "3.1");
> WriteCanonicalRingComputationToFile(F,NN);
The traceback:
WriteCanonicalRingComputationToFile(
F: Number Field with defining polynomial x^2 - x - 3 over the R
...,
NN: Principal Prime Ideal Generator: [0, -1]
)
HilbertModularVariety(
F: Number Field with defining polynomial x^2 - x - 3 over the R...,
N: Principal Prime Ideal Generator: [0, -1],
MaxGeneratorWeight: 10,
MaxRelationWeight: 20
)
ConstructGeneratorsAndRelations(
M: Graded ring of Hilbert modular forms over Number Field with ...,
N: Principal Prime Ideal Generator: [0, -1],
MaxWeightGens: 10,
MaxWeightRelations: 20
)
ExtendBasis(
forms: [ Coefficients for component ideal class bb = Principal Idea...,
Mk: Space of Hilbert modular forms over Number Field with defini...
)
ComplementBasis(
Wbasis: [ Coefficients for component ideal class bb = Principal Idea...,
Vbasis: [ Coefficients for component ideal class bb = Principal Idea...
)
In file "/home/sschiavo/github/hilbertmodularforms/ModFrmHilD/LinearAlgebra.m", line 134, column 11:
>> W := sub<V | Rows(WCoeffMatrix)>;
^
Runtime error in sub< ... >: Result is not in the lhs of the constructor
BenKBreen commented
Ah - I think this may be the q-expansions?
We were updating these to include character, but it looks like the multiplication no longer lands inside the space. Angie and I are traveling to see her parents next week, but I should be able to help dig into this once we get back.
load "config.m";
F := QuadraticField(13);
ZF := Integers(F);
pp := Factorization(2*ZF)[1][1];
// Initialize
M := GradedRingOfHMFs(F,5);
M2 := HMFSpace(M,pp,[2,2]);
M4 := HMFSpace(M,pp,[4,4]);
B2 := CuspFormBasis(M2);
B4 := CuspFormBasis(M4);
f := B2[1];
LinearDependence([f*f] cat B4);
BenKBreen commented
Quick update: I think the issue lies in the construction of the q-expansions for old forms.
load "config.m";
F := QuadraticField(13);
ZF := Integers(F);
pp := Factorization(2*ZF)[1][1];
// Initialize
M := GradedRingOfHMFs(F,5);
Mk := HMFSpace(M,1*ZF,[4,4]);
Mkpp := HMFSpace(M,pp,[4,4]);
B := CuspFormBasis(Mk);
Bpp := CuspFormBasis(Mkpp);
f := Inclusion(B[1], Mkpp, 1*ZF);
g := Bpp[1];
// These should be equal
f eq g;
abhijit-mudigonda commented
#358 should have fixed this.
(Well, f
is Bpp[3]
rather than Bpp[1]
, but otherwise it seems to work)