Opened 10 years ago

Last modified 7 years ago

#474 new bug

insufficient develloped from hnexpansion

Reported by: gorzel Owned by: pfister
Priority: minor Milestone: 3-2-0 and higher
Component: singular-libs Version: 3-1-6
Keywords: hnexpansion Cc:

Description

The following germ has 4 branches at the origin, with 167 = mu = 2*delta -r + 1 = 2*85 -4+1

LIB "hnoether.lib";
ring rds = 0,(y,z),ds;
poly f = -y^7-7*y^6*z^2-7*y^6*z^3-21*y^5*z^4+8*y^6*z^4-42*y^5*z^5-35*y^4*z^6+27*y^5*z^6-105*y^4*z^7-35*y^3*z^8+48*y^5*z^7+15*y^4*z^8-140*y^3*z^9-21*y^2*z^10-25*y^5*z^8+205*y^4*z^9-50*y^3*z^10-105*y^2*z^11-7*y*z^12-5*y^4*z^10+340*y^3*z^11-90*y^2*z^12-42*y*z^13-z^14-125*y^4*z^11+195*y^3*z^12+270*y^2*z^13-57*y*z^14-7*z^15+38*y^4*z^12-340*y^3*z^13+365*y^2*z^14+100*y*z^15-13*z^16-98*y^3*z^14-291*y^2*z^15+250*y*z^16+13*z^17+152*y^3*z^15-402*y^2*z^16-62*y*z^17+60*z^18-28*y^3*z^16+206*y^2*z^17-365*y*z^18+14*z^19+144*y^2*z^18+4*y*z^19-99*z^20-84*y^2*z^19+247*y*z^20-51*z^21+8*y^2*z^20-16*y*z^21+83*z^22-68*y*z^22+43*z^23+16*y*z^23-38*z^24-12*z^25+y*z^25+8*z^26+z^27+z^28;
 vdim(std(jacob(f)));
// 167
 with Maple
> singularities(f,y,z);
               {[[0, 0, 1], 7, 85, 4], [[1, 0, 0], 21, 267, 2]}

But hnexpansion can not compute it from the given equation

> displayInvariants(f);
//** The two HNE's are identical!
//** You have either tried to compare a branch with itself,
//** or the two branches have been developed separately.
//   In the latter case use `extdevelop' to extend the HNE's until they differ.
//** The two HNE's are identical!
 --- invariants of branch number 1 : ---
 characteristic exponents  : 1
 generators of semigroup   : 1
 Puiseux pairs             : 
 degree of the conductor   : 0
 delta invariant           : 0
 sequence of multiplicities: 1

 --- invariants of branch number 2 : ---
 characteristic exponents  : 1
 generators of semigroup   : 1
 Puiseux pairs             : 
 degree of the conductor   : 0
 delta invariant           : 0
 sequence of multiplicities: 1

 --- invariants of branch number 3 : ---
 characteristic exponents  : 3,13
 generators of semigroup   : 3,13
 Puiseux pairs             : (13,3)
 degree of the conductor   : 24
 delta invariant           : 12
 sequence of multiplicities: 3,3,3,3,1,1,1    // <-- One of them, either this

 --- invariants of branch number 4 : ---
 characteristic exponents  : 3,13
 generators of semigroup   : 3,13
 Puiseux pairs             : (13,3)
 degree of the conductor   : 24
 delta invariant           : 12
 sequence of multiplicities: 3,3,3,3,1,1,1       // <-- or this must be wrong !??

-------------- contact numbers : -------------- 

branch |    4     3     2    
-------+-----------------
    1  |    4,    4,    5
    2  |    4,    4
    3  |   -1                                // <-- negative contact number  ?!?  

 -------------- intersection multiplicities : -------------- 

branch |    4     3     2    
-------+-----------------
    1  |   12,   12,    5
    2  |   12,   12
    3  |   -1                       // <-- negative intersection number  ?!?

 -------------- delta invariant of the curve :  76

The curve is reducible with a non-linear polynomial, defining a smooth branch at the origin.

