Application Center - Maplesoft

App Preview:

Eichler Orders

You can switch back to the summary page by clicking here.

Learn about Maple
Download Application




Eichler Orders

Miriam Ciavarella
Università degli Studi di Torino
Italy
miriam.ciavarella@unito.it

Marina Marchisio
Università degli Studi di Torino
Italy
marina.marchisio@unito.it

 

 

Introduction

The aim of this worsheet is to give an explicit description of some Eichler orders of an indefinite quaternion algebra B defined over Q, [V80], [CM2007]. Let we denote by  the Legendre symbol. Let we fix a representation of B as a pair {-dN,p},  where d is the discriminant of B (e.i. the product of a finite even number of  primes), N is a positive integer prime to d and p is a prime number such that:

• 

• 

for each

• 

for each odd prime factor q of N.

 

 

Given an indefinite quaternion algebra B of discriminant d, it is always possible to find a prime number p as above, su that B can be represented as {-dN,p}. Unfortunately it does not exist an interval in which we are sure to find it. For this reason we give a procedure primo in Maple which returns, if it exists, a prime number  p as above in  the possible range [MinBound,MaxBound]; if it returns the null value,  we can change the input  data MinBound,MaxBound and try again.

This means that B can be expressed as   where

Following Hashimoto [Has95] an Eichler order of level N of  B can be expressed as the Z-lattice  R(N)=with

where a is an integer number satisfying .  This construction provides a very useful tool for working with Eichler orders. However it has the limitation of not respecting the natural inclusion of an Eichler order of level M  in an Eichler order of level N for N dividing M.

Let q be a prime number not dividing the discriminant of  B; it is well known that there are two natural inclusion maps of  in R(N).  In [CT2007]  we provide a basis for a chain on Eichler orders in B. Our last procedure is based on this work and returns two bases: the first one is a basis of  an Eichler order on level Nq in B and the second one is a basis of the other copy of R(Nq) in R(N) .

 

Initialization

restart:

with(numtheory):with(padic):

Representation of B as a pair {-dN,p}

Procedure Definition

We give a new procedure primo in Maple for computing a prime p as in the introduction.

Input data are:

Discr:  the discriminant of the quaternion algebra B; it is a positive integer number, which is the product of a finite even number of  primes;

LevelN:  a positive integer prime to d;

MinBound: a positive integer number;

MaxBound: a positive integer number greater then MinBound.

Output data are:

or a prime number p contained in [MinBound,MaxBound], satisfying the conditions as in the introduction;

or a sequence of prime numbers  contained in [MinBound,MaxBound], satisfying the conditions as in the introduction;

or the null value. In this last case we try to change the parameters MinBound and MaxBound.

 

primo:=proc(Discr,LevelN,MinBound,MaxBound)
local d,N,Md,MN,a,b,l,t,p;
if gcd(Discr,LevelN)<>1 then
        print("LevelN must be a number prime to the discriminant")
end if:
if MinBound>MaxBound then
print("MinBound must be < MaxBound")
end if:
d:=Discr/(2^ordp(Discr,2)):
N:=LevelN/(2^ordp(LevelN,2)):
Md:=factorset(d):
MN:=factorset(N):
for p from MinBound to MaxBound do
        if type(p,prime) and modp(p,4)=1 then
                a:=1:
                for l from 1 to nops(Md) do
                        if modp(p^((op(l,Md)-1)/2),op(l,Md))=(op(l,Md)-1) then
                                a:=a*1
                        else
                                a:=a*0
                        end if
                end do:                                                                                            b:=1:
                if LevelN>1 then
                        for t from 1 to nops(MN) do
                                if (modp(p^((op(t,MN)-1)/2),op(t,MN)))=1 then
                                        b:=b*1
                                else
                                        b:=b*0
                                end if
                        end do
                end if:                                                                                            if a*b=1 and gcd(LevelN*Discr,2)=1 then
                        print(p):
                end if:
                if a*b=1 and gcd(Discr,2)<>1 and modp(p,8)=5 then
                        print(p):
                end if:
                if a*b=1 and gcd(LevelN,2)<>1 and modp(p,8)=1 then
                        print(p):
                end if :
        end if
end do
end proc;


(3.1.1)

Examples

primo(35,5,5,20);

(3.2.1)

primo(35,3,20,5);

(3.2.2)

primo(35,3,5,10);

primo(35,3,5,20);

(3.2.3)

primo(35,3,5,8*35*3);

(3.2.4)

Basis for a Eichler Order of level N in B={-dN,p}

Procedure Definition

We give a new procedure EichlerN in Maple for computing a basis of an Eichler Order of level N (=LevelN) of B. This computation is based on a result of Hashimoto [Has95].

Input data are:

Discr:  is the discriminant of the quaternion algebra B; it is a positive integer number, which is the product of a finite even number of  primes;

LevelN:  a positive integer prime to d, which is the level of the Eichler order;

p: a prime number satisfying the conditions as in the introduction. We can find it using the procedure primo;

Output data are  the elements of a basis of the Eichler order of level N in B.

 

EichlerN:=proc(Discr,LevelN,p)
local e1,e2,e3,e4,a;
if gcd(Discr,LevelN)<>1 then
        print("Insert a level prime to the discriminant")
