"Source: Text/Geometry/ModFrmAlg.text";
"Line: 1355";
"Date: Thu Sep 25 14:47:45 2025";
"Main: Fri Sep 26 14:29:19 2025";
// original file: Text/Geometry/ModFrmAlg.text, line: 1355
// Example: H151E6 ()
print "Example: H151E6";
ei := GetEchoInput();
SetEchoInput(true);
Q := SymmetricMatrix([6,0,2,-4,-1,12,3,1,6,12]);
M := OrthogonalModularForms(Q);
Norm(Discriminant(Level(M)));
assert $1 eq 193;
time Dimension(M);
assert $1 eq 9;
T2 := HeckeOperator(M,2);
T2;
D := Decomposition(M);
[Dimension(d) : d in D];
time fs := HeckeEigenforms(M);
#fs;
assert $1 eq 3;
[IsCuspidal(f) : f in fs];
f := fs[3];
chi := KroneckerCharacter(193, Rationals());
g := qEigenform(NewformDecomposition(CuspidalSubspace(ModularSymbols([chi],2)))
[1], 20);
L := Parent(Coefficient(g,1));
K<alpha> := Parent(HeckeEigenvalue(f,2));
rts := Roots(MinimalPolynomial(alpha), L);
h := hom<K -> L | rts[1][1]>;
for p in PrimesUpTo(20) do
ap := Coefficient(g,p);
lambda_p := HeckeEigenvalue(f,p);
assert ap^2 + p*(1-chi(p)) eq h(lambda_p);
end for;
f := fs[2];
K := QuadraticField(193);
ZK := Integers(K);
g := Eigenforms(HilbertCuspForms(K, 1*ZK, [2,2]))[1];
g_evs := [[HeckeEigenvalue(g, P) : P in PrimeIdealsOverPrime(K,p)] : 
                                                         p in PrimesUpTo(10)];
_<alpha> := Universe(g_evs[1]);
(2*alpha-1)^2;
assert $1 eq 17;
time &and[HeckeEigenvalue(f,p) eq &*[HeckeEigenvalue(g,P): 
                       P in PrimeIdealsOverPrime(K,p)] : p in PrimesUpTo(20)];
assert $1;
SetEchoInput(ei);
