edgarcosta/hilbertmodularforms

Linear algebra bug with subspace

SamSchiavone opened this issue · 3 comments

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

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);

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;

#358 should have fixed this.

(Well, f is Bpp[3] rather than Bpp[1], but otherwise it seems to work)