|
D.6.1.5 proximitymatrix
Procedure from library alexpoly.lib (see alexpoly_lib).
- Usage:
- proximitymatrix(INPUT); INPUT poly or list or intmat
- Assume:
- INPUT is either a REDUCED bivariate polynomial defining a plane curve singularity,
or the output of
hnexpansion(f[,"ess"]) , or the list hne in
the ring created by hnexpansion(f[,"ess"]) , or the output of
develop(f) resp. of extdevelop(f,n) , or a list containing
the contact matrix and a list of integer vectors with the characteristic exponents
of the branches of a plane curve singularity, or an integer vector containing the
characteristic exponents of an irreducible plane curve singularity, or the resolution
graph of a plane curve singularity (i.e. the output of resolutiongraph or
the first entry in the output of totalmultiplicities).
- Return:
- list, of three integer matrices. The first one is the proximity matrix of
the plane curve defined by the INPUT, i.e. the entry i,j is 1 if the
infinitely near point corresponding to row i is proximate to the infinitely
near point corresponding to row j. The second integer matrix is the incidence matrix of the
resolution graph of the plane curve. The entry on the diagonal in row i is -s-1
if s is the number of points proximate to the infinitely near point corresponding
to the ith row in the matrix. The third integer matrix is the incidence matrix of
the Enriques diagram of the plane curve singularity, i.e. each row corresponds to
an infinitely near point in the minimal standard resolution, including the
strict transforms of the branches, the diagonal element gives
the level of the point, and the entry i,j is -1 if row i is proximate to row j.
- Note:
- In case the Hamburger-Noether expansion of the curve f is needed
for other purposes as well it is better to calculate this first
with the aid of
hnexpansion and use it as input instead of
the polynomial itself.
If you are not sure whether the INPUT polynomial is reduced or not, use
squarefree(INPUT) as input instead.
If the input is a smooth curve, then the output will consist of
three one-by-one zero matrices.
For the definitions of the computed objects see e.g. the book
Eduardo Casas-Alvero, Singularities of Plane Curves.
Example:
| LIB "alexpoly.lib";
ring r=0,(x,y),ls;
poly f1=(y2-x3)^2-4x5y-x7;
poly f2=y2-x3;
poly f3=y3-x2;
list proximity=proximitymatrix(f1*f2*f3);
/// The proximity matrix P ///
print(proximity[1]);
==> 1 0 0 0 0 0 0 0 0 0
==> -1 1 0 0 0 0 0 0 0 0
==> -1 -1 1 0 0 0 0 0 0 0
==> 0 0 -1 1 0 0 0 0 0 0
==> 0 0 -1 -1 1 0 0 0 0 0
==> 0 0 0 0 -1 1 0 0 0 0
==> 0 0 0 -1 0 0 1 0 0 0
==> -1 0 0 0 0 0 0 1 0 0
==> -1 0 0 0 0 0 0 -1 1 0
==> 0 0 0 0 0 0 0 0 -1 1
/// The proximity resolution graph N ///
print(proximity[2]);
==> -5 0 1 0 0 0 0 0 1 0
==> 0 -2 1 0 0 0 0 0 0 0
==> 1 1 -3 0 1 0 0 0 0 0
==> 0 0 0 -3 1 0 1 0 0 0
==> 0 0 1 1 -2 1 0 0 0 0
==> 0 0 0 0 1 -1 0 0 0 0
==> 0 0 0 1 0 0 -1 0 0 0
==> 0 0 0 0 0 0 0 -2 1 0
==> 1 0 0 0 0 0 0 1 -2 1
==> 0 0 0 0 0 0 0 0 1 -1
/// They satisfy N=-transpose(P)*P ///
print(-transpose(proximity[1])*proximity[1]);
==> -5 0 1 0 0 0 0 0 1 0
==> 0 -2 1 0 0 0 0 0 0 0
==> 1 1 -3 0 1 0 0 0 0 0
==> 0 0 0 -3 1 0 1 0 0 0
==> 0 0 1 1 -2 1 0 0 0 0
==> 0 0 0 0 1 -1 0 0 0 0
==> 0 0 0 1 0 0 -1 0 0 0
==> 0 0 0 0 0 0 0 -2 1 0
==> 1 0 0 0 0 0 0 1 -2 1
==> 0 0 0 0 0 0 0 0 1 -1
/// The incidence matrix of the Enriques diagram ///
print(proximity[3]);
==> 0 0 0 0 0 0 0 0 0 0
==> -1 1 0 0 0 0 0 0 0 0
==> -1 -1 2 0 0 0 0 0 0 0
==> 0 0 -1 3 0 0 0 0 0 0
==> 0 0 -1 -1 4 0 0 0 0 0
==> 0 0 0 0 -1 5 0 0 0 0
==> 0 0 0 -1 0 0 4 0 0 0
==> -1 0 0 0 0 0 0 1 0 0
==> -1 0 0 0 0 0 0 -1 2 0
==> 0 0 0 0 0 0 0 0 -1 3
/// If M is the matrix of multiplicities and TM the matrix of total
/// multiplicities of the singularity, then M=P*TM.
/// We therefore calculate the (total) multiplicities. Note that
/// they have to be slightly extended.
list MULT=extend_multiplicities(totalmultiplicities(f1*f2*f3));
intmat TM=MULT[1]; // Total multiplicities.
intmat M=MULT[2]; // Multiplicities.
/// Check: M-P*TM=0.
M-proximity[1]*TM;
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0
/// Check: inverse(P)*M-TM=0.
intmat_inverse(proximity[1])*M-TM;
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0,
==> 0,0,0
| See also:
alexanderpolynomial;
develop;
hnexpansion;
totalmultiplicities.
|