It represents a comprehensive collection of algorithms and datatypes
useful for lie-symmetry analysis of ODEs and PDEs with features like
If you are - even to the slightest extent - interested in using the software or just playing
a bit with it:
There are online-help pages (made for the maple
help system) included that become automatically activated, when the system is started - and
I will make available some maple-worksheets showing example calculations ASAP.
The funddomain routines
The funddomain routines are made for computing fundamental domains of
congruence subgroups of SL2(Z) in the upper half plane.
The main routines are
gensToGroup ( genlis, oper )
where
- genlis is a list of maple objects
- oper is a two argument function implementing group operation on the elements of genlis
gensToGroup computes the list of group elements generated by genlis under oper
generateFundDomain ( quotGroup )
where quotGroup is a list of 2x2 matrices forming a group in SL2(Z/NZ). They represent
the congruence subgroup GAMMA which is its preimage in SL2(Z).
generateFundDomain computes a list of pairs funddomain,
each consisting of
- a matrix in SL2(Z) and
- a triple of indices
Together they describe a fundamental domain for the abovementioned
congruence subgroup.
More precisely the fundamental domain is the union of the
translates of the canonical fundamental domain FF for SL2(Z) with all the matrices in
funddomain.
Additionally the indices give glueing data for the borders of the
translated FF domain.
The domain FF has a T-, T^(-1)- and a S-side where an "A-Side"
means the intersection of FF with A FF. The three indices tell to which triangle of
the fundamental domain of GAMMA - represented as the list funddomain - the T,T^-1 and S
adjacent triangle are equivalent modulo GAMMA. A negative value means, the adjacent
triangle is by itself in funddomain.
generateFundDomain2 ( funddom, quotGroup )
where
- funddom is the result of applying generateFundDomain on a congruence subgroup GAMMA1
which is a subgroup of GAMMA described by quotGroup
-
quotGroup is a list of 2x2 matrices forming a group in SL2(Z/NZ). They represent
the congruence subgroup GAMMA which is their preimage in SL2(Z).
generateFundDomain2 computes a list funddom1 of pairs belonging to the
congruence group GAMMA. The result has the same format as in generateFundDomain.
Additionally it computes a mapping of the triangles of funddom to those computed
for GAMMA (that is funddom1). This mapping represents the canonical map of GAMMA1\upper-half-plane
to GAMMA\upper-half-plane.
generateRhoRels ( funddom )
generateIRels ( funddom )
generateInftyRels ( funddom)
take a list as returned by generateFundDomain as argument and compute a list
of points overlying rho, I and infinity in SL2(Z)\upper-half-plane, together with
their multiplicities.
Returned is a list of lists of indices into funddom.
Each element of that list corresponds to a point over rho, I, infinity respectively.
The cardinality of the element (which is a list by itself) is the "Verzweigungsindex" (e).
The meaning of the indices in the element-list is as follows:
If one takes the indices in the list representing a point over rho (resp. I, infinity)
and selects by these indices the matrices from the list funddom (e.g. point equals
[i1, i2, i3], corresponding
matrices are funddom[i1][1], funddom[i2][1], funddom[i3][1] )
then applying these matrices
to the point rho (resp. I, infinity) gives the points of the fundamental domain described
by funddom lying over rho (resp. I, infinity). (N.B. border identifications may apply !)
Download
Requirements
There it is:
The funddomain routines
The following Maple worksheet contains some example calculations:
Maple Worksheet for funddomain1.maple
Computing sheaf cohomology with Singular
Download the package
shjb.lib
The function sheafCohJB(m,d1,d2) computes the ranks of the cohomology groups H^i(X,m(d))
with d1 <= d <= d2
where m is a module in Singular associated to a ring R.
Then X is proj(R) and m(d) in H^i(X,m(d)) stands for the d-times
twisted sheaf associated to m.
To try some examples do:
LIB "all.lib";
LIB "sheafcoh.lib";
LIB "shjb.lib";
testJB();
def r=basering;
setring r;
sheafCoh(m1,-6,5);
sheafCohJB(m1,-6,5);
... and so on (you have the modules m0, m1, m2 predefined).
Comparing the results of sheafCoh and sheafCohJB, you can convince yourself (hopefully) of
the correctness of my method.
Concerning the mathematical base of my algorithm it might be interesting to note that it does not
use local duality but global duality in its simplest form only.
Computing sheaf cohomology with Macaulay2
Download the file
compcoh-2024-08.m2
If you are looking for test.m2: I removed it - the current up to date
file is the compcoh-2024-08.m2 from above.
The function compCohX(ma, d) takes two arguments. The first is
a module ma over a polynomial ring S=A[x_0,...,x_n] where A is an arbitrary polynomial ring.
(Currently only tested with A = QQ[a]). The parameter d gives the truncation of
ma for computing the main resolution of truncate(d,ma). If you set d = -999 then
a suitable d will be chosen automatically internally.
To try some examples do:
load "compcoh-2024-08.m2"
compCohX(mo1, -999)
prune HH(oo)
compCohX(mo1 ** S^{2}, -999)
prune HH(oo)
Embedded resolution of curves
A routine to compute the embedded resolution of f(x,y) = 0 at the origin by iterated
blowups.
juergen@antares:~/maple/alg-geom$ maple
|\^/| Maple 2018 (X86 64 LINUX)
._|\| |/|_. Copyright (c) Maplesoft, a division of Waterloo Maple Inc. 2018
\ MAPLE / All rights reserved. Maple is a trademark of
<____ ____> Waterloo Maple Inc.
| Type ? for help.
> read `blowupcomp4`:
> trvgrph(blowupentry(mkchart((y^2-x^3)^2+y^5,[x,y],1,0)));
[[E[3](12), E[2](6)]]
[[E[4](12), E[3](12)]]
[[X, E[6](26)]]
[[E[6](26), E[5](13)]]
[[E[6](26), E[4](12)]]
[[E[3](12), E[1](4)]]
E[i](j) is the exceptional curve of step i with multiplicity j, X stands for the strict transform of the curve X:f(x,y) = 0.
Download the package
blowupcomp4