> factorize(f,1);                                   
_[1]=y+z^2+z^3
_[2]=-y^6-6*y^5*z^2-6*y^5*z^3-15*y^4*z^4+8*y^5*z^4-30*y^4*z^5-20*y^3*z^6+25*y^4*z^6-60*y^3*z^7-15*y^2*z^8+40*y^4*z^7+20*y^3*z^8-60*y^2*z^9-6*y*z^10-25*y^4*z^8+140*y^3*z^9-10*y^2*z^10-30*y*z^11-z^12-20*y^3*z^10+180*y^2*z^11-20*y*z^12-6*z^13-100*y^3*z^11+75*y^2*z^12+100*y*z^13-7*z^14+38*y^3*z^12-220*y^2*z^13+110*y*z^14+20*z^15-36*y^2*z^14-146*y*z^15+40*z^16+114*y^2*z^15-146*y*z^16-26*z^17-28*y^2*z^16+128*y*z^17-73*z^18+58*y*z^18+22*z^19-56*y*z^19+61*z^20+8*y*z^20-18*z^21-20*z^22+8*z^23+z^25
> poly g = _[2];
> displayInvariants(g);
 --- invariants of branch number 1 : ---
 characteristic exponents  : 3,13
 generators of semigroup   : 3,13
 Puiseux pairs             : (13,3)
 degree of the conductor   : 24
 delta invariant           : 12
 sequence of multiplicities: 3,3,3,3,1,1,1

 --- invariants of branch number 2 : ---
 characteristic exponents  : 2,9
 generators of semigroup   : 2,9
 Puiseux pairs             : (9,2)
 degree of the conductor   : 8
 delta invariant           : 4
 sequence of multiplicities: 2,2,2,2,1,1   // <--- compare with the multsequence above

 --- invariants of branch number 3 : ---
 characteristic exponents  : 1
 generators of semigroup   : 1
 Puiseux pairs             : 
 degree of the conductor   : 0
 delta invariant           : 0
 sequence of multiplicities: 1

 -------------- contact numbers : -------------- 

branch |    3     2    
-------+-----------
    1  |    4,    4
    2  |    4

 -------------- intersection multiplicities : -------------- 

branch |    3     2    
-------+-----------
    1  |   12,   24
    2  |    8

 -------------- delta invariant of the curve :  60

for the second component, obviously

> poly h =y+z^2+z^3; 
> displayInvariants(h);
 --- invariants of branch number 1 : ---
 characteristic exponents  : 1
 generators of semigroup   : 1
 Puiseux pairs             : 
 degree of the conductor   : 0
 delta invariant           : 0
 sequence of multiplicities: 1

 -------------- delta invariant of the curve :  0

Change History (3)

comment:1 Changed 10 years ago by boehm

Owner: changed from somebody to pfister

Is it possible to identify the problem easily?

comment:2 Changed 10 years ago by gorzel

I will come back to this problem in four month. At the moment I am too occupied with other computations.

comment:3 Changed 7 years ago by gorzel

Das Ticket hatte ich in der Zwischenzeit schon vergessen.

Wie schon beschrieben, ist der Kurve nicht nur lokal reduzibel mit vier Zweigen, sondern zerfaellt auch global.

Wenn man sich nun die von hnoether berechneten Parametrisierungen fuer die unzerlegte Kurve mit den einzeln berechneten Parametrisierungen der beiden globalen Komponenten vergleicht, sieht man dass hnoether.lib bei der Rechnung einen Zweig doppelt berechnet und dafür einen anderen uebersieht.

Die Meldung bei displayInvariants(f);

