/* Pari
/* Weierstrass p-function
/* Author: Joachim Wehler
*/
default(format, "f0.10" ); 

print ("===================================================="); 
print ( "Congruence subgroups_20, Start \n");

print ( "Modular forms, cusp forms, newforms,\n");

default(parisizemax, "16G");

case = 2;

if (case == 0, level = 1);
if (case == 1, level = 2);
if (case == 2, level = 4);
if (case == 3, level = 11);
if (case == 4, level = 17);

print ("Congruence subgroup Gamma_0(", level, "): Modular forms, oldforms, newforms", "\n");

print ("Index [Gamma:\Gamma_0(", level , ")] = ", #mfcosets(level),"\n");
print ("Right cosets: ", mfcosets(level), "\n");

C = mfcusps(level);

print ("Cusps of Gamma_0(", level, "): ", C, "\n");

print ("Weight k: (dim M_k(Gamma_0(",level,"), dim S_k_old(Gamma_0(", level, "), dim S_k_new(Gamma_0(", level, ")))\n");

for (k = 0, 6, { 	
	weight 		= 2*k;
	mod_space 	= mfinit([level, weight]);	
	print(weight,": (", mfdim([level, weight], 4), ", " , mfdim([level, weight], 2), ", ", mfdim([level, weight], 0), ")"); })

/*
print ("\nFourier series of basis of M_2(\Gamma_0(", level, ")): \n");
basis = mfbasis(mfinit([level,2]));
for (k = 1, #basis, {
	S = Ser(mfcoefs(basis[k],1),q);
	print (S);})
*/
print ("\nCongruence subgroups_20, End");
print("====================================================");