else
        for a from 1 while modp(a^2*Discr*LevelN+1,p)<>0 do
                a:=a+1:  
        end do:
        e1:=1:
        e2:=(1+j)/2:
        e3:=(i+k)/2:
        e4:=(a*Discr*LevelN*j+k)/p:
        print({e1,e2,e3,e4}):
end if
end proc;


(4.1.1)

Examples

EichlerN(35,5,13);

(4.2.1)

EichlerN(35,3,13);

(4.2.2)

Integera

Procedure Definition

We give a simple but useful procedure Integera in Maple for computing an integer a such that  .

Input data are:

Discr:  is the discriminant of the quaternion algebra B; it is a positive integer number, which is the product of a finite even number of  primes;

N:  a positive integer prime to d;

p: a prime number satisfying the conditions as in the introduction. We can find it using the procedure primo;

Output data an integer number a such that  .

 

Integera:=proc(Discr,N,p)
local a;
if gcd(Discr,N)<>1 then
        print("Insert N prime to the discriminant")
else
        for a from 1 while modp(a^2*Discr*N+1,p)<>0 do
                a:=a+1:  
        end do:
        print(a):
end if
end proc;


(5.1.1)

Examples

Integera(35,5,13);

(5.2.1)

Integera(35,3,13);

(5.2.2)

Basis for a Eichler Order R(Nq) of level Nq in B={-dN,p}

Procedure Definition

We give a new procedure EichlerNq in Maple for computing a basis of an Eichler Order of level Nq of B. This computation is based on a recent result of Ciavarella-Terracini [CT2007].

Input data are:

Discr:  is the discriminant of the quaternion algebra B; it is a positive integer number, which is the product of a finite even number of  primes;

LevelN:  a positive integer prime to d, which is the level of the Eichle order;

p: a prime number satisfying the conditions as in the introduction. We can find it using the procedure primo;

a: an integer number such that  . We can find it using the procedure Integera;

q: a prime number, different from  p and  not dividing the discriminant of B.

Output data are a basis of the Eichler order R(Nq) in B and a basis of the twisted copy of R(Nq) in R(N).

 

EichlerNq:=proc(Discr,LevelN,p,a,q)
local e1,e2,e3,e4,sol,x,y,c1,c2,f1,f2,f3,f4,g1,g2,g3,g4,c,cp,c4,AB;
e1:=1:
e2:=(1+j)/2:
e3:=(i+k)/2:
e4:=(a*Discr*LevelN*j+k)/p:
if gcd(Discr,LevelN)<>1 then
        print("Insert a level prime to the discriminant"):
        return:
end if:
if type(q,prime)=false then
        print("q must be a prime number"):
        return:
end if:
if q=p then
        print("Insert a prime number q different from p"):
        return:
end if:
if gcd(q,Discr)<>1  then
        print("Insert a prime number q not dividing the discriminant of the quaternion algebra"):
        return:
end if:
if gcd(q,Discr*p)=1 and modp(p^((q-1)/2),q)=(q-1) then
        for x from 0 to (q-1)  do
                for y from 0 to (q-1)  do
                        if modp(x^2-p*y^2+Discr*LevelN,q)=0 then
                                break:
                        end if:
                end do:
                if modp(x^2-p*y^2+Discr*LevelN,q)=0 then
                        break:
                end if:
        end do:
        c1:=(y-x) mod q:
        c2:=p^(-1) mod q:
        f1:=e1:
        f2:=-c1*e2+e3:
        f3:=-2*c2*(a*Discr*LevelN-x)*e2+e4:
        f4:=q*e2:
        g1:=e1:
        g2:=c1*e2+e3:
        g3:=-2*c2*(a*Discr*LevelN+x)*e2+e4:
        g4:=q*e2:
        print(B(R(LevelN*q))={f1,f2,f3,f4}):
        print(B(twistR(LevelN*q))={g1,g2,g3,g4}):
end if:
if gcd(q,Discr)=1 and modp(p^((q-1)/2),q)=1 then
        c:=(p-sqrt(p))/2 mod q: cp:=(p+sqrt(p))/2:
        f1:=e1:
        f2:=e2:
        f3:=e3-c*e4:
        f4:=q*e4:
        g1:=e1:
        g2:=e2:
        g3:=e3-cp*e4:
        g4:=q*e4:
        print(B(R(LevelN*q))={f1,f2,f3,f4}):
        print(B(twistR(LevelN*q))={g1,g2,g3,g4}):
end if:
end proc;


(6.1.1)

Examples

(6.2.1)


(6.2.2)



(6.2.3)

References

 

[CT2007] Miriam Ciavarella and Lea Terracini, Some Explicit Constructions of Integral Structures in Quaternion Algebras, PrePrint, 2007.

 

[CM2007] Miriam Ciavarella and Marina Marchisio, Quaternion Algebras, Maplesoft Maple 11  [http://www.maplesoft.com], 2007.

 

[Has95] Ki-ichiro Hashimoto, Explicit form of quaternion modular embeddings, Osaka J. Math., 32  n. 3, 533-546,1995.

 

[V80] Marie-France Vigneras, Arithmétique des Algèbres de Quaternions, Lecture Notes in Mathematics, 800, Springer-Verlag, 1980.


Legal Notice: The copyright for this application is owned by the author(s). Neither Maplesoft nor the author are responsible for any errors contained within and are not liable for any damages resulting from the use of this material. This application is intended for non-commercial, non-profit use only. Contact the author for permission if you wish to use this application in for-profit activities.