The two HNE's are identical!
  ...
  In the latter case use `extdevelop' to extend the HNE's until they differ.

ist irrefuhrend.

Global getrennte Berechnung der Zweige:

> ideal If = factorize(f,1);
> If;
If[1]=y+z2+z3
If[2]=-y6-6y5z2-6y5z3-15y4z4+8y5z4-30y4z5-20y3z6+25y4z6-60y3z7-15y2z8+40y4z7+20y3z8-60y2z9-6yz10-25y4z8+140y3z9-10y2z10-30yz11-z12-20y3z10+180y2z11-20yz12-6z13-100y3z11+75y2z12+100yz13-7z14+38y3z12-220y2z13+110yz14+20z15-36y2z14-146yz15+40z16+114y2z15-146yz16-26z17-28y2z16+128yz17-73z18+58yz18+22z19-56yz19+61z20+8yz20-18z21-20z22+8z23+z25
> poly f1 = If[1];
> poly f2 = If[2];

> list HNEf1 = hnexpansion(f1);
// No change of ring necessary, return value is HN expansion.
> displayHNE(HNEf1);           
// Hamburger-Noether development of branch nr.1:
  y = -z^2 + ..... (terms of degree >=3)


> list HNEf2 = hnexpansion(f2);
// No change of ring necessary, return value is HN expansion.
> displayHNE(HNEf2);           
// Hamburger-Noether development of branch nr.1:
  y = -z^2-z^3+2*z^4+z(1)*z^4
  z = 2*z(1)^3+5*z(1)^4 + ..... (terms of degree >=5)

// Hamburger-Noether development of branch nr.2:       <-- Dieser Zweig fehlt,
  y = -z^2-z^3+z^4+z(1)*z^4                            <-- wenn man f unzerlegt
  z = -z(1)^2+2*z(1)^3 + ..... (terms of degree >=4)   <-- entwickelt

// Hamburger-Noether development of branch nr.3:
  y = -z^2-z^3-1/8*z^5+7/128*z^6 + ..... (terms of degree >=7)
> displayHNE(HNEf); 
// Hamburger-Noether development of branch nr.1:
  y = -z^2-z^3

// Hamburger-Noether development of branch nr.2:
  y = -z^2-z^3-1/8*z^5+7/128*z^6 + ..... (terms of degree >=7)

// Hamburger-Noether development of branch nr.3:
  y = -z^2-z^3+2*z^4+z(1)*z^4
  z = 2*z(1)^3+5*z(1)^4 + ..... (terms of degree >=5)

// Hamburger-Noether development of branch nr.4:      <-- Dieser Zweig ist 
  y = -z^2-z^3+2*z^4+z(1)*z^4                         <-- doppelt und falsch.
  z = 2*z(1)^3+5*z(1)^4 + ..... (terms of degree >=5) <-- 

Den Code habe ich mir nur zum Teil angesehen, dort befinden sich ein paar Stellen, die mit "Spezialfall (###)" markiert sind. (Liegt hier das Problem oder fehlt so etwas an anderer Stelle?)

  Zeilen 3348, 3391, 
  Zeile 3395:
           //----------------------- Spezialfall (###): -----------------------
           // Wir haben das Problem, dass die HNE eines Zweiges hier abbricht,
           // aber ein anderer Zweig bis hierher genau die gleiche HNE hat, die
           // noch weiter geht
           // Loesung: mache Transform. rueckgaengig und behandle fneu im
           // Verzweigungsteil
           //-----------------------------------------------------------------
  Zeile 3723, 3778, 3786

Es zeigt sich aber noch ein (anderes) Problem:

Die Kurve f1: y+z2+z3 (der Zweig y = -z2-z3) ist glatt, bei der separaten Entwicklung ergibt sich

> displayHNE (HNEf1);                 
// Hamburger-Noether development of branch nr.1:
  y = -z^2 + ..... (terms of degree >=3)

> HNEf1;    
[1]:
   [1]:
      _[1,1]=0
      _[1,2]=-1
   [2]:
      -3
   [3]:
      1
   [4]:
      z+y^2+y^3

so dass man so nicht direkt die Schnittzahl mit dem Zweigen von f2 berechnen kann:

> displayHNE (HNEf2[3]);
  y = -z^2-z^3-1/8*z^5+7/128*z^6 + ..... (terms of degree >=7)

denn diese haben so die gleichen Anfangsterme. So weit in Ordnung, man muss also den Keim von f1 weiter entwickeln:

> list extHNEf1 = extdevelop(HNEf1[1],7); 
> displayHNE(extHNEf1);                  
  y = -z^2-z^3

> extHNEf1;                              
[1]:
   _[1,1]=0
   _[1,2]=-1
   _[1,3]=-1
   _[1,4]=y
[2]:
   3
[3]:
   1
[4]:
   0     <-- hier fehlt die Gleichung 

Einschub: nun ergibt sich

> intersection(HNEf1[1],HNEf2[3]);
//** The two HNE's are identical!
//** You have either tried to intersect a branch with itself,
//** or the two branches have been developed separately.
//   In the latter case use `extdevelop' to extend the HNE's until they differ.
-1
> intersection(extHNEf1,HNEf2[3]);
5
> ideal J = - y + -z^2-z^3, - y + -z^2-z^3-1/8*z^5+7/128*z^6;
> vdim(std(J));
5

Zurueck zum Fehler: wenn man aber den dritten Zweig von f2

> HNEf2[3];   
[1]:
   _[1,1]=0
   _[1,2]=-1
   _[1,3]=-1
   _[1,4]=0
   _[1,5]=-1/8
   _[1,6]=7/128
[2]:
   -7
[3]:
   1
[4]:
   -z^6+8*y^4*z^5+3/4*y^5*z^5-25*y^8*z^4-5*y^9*z^4-15/64*y^10*z^4+38*y^12*z^3+25/2*y^13*z^3+5/4*y^14*z^3-28*y^16*z^2+5/128*y^15*z^3-57/4*y^17*z^2-75/32*y^18*z^2+8*y^20*z-5/32*y^19*z^2+7*y^21*z-15/4096*y^20*z^2+57/32*y^22*z+25/128*y^23*z+5/512*y^24*z-7/16*y^26+3/16384*y^25*z-19/256*y^27-25/4096*y^28-1/4096*y^29-1/262144*y^30

weiter entwickelt

> list extHNEf2_3 = extdevelop(HNEf2[3],10);
> extHNEf2_3;                               
[1]:
   _[1,1]=0
   _[1,2]=-1
   _[1,3]=-1
   _[1,4]=0
   _[1,5]=-1/8
   _[1,6]=7/128
   _[1,7]=-79/2048
   _[1,8]=1075/32768
   _[1,9]=-4045/131072
   _[1,10]=259417/8388608
[2]:
   -1
[3]:
   1
[4]:
   -z^6+8*y^4*z^5+3/4*y^5*z^5-21/64*y^6*z^5-25*y^8*z^4+237/1024*y^7*z^5-....
    .... usw 

ist Slot 4 besetzt!

(Sollte aber nicht auch das Ergebnis von extextdevelop wie die Eingabe

eine Liste mit einem Liste als Eintrag sein.

Anders gesagt: die Anwendung von extdevellop flattet einmal.)

Bem: Die Kurve ist urspruenglich aus der Literatur, genauere Referenz und moeglicherweise einfacheres Beispiel folgt.

Note: See TracTickets for help on using tickets.