Changeset 5c8c19 in git


Ignore:
Timestamp:
Dec 4, 2000, 2:48:16 PM (23 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'spielwiese', '828514cf6e480e4bafc26df99217bf2a1ed1ef45')
Children:
61dadae46cd95345d4d43af6de7e728300732ab7
Parents:
6f033b6b6340279e600b54c5c6afc99b846b49cf
Message:
*hannes: cosmetics


git-svn-id: file:///usr/local/Singular/svn/trunk@4794 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/LIB/classify.lib

    r6f033b r5c8c19  
    1 e// $Id: classify.lib,v 1.42 2000-05-12 12:25:41 Singular Exp $
     1e// $Id: classify.lib,v 1.43 2000-12-04 13:48:16 Singular Exp $
    22// KK, last modified: 04.04.1998
    33///////////////////////////////////////////////////////////////////////////////
    44
    5 version  = "$Id: classify.lib,v 1.42 2000-05-12 12:25:41 Singular Exp $";
     5version  = "$Id: classify.lib,v 1.43 2000-12-04 13:48:16 Singular Exp $";
    66info="
    77LIBRARY:  classify.lib  Procedures for the Arnold-Classifier of Singularities
     
    132132
    133133///////////////////////////////////////////////////////////////////////////////
    134 static
    135 proc Klassifiziere (poly f)
     134static proc Klassifiziere (poly f)
    136135{
    137136//--------------------------- initialisation ----------------------------------
    138     string s1;
    139     int    n, cnt, corank_f, K, Mu;
    140     list   v, cstn;
    141     map    PhiG;
    142     def ring_top = basering;
    143 
    144     n = nvars(basering);    // Zahl der Variablen des aktuellen Rings.
    145     PhiG = ring_top, maxideal(1);
    146     cstn[4] = PhiG;
    147     if( defined(@ringdisplay) == 0) {
    148       string @ringdisplay;               // Define always 'ringdisplay' to be
    149       export @ringdisplay;               // able to run 'Show(f)'
    150     }
    151     @ringdisplay = "setring RingB;";
    152     if(defined(RingB)!=0) { kill RingB; }
    153     execute ("ring RingB="+charstr(basering)+",("+A_Z("x", n)+"),(c,ds);");
    154     export RingB;
    155     setring ring_top;
     137  string s1;
     138  int    n, cnt, corank_f, K, Mu;
     139  list   v, cstn;
     140  map    PhiG;
     141  def ring_top = basering;
     142
     143  n = nvars(basering);    // Zahl der Variablen des aktuellen Rings.
     144  PhiG = ring_top, maxideal(1);
     145  cstn[4] = PhiG;
     146  if( defined(@ringdisplay) == 0)
     147  {
     148    string @ringdisplay;               // Define always 'ringdisplay' to be
     149    export @ringdisplay;               // able to run 'Show(f)'
     150  }
     151  @ringdisplay = "setring RingB;";
     152  if(defined(RingB)!=0) { kill RingB; }
     153  execute ("ring RingB="+charstr(basering)+",("+A_Z("x", n)+"),(c,ds);");
     154  export RingB;
     155  setring ring_top;
    156156
    157157//---------------------- compute basciinvariants ------------------------------
    158     if(jet(f,0) != 0 ) {
    159       cstn[1] = corank(f); cstn[2]=-1; cstn[3]=1;
    160       return(printresult(1, f, "a unit", cstn, -1));
    161     }
    162 
    163     debug_log(1, "Computing Basicinvariants of f ...");
    164     K, Mu, corank_f = basicinvariants(f);
    165     debug_log(0, "About the singularity :");
    166     debug_log(0, "          Milnor number(f)   = "+string(Mu));
    167     debug_log(0, "          Corank(f)          = "+string(corank_f));
    168     debug_log(0, "          Determinacy       <= "+string(K));
    169     cstn[1] = corank_f;
    170     cstn[2] = Mu;
    171     cstn[3] = K;
    172 
    173     if( Mu == 0) {
    174       cstn[1]=1; cstn[3]=1;
    175       return(printresult(1, f, "A[0]", cstn, 0)); }
    176 
    177     if(Mu<0) {
    178       debug_log(0, "The Milnor number of the function is infinite.");
    179       debug_log(0, "The singularity is not in Arnolds list.");
    180       return(printresult(1, 1, "error!", cstn, -1));
    181     }
    182 
    183     f = jet(f, K);
    184     v = HKclass(milnorcode(f));
    185     if(v[2]>0) { debug_log(0, "Guessing type via Milnorcode: ", v[1]);}
    186     else {
    187       debug_log(0, "Hilbert polynomial not recognised. Milnor code = ",
    188                 milnorcode(f));
    189     }
    190     debug_log(0, "");
    191     debug_log(0, "Computing normal form ...");
     158  if(jet(f,0) != 0 )
     159  {
     160    cstn[1] = corank(f); cstn[2]=-1; cstn[3]=1;
     161    return(printresult(1, f, "a unit", cstn, -1));
     162  }
     163
     164  debug_log(1, "Computing Basicinvariants of f ...");
     165  K, Mu, corank_f = basicinvariants(f);
     166  debug_log(0, "About the singularity :");
     167  debug_log(0, "          Milnor number(f)   = "+string(Mu));
     168  debug_log(0, "          Corank(f)          = "+string(corank_f));
     169  debug_log(0, "          Determinacy       <= "+string(K));
     170  cstn[1] = corank_f;
     171  cstn[2] = Mu;
     172  cstn[3] = K;
     173
     174  if( Mu == 0)
     175  {
     176    cstn[1]=1; cstn[3]=1;
     177    return(printresult(1, f, "A[0]", cstn, 0));
     178  }
     179
     180  if(Mu<0)
     181  {
     182    debug_log(0, "The Milnor number of the function is infinite.");
     183    debug_log(0, "The singularity is not in Arnolds list.");
     184    return(printresult(1, 1, "error!", cstn, -1));
     185  }
     186
     187  f = jet(f, K);
     188  v = HKclass(milnorcode(f));
     189  if(v[2]>0) { debug_log(0, "Guessing type via Milnorcode: ", v[1]);}
     190  else
     191  {
     192    debug_log(0, "Hilbert polynomial not recognised. Milnor code = ",
     193              milnorcode(f));
     194  }
     195  debug_log(0, "");
     196  debug_log(0, "Computing normal form ...");
    192197
    193198//------------ step 1, classification according to corank(f) ------------------
    194     if(corank_f == 0) {
    195        return(printresult(2, f, "A["+string(Mu)+"]", cstn, 0)); }
    196     if(corank_f == 1) {
    197        return(printresult(2, f, "A["+string(Mu)+"]", cstn, 0)); }
    198     cstn[4] = 0;
    199     if(corank_f == 2) { return(Funktion1bis(f, cstn)); }
    200     if(corank_f == 3) { return(Funktion1bis(f, cstn)); }
    201     return(printresult(105, f, "NoClass", cstn, -1));
    202 }
    203 
    204 ///////////////////////////////////////////////////////////////////////////////
    205 static
    206 proc Funktion1bis (poly f, list cstn)
     199  if(corank_f == 0)
     200  {
     201    return(printresult(2, f, "A["+string(Mu)+"]", cstn, 0));
     202  }
     203  if(corank_f == 1)
     204  {
     205    return(printresult(2, f, "A["+string(Mu)+"]", cstn, 0));
     206  }
     207  cstn[4] = 0;
     208  if(corank_f == 2) { return(Funktion1bis(f, cstn)); }
     209  if(corank_f == 3) { return(Funktion1bis(f, cstn)); }
     210  return(printresult(105, f, "NoClass", cstn, -1));
     211}
     212
     213///////////////////////////////////////////////////////////////////////////////
     214static proc Funktion1bis (poly f, list cstn)
    207215{
    208216//---------------------------- initialisation ---------------------------------
     
    270278
    271279///////////////////////////////////////////////////////////////////////////////
    272 static
    273 proc Funktion3 (poly f, list cstn)
     280static proc Funktion3 (poly f, list cstn)
    274281{
    275282//---------------------------- initialisation ---------------------------------
     
    301308
    302309///////////////////////////////////////////////////////////////////////////////
    303 static
    304 proc Funktion6 (poly f, list cstn)
     310static proc Funktion6 (poly f, list cstn)
    305311{ // Arnold's steps 6-12
    306312//---------------------------- initialisation ---------------------------------
     
    380386
    381387///////////////////////////////////////////////////////////////////////////////
    382 static
    383 proc Funktion13 (poly f, list cstn)
     388static proc Funktion13 (poly f, list cstn)
    384389{
    385390//---------------------------- initialisation ---------------------------------
     
    418423
    419424///////////////////////////////////////////////////////////////////////////////
    420 static
    421 proc Funktion17 (poly f, list cstn)
     425static proc Funktion17 (poly f, list cstn)
    422426{ // Analog zu Fumktion 6, Kombination 17-24
    423427//---------------------------- initialisation ---------------------------------
     
    485489
    486490///////////////////////////////////////////////////////////////////////////////
    487 static
    488 proc Funktion25 (poly f, list cstn)
     491static proc Funktion25 (poly f, list cstn)
    489492{ // Analog zu Fumktion 6, Kombination 25-46
    490493//---------------------------- initialisation ---------------------------------
     
    594597
    595598///////////////////////////////////////////////////////////////////////////////
    596 static
    597 proc Funktion40 (poly f, list cstn, int k)
     599static proc Funktion40 (poly f, list cstn, int k)
    598600{
    599601//---------------------------- initialisation ---------------------------------
     
    652654
    653655///////////////////////////////////////////////////////////////////////////////
    654 static
    655 proc Funktion50 (poly f, list cstn)
     656static proc Funktion50 (poly f, list cstn)
    656657{
    657658//---------------------------- initialisation ---------------------------------
     
    705706
    706707///////////////////////////////////////////////////////////////////////////////
    707 static
    708 proc Funktion58 (poly fin, list cstn)
     708static proc Funktion58 (poly fin, list cstn)
    709709{
    710710//---------------------------- initialisation ---------------------------------
     
    855855
    856856///////////////////////////////////////////////////////////////////////////////
    857 static
    858 proc Funktion59 (poly f, list cstn)
     857static proc Funktion59 (poly f, list cstn)
    859858{
    860859//---------------------------- initialisation ---------------------------------
     
    933932
    934933///////////////////////////////////////////////////////////////////////////////
    935 static
    936 proc Funktion66 (poly f, list cstn)
     934static proc Funktion66 (poly f, list cstn)
    937935{
    938936//---------------------------- initialisation ---------------------------------
     
    963961
    964962///////////////////////////////////////////////////////////////////////////////
    965 static
    966 proc Funktion82 (poly f, list cstn)
     963static proc Funktion82 (poly f, list cstn)
    967964{
    968965//---------------------------- initialisation ---------------------------------
     
    10581055
    10591056///////////////////////////////////////////////////////////////////////////////
    1060 static
    1061 proc Isomorphie_s82_z (poly f, poly fk, int p)
     1057static proc Isomorphie_s82_z (poly f, poly fk, int p)
    10621058{
    10631059//---------------------------- initialisation ---------------------------------
     
    10861082
    10871083///////////////////////////////////////////////////////////////////////////////
    1088 static
    1089 proc Isomorphie_s82_x (poly f, poly fk, int p)
     1084static proc Isomorphie_s82_x (poly f, poly fk, int p)
    10901085{
    10911086//---------------------------- initialisation ---------------------------------
     
    11151110
    11161111///////////////////////////////////////////////////////////////////////////////
    1117 static
    1118 proc Funktion83 (poly f, list cstn)
     1112static proc Funktion83 (poly f, list cstn)
    11191113{
    11201114//---------------------------- initialisation ---------------------------------
     
    12021196
    12031197///////////////////////////////////////////////////////////////////////////////
    1204 static
    1205 proc Funktion97 (poly f, list cstn)
     1198static proc Funktion97 (poly f, list cstn)
    12061199{
    12071200//---------------------------- initialisation ---------------------------------
     
    13191312
    13201313///////////////////////////////////////////////////////////////////////////////
    1321 static
    1322 proc Isomorphie_s17 (poly f, poly fk, int k, int ct, list #)
     1314static proc Isomorphie_s17 (poly f, poly fk, int k, int ct, list #)
    13231315{
    13241316//---------------------------- initialisation ---------------------------------
     
    14391431
    14401432///////////////////////////////////////////////////////////////////////////////
    1441 static
    1442 proc printresult (int step, poly f, string typ, list cstn, int m)
     1433static proc printresult (int step, poly f, string typ, list cstn, int m)
    14431434{
    14441435//---------------------------- initialisation ---------------------------------
     
    14481439  corank, Mu, K = cstn[1..3];
    14491440  debug_log(0,"   Arnold step number "+string(step));
    1450   if( @DeBug >= 0 ) {
     1441  if( @DeBug >= 0 )
     1442  {
    14511443    "The singularity";
    14521444    "   "+Show(jet(f, K))+"";
    1453     if( typ != "error!" && typ != "NoClass" ) {
     1445    if( typ != "error!" && typ != "NoClass" )
     1446    {
    14541447      "is R-equivalent to "+typ+".";
    14551448    }
    1456     if ( typ == "NoClass" ) {
     1449    if ( typ == "NoClass" )
     1450    {
    14571451      "is not in Arnolds list.";
    14581452    }
     
    14661460
    14671461///////////////////////////////////////////////////////////////////////////////
    1468 static
    1469 proc Funktion47 (poly f, list cstn)
    1470 {
    1471     int corank = cstn[1];
    1472     int Mu = cstn[2];
    1473     int K  = cstn[3];
    1474     string s = "The Singularity ";+Show(jet(f, K), corank, K);
    1475     string tp="";
    1476 //    return(printresult(47, f, tp, cstn, -1));
    1477 
    1478     s = s +" has 4-jet equal to zero. (F47), mu="+string(Mu);
    1479 
    1480     s; // +"  ("+SG_Typ+")";
    1481     return(Show(f), tp, corank);
    1482 }
    1483 
    1484 ///////////////////////////////////////////////////////////////////////////////
    1485 static
    1486 proc Funktion91 (poly f, list cstn, int k)
    1487 {
    1488     string tp  = "U*[k,0]";
    1489     return(printresult(91, f, tp, cstn, -1));
    1490 }
    1491 
    1492 ///////////////////////////////////////////////////////////////////////////////
    1493 static
    1494 proc Funktion92 (poly f, list cstn, int k)
    1495 {
    1496     string tp  = "UP[k]";
    1497     return(printresult(92, f, tp, cstn, -1));
    1498 }
    1499 
    1500 ///////////////////////////////////////////////////////////////////////////////
    1501 static
    1502 proc Funktion93 (poly f, list cstn, int k)
    1503 {
    1504     string tp  = "UQ[k]";
    1505     return(printresult(93, f, tp, cstn, -1));
    1506 }
    1507 
    1508 ///////////////////////////////////////////////////////////////////////////////
    1509 static
    1510 proc Funktion94 (poly f, list cstn, int k)
    1511 {
    1512     string tp  = "UR[k]";
    1513     return(printresult(94, f, tp, cstn, -1));
    1514 }
    1515 
    1516 ///////////////////////////////////////////////////////////////////////////////
    1517 static
    1518 proc Funktion95 (poly f, list cstn, int k)
    1519 {
    1520     string tp  = "US[k]";
    1521     return(printresult(95, f, tp, cstn, -1));
    1522 }
    1523 
    1524 ///////////////////////////////////////////////////////////////////////////////
    1525 static
    1526 proc Funktion96 (poly f, list cstn, int k)
    1527 {
    1528     string tp  = "UT[k]";
    1529     return(printresult(96, f, tp, cstn, -1));
     1462static proc Funktion47 (poly f, list cstn)
     1463{
     1464  int corank = cstn[1];
     1465  int Mu = cstn[2];
     1466  int K  = cstn[3];
     1467  string s = "The Singularity ";+Show(jet(f, K), corank, K);
     1468  string tp="";
     1469//  return(printresult(47, f, tp, cstn, -1));
     1470
     1471  s = s +" has 4-jet equal to zero. (F47), mu="+string(Mu);
     1472
     1473  s; // +"  ("+SG_Typ+")";
     1474  return(Show(f), tp, corank);
     1475}
     1476
     1477///////////////////////////////////////////////////////////////////////////////
     1478static proc Funktion91 (poly f, list cstn, int k)
     1479{
     1480  string tp  = "U*[k,0]";
     1481  return(printresult(91, f, tp, cstn, -1));
     1482}
     1483
     1484///////////////////////////////////////////////////////////////////////////////
     1485static proc Funktion92 (poly f, list cstn, int k)
     1486{
     1487  string tp  = "UP[k]";
     1488  return(printresult(92, f, tp, cstn, -1));
     1489}
     1490
     1491///////////////////////////////////////////////////////////////////////////////
     1492static proc Funktion93 (poly f, list cstn, int k)
     1493{
     1494  string tp  = "UQ[k]";
     1495  return(printresult(93, f, tp, cstn, -1));
     1496}
     1497
     1498///////////////////////////////////////////////////////////////////////////////
     1499static proc Funktion94 (poly f, list cstn, int k)
     1500{
     1501  string tp  = "UR[k]";
     1502  return(printresult(94, f, tp, cstn, -1));
     1503}
     1504
     1505///////////////////////////////////////////////////////////////////////////////
     1506static proc Funktion95 (poly f, list cstn, int k)
     1507{
     1508  string tp  = "US[k]";
     1509  return(printresult(95, f, tp, cstn, -1));
     1510}
     1511
     1512///////////////////////////////////////////////////////////////////////////////
     1513static proc Funktion96 (poly f, list cstn, int k)
     1514{
     1515  string tp  = "UT[k]";
     1516  return(printresult(96, f, tp, cstn, -1));
    15301517}
    15311518
     
    15751562
    15761563///////////////////////////////////////////////////////////////////////////////
    1577 static
    1578 proc Coeffs (list #)
     1564static proc Coeffs (list #)
    15791565{
    15801566  matrix m=matrix(coeffs(#[1],#[2]), deg(#[1])+1, 1);
     
    15831569
    15841570///////////////////////////////////////////////////////////////////////////////
    1585 static
    1586 proc Morse(poly f, int K, int corank, int ShowPhi)
    1587 {
    1588 //---------------------------- initialisation ---------------------------------
    1589     poly   fc, f2, a, P, Beta, fi;
    1590     ideal  Jfx, B;
    1591     int    n, i, j, k, Rang, Done;
    1592     matrix Mat;
    1593     map    Id, Psi, Phi, PhiG;
    1594     intvec Abb, RFlg;
    1595     list   v;
    1596 
    1597     fi = f;
    1598     n = nvars(basering);
    1599     init_debug();
    1600 
    1601     def ring_top=basering;
    1602 
    1603     debug_log(3, "Spalte folgendes Polynom mit Bestimmtheit: ", string(K));
    1604     debug_log(3, Show(fi));
    1605 
    1606     for( j=1; j<=n ; j++) { Abb[j] = 0; }
    1607 
    1608     RFlg = GetRf(fi, n);
    1609     debug_log(2, "Reihenfolge fuer Vertauschungen:", RFlg );
    1610     PhiG=ring_top,maxideal(1);
     1571static proc Morse(poly f, int K, int corank, int ShowPhi)
     1572{
     1573//---------------------------- initialisation ---------------------------------
     1574  poly   fc, f2, a, P, Beta, fi;
     1575  ideal  Jfx, B;
     1576  int    n, i, j, k, Rang, Done;
     1577  matrix Mat;
     1578  map    Id, Psi, Phi, PhiG;
     1579  intvec Abb, RFlg;
     1580  list   v;
     1581
     1582  fi = f;
     1583  n = nvars(basering);
     1584  init_debug();
     1585
     1586  def ring_top=basering;
     1587
     1588  debug_log(3, "Spalte folgendes Polynom mit Bestimmtheit: ", string(K));
     1589  debug_log(3, Show(fi));
     1590
     1591  for( j=1; j<=n ; j++) { Abb[j] = 0; }
     1592
     1593  RFlg = GetRf(fi, n);
     1594  debug_log(2, "Reihenfolge fuer Vertauschungen:", RFlg );
     1595  PhiG=ring_top,maxideal(1);
    16111596
    16121597//----------------- find quadratic term, if there is only one -----------------
    1613     B = maxideal(1);
    1614     if(corank == (n-1)) {
    1615       Done = 0;
    1616       f2   = jet(fi, 2);
    1617       j    = 1;
    1618       Jfx  = f2, diff(f2, x(j));
    1619       while(j<=n && (diff(f2, x(j))==0)) {
    1620         j   = j+1;
    1621         Jfx = f2, diff(f2, x(j));
    1622       }
    1623       Mat  = matrix(syz(Jfx));
    1624       Beta = 2*Mat[2,1]/Mat[1,1];
    1625       for( j=1; j<=n ; j=j+1) {
    1626         f2 = Coeff(Beta, x(RFlg[j]), x(RFlg[j]));
    1627         if(f2!=0) {
    1628           k = RFlg[j];
     1598  B = maxideal(1);
     1599  if(corank == (n-1))
     1600  {
     1601    Done = 0;
     1602    f2   = jet(fi, 2);
     1603    j    = 1;
     1604    Jfx  = f2, diff(f2, x(j));
     1605    while(j<=n && (diff(f2, x(j))==0))
     1606    {
     1607      j++;
     1608      Jfx = f2, diff(f2, x(j));
     1609    }
     1610    Mat  = matrix(syz(Jfx));
     1611    Beta = 2*Mat[2,1]/Mat[1,1];
     1612    for( j=1; j<=n ; j++)
     1613    {
     1614      f2 = Coeff(Beta, x(RFlg[j]), x(RFlg[j]));
     1615      if(f2!=0)
     1616      {
     1617        k = RFlg[j];
     1618        break;
     1619      }
     1620    }
     1621    for( j=1; j<=n ; j=j+1)
     1622    {
     1623      f2 = Coeff(Beta, x(j), x(j));
     1624      if(j == k) { B[rvar(x(j))] = (2*f2*x(j)-Beta) / number(f2); }
     1625    }
     1626    Phi  =ring_top,B;
     1627    fi   = Phi(fi);
     1628    PhiG = Phi(PhiG);
     1629  }
     1630  if( ShowPhi > 1) { PhiG; }
     1631
     1632//------------------------ compute spliting lemma -----------------------------
     1633  fc = fi;
     1634  i  = 1;              // Index fuer Variablen wird bearbeitet
     1635  while( i <= n)
     1636  {
     1637    Phi=ring_top,maxideal(1);
     1638    debug_log(6, "Pruefe Variable x(" +string(RFlg[i]) + ")");
     1639    debug_log(6, "--------------------");
     1640    j  = i + 1;        // setze j fuer evtle Verschiebung
     1641    f2 = jet(fc,2);
     1642    debug_log(6, "Rechne 2-Jet =" , string(f2));
     1643    if( (f2 - subst(f2, x(RFlg[i]), 0)) == 0 ) { Abb[RFlg[i]] = 1; }
     1644    if( (f2 - subst(f2, x(RFlg[i]), 0)) != 0 )
     1645    {
     1646      while( (j<=n) || (i==n) )
     1647      {
     1648        debug_log(6, "Pruefe 2-Jet mit Wert : " + string(jet(fc,2)));
     1649        a = Coeff(jet(fc,2), x(RFlg[i]), x(RFlg[i])^2);
     1650        debug_log(6,"Koeffizient von x(" + string(RFlg[i]) + ")^2 ist:", a);
     1651        if( (a != 0) || (i==n) )
     1652        {
     1653          debug_log(6, "BREAK!!!!!!!!!!!!!!");
    16291654          break;
    16301655        }
    1631       }
    1632       for( j=1; j<=n ; j=j+1) {
    1633         f2 = Coeff(Beta, x(j), x(j));
    1634         if(j == k) { B[rvar(x(j))] = (2*f2*x(j)-Beta) / number(f2); }
    1635       }
    1636       Phi  =ring_top,B;
    1637       fi   = Phi(fi);
     1656        debug_log(6,"Verschiebe evtl Variable x(",string(RFlg[j]),") um x(",
     1657                     string(RFlg[i]), ")");
     1658        B = maxideal(1);
     1659        for( k=1; k<=n ; k=k+1)
     1660        {
     1661          if(k==RFlg[j]) { B[rvar(x(k))] = x(k) + x(RFlg[i]); }
     1662        }
     1663        Phi = ring_top,B;
     1664        fc  = Phi(fi);
     1665        j++;
     1666      }               // Ende while( (j<=n) || (i==n) )
     1667
     1668      debug_log(6, "Moegliche Verschiebung fertig!");
    16381669      PhiG = Phi(PhiG);
    1639     }
    1640     if( ShowPhi > 1) { PhiG; }
    1641 
    1642 //------------------------ compute spliting lemma -----------------------------
    1643     fc = fi;
    1644     i  = 1;              // Index fuer Variablen wird bearbeitet
    1645     while( i <= n) {
    1646       Phi=ring_top,maxideal(1);
    1647       debug_log(6, "Pruefe Variable x(" +string(RFlg[i]) + ")");
    1648       debug_log(6, "--------------------");
    1649       j  = i + 1;        // setze j fuer evtle Verschiebung
    1650       f2 = jet(fc,2);
    1651       debug_log(6, "Rechne 2-Jet =" , string(f2));
    1652       if( (f2 - subst(f2, x(RFlg[i]), 0)) == 0 ) { Abb[RFlg[i]] = 1; }
    1653       if( (f2 - subst(f2, x(RFlg[i]), 0)) != 0 ) {
    1654         while( (j<=n) || (i==n) ) {
    1655           debug_log(6, "Pruefe 2-Jet mit Wert : " + string(jet(fc,2)));
    1656           a = Coeff(jet(fc,2), x(RFlg[i]), x(RFlg[i])^2);
    1657           debug_log(6,"Koeffizient von x(" + string(RFlg[i]) + ")^2 ist:", a);
    1658           if( (a != 0) || (i==n) ) {
    1659             debug_log(6, "BREAK!!!!!!!!!!!!!!");
    1660             break;
     1670      if( ShowPhi > 1) { "NachVersch.:"; Phi; }
     1671
     1672      if( (j<=n) || (i==n))
     1673      {
     1674        P = Coeff(fc, x(RFlg[i]), x(RFlg[i]));
     1675        debug_log(6, "Koeffizient von x("+string(RFlg[i])+") ist: ",
     1676                      string(P));
     1677        if(P != 0)
     1678        {
     1679          debug_log(6, "1 Koeffizient von x("+string(RFlg[i])+") ist: ",
     1680                       string(P));
     1681          debug_log(6, "a=" + string(a));
     1682          P = P / number (2 * a);
     1683          debug_log(6, "2 Koeffizient von x("+string(RFlg[i])+") ist: ",
     1684                       string(P));
     1685          B = maxideal(1);
     1686          for( k=1; k<=n ; k=k+1) {if(k==RFlg[i]) {B[rvar(x(k))]=x(k)-P;}}
     1687          Phi =ring_top,B;
     1688          debug_log(6, "Quadratische-Ergaenzung durch:", Phi);
     1689          fi   = Phi(fc);
     1690          PhiG = Phi(PhiG);
     1691          fc   = jet(fi,K);
     1692          P    = Coeff(fc, x(RFlg[i]), x(RFlg[i]));
     1693          if( P != 0)
     1694          {
     1695            fi = fc;
     1696            continue;
    16611697          }
    1662           debug_log(6,"Verschiebe evtl Variable x(",string(RFlg[j]),") um x(",
    1663                        string(RFlg[i]), ")");
    1664           B = maxideal(1);
    1665           for( k=1; k<=n ; k=k+1) {
    1666             if(k==RFlg[j]) { B[rvar(x(k))] = x(k) + x(RFlg[i]); }
    1667           }
    1668           Phi = ring_top,B;
    1669           fc  = Phi(fi);
    1670           j   = j + 1;
    1671         }               // Ende while( (j<=n) || (i==n) )
    1672 
    1673         debug_log(6, "Moegliche Verschiebung fertig!");
    1674         PhiG = Phi(PhiG);
    1675         if( ShowPhi > 1) { "NachVersch.:"; Phi; }
    1676 
    1677         if( (j<=n) || (i==n)) {
    1678           P = Coeff(fc, x(RFlg[i]), x(RFlg[i]));
    1679           debug_log(6, "Koeffizient von x("+string(RFlg[i])+") ist: ",
    1680                         string(P));
    1681           if(P != 0) {
    1682             debug_log(6, "1 Koeffizient von x("+string(RFlg[i])+") ist: ",
    1683                          string(P));
    1684             debug_log(6, "a=" + string(a));
    1685             P = P / number (2 * a);
    1686             debug_log(6, "2 Koeffizient von x("+string(RFlg[i])+") ist: ",
    1687                          string(P));
    1688             B = maxideal(1);
    1689             for( k=1; k<=n ; k=k+1) {if(k==RFlg[i]) {B[rvar(x(k))]=x(k)-P;}}
    1690             Phi =ring_top,B;
    1691             debug_log(6, "Quadratische-Ergaenzung durch:", Phi);
    1692             fi   = Phi(fc);
    1693             PhiG = Phi(PhiG);
    1694             fc   = jet(fi,K);
    1695             P    = Coeff(fc, x(RFlg[i]), x(RFlg[i]));
    1696             if( P != 0) {
    1697               fi = fc;
    1698               continue;
    1699             }
    1700           }     // Ende if(P != 0)
    1701                 // Fertig mit Quadratischer-Ergaenzung
    1702         }               // Ende if( (j<=n) || (i==n))
    1703       }                 // Ende if( (f2 - subst(f2, x(RFlg[i]), 0)) != 0 )
    1704 
    1705       fi = fc;
    1706       i  = i + 1;
    1707       debug_log(6, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
    1708     }
    1709     debug_log(6, "Ende  ---------------------------------------------------");
     1698        }     // Ende if(P != 0)
     1699              // Fertig mit Quadratischer-Ergaenzung
     1700      }               // Ende if( (j<=n) || (i==n))
     1701    }                 // Ende if( (f2 - subst(f2, x(RFlg[i]), 0)) != 0 )
     1702
     1703    fi = fc;
     1704    i++;
     1705    debug_log(6, "++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
     1706  }
     1707  debug_log(6, "Ende  ---------------------------------------------------");
    17101708
    17111709//--------------------------- collect results ---------------------------------
    1712     if( ShowPhi > 0 ) {
    1713       "Abbildung innerhalb des Morse-Lemmas:";
    1714       PhiG;
    1715       "Vergleich:";
    1716       "PhiG(f)= " + Show(jet(PhiG(f), K));
    1717       "fi     = " + Show(fi);
    1718     }
    1719 
    1720     Rang = 0;
    1721     B    = maxideal(1);
    1722     for( i=1; i<=n ; i++) { if(Abb[i] != 1) { Rang ++; B[rvar(x(i))] = 0; } }
    1723     Phi  = ring_top,B;
    1724     PhiG = Phi(PhiG);
    1725     fi   = Phi(fi);
    1726     v    = fi, PhiG;
    1727     debug_log(2, "rank determined with Morse rg=", Rang);
    1728     debug_log(1, "Rest singularity f=",Show(fi));
    1729     return(v);
    1730 }
    1731 
    1732 ///////////////////////////////////////////////////////////////////////////////
    1733 static
    1734 proc Coeff(poly f, list #)
     1710  if( ShowPhi > 0 )
     1711  {
     1712    "Abbildung innerhalb des Morse-Lemmas:";
     1713    PhiG;
     1714    "Vergleich:";
     1715    "PhiG(f)= " + Show(jet(PhiG(f), K));
     1716    "fi     = " + Show(fi);
     1717  }
     1718
     1719  Rang = 0;
     1720  B    = maxideal(1);
     1721  for( i=1; i<=n ; i++) { if(Abb[i] != 1) { Rang ++; B[rvar(x(i))] = 0; } }
     1722  Phi  = ring_top,B;
     1723  PhiG = Phi(PhiG);
     1724  fi   = Phi(fi);
     1725  v    = fi, PhiG;
     1726  debug_log(2, "rank determined with Morse rg=", Rang);
     1727  debug_log(1, "Rest singularity f=",Show(fi));
     1728  return(v);
     1729}
     1730
     1731///////////////////////////////////////////////////////////////////////////////
     1732static proc Coeff(poly f, list #)
    17351733{
    17361734//---------------------------- initialisation ---------------------------------
     
    17551753
    17561754///////////////////////////////////////////////////////////////////////////////
    1757 static
    1758 proc ReOrder(poly f)
     1755static proc ReOrder(poly f)
    17591756{
    17601757//---------------------------- initialisation ---------------------------------
     
    19061903
    19071904///////////////////////////////////////////////////////////////////////////////
    1908 static
    1909 proc Cubic (poly f)
     1905static proc Cubic (poly f)
    19101906{
    19111907//---------------------------- initialisation ---------------------------------
     
    19511947
    19521948///////////////////////////////////////////////////////////////////////////////
    1953 static
    1954 proc parity  (int e)
     1949static proc parity  (int e)
    19551950"USAGE:    parity()"
    19561951{
     
    19611956
    19621957///////////////////////////////////////////////////////////////////////////////
    1963 static
    1964 proc HKclass (intvec sg)
     1958static proc HKclass (intvec sg)
    19651959{
    19661960//---------------------------- initialisation ---------------------------------
     
    19821976
    19831977///////////////////////////////////////////////////////////////////////////////
    1984 static
    1985 proc HKclass3 (intvec sg, string SG_Typ, int cnt)
     1978static proc HKclass3 (intvec sg, string SG_Typ, int cnt)
    19861979{
    19871980  list v;
     
    19931986
    19941987///////////////////////////////////////////////////////////////////////////////
    1995 static
    1996 proc HKclass3_teil_1 (intvec sg, string SG_Typ, int cnt)
     1988static proc HKclass3_teil_1 (intvec sg, string SG_Typ, int cnt)
    19971989{
    19981990  int  k, r, s;
     
    20302022
    20312023///////////////////////////////////////////////////////////////////////////////
    2032 static
    2033 proc HKclass5 (intvec sg, string SG_Typ, int cnt)
     2024static proc HKclass5 (intvec sg, string SG_Typ, int cnt)
    20342025{
    20352026  list v;
     
    20422033
    20432034///////////////////////////////////////////////////////////////////////////////
    2044 static
    2045 proc HKclass5_teil_1 (intvec sg, string SG_Typ, int cnt)
     2035static proc HKclass5_teil_1 (intvec sg, string SG_Typ, int cnt)
    20462036{
    20472037  int  k, r, s;
     
    21442134
    21452135///////////////////////////////////////////////////////////////////////////////
    2146 static
    2147 proc HKclass5_teil_2 (intvec sg, string SG_Typ, int cnt)
     2136static proc HKclass5_teil_2 (intvec sg, string SG_Typ, int cnt)
    21482137{
    21492138  int k, r, s;
     
    22232212
    22242213///////////////////////////////////////////////////////////////////////////////
    2225 static
    2226 proc HKclass7 (intvec sg, string SG_Typ, int cnt)
     2214static proc HKclass7 (intvec sg, string SG_Typ, int cnt)
    22272215{
    22282216  list v;
     
    22342222
    22352223///////////////////////////////////////////////////////////////////////////////
    2236 static
    2237 proc HKclass7_teil_1 (intvec sg, string SG_Typ, int cnt)
     2224static proc HKclass7_teil_1 (intvec sg, string SG_Typ, int cnt)
    22382225{
    22392226  int k, r, s;
     
    23462333
    23472334///////////////////////////////////////////////////////////////////////////////
    2348 static
    2349 proc Singularitaet (string typ,int k,int r,int s,poly a,poly b,poly c,poly d)
     2335static proc Singularitaet (string typ,int k,int r,int s,poly a,poly b,poly c,poly d)
    23502336{
    23512337  list   v;
     
    25602546}
    25612547///////////////////////////////////////////////////////////////////////////////
    2562 static
    2563 proc Faktorisiere(poly f, poly fk, int pt, int k, intvec RFlg)
     2548static proc Faktorisiere(poly f, poly fk, int pt, int k, intvec RFlg)
    25642549{
    25652550//---------------------------- initialisation ---------------------------------
     
    26122597
    26132598///////////////////////////////////////////////////////////////////////////////
    2614 static
    2615 proc Teile(poly f, poly fk)
     2599static proc Teile(poly f, poly fk)
    26162600{
    26172601  ideal  Jfsyz = f, fk;
     
    26232607
    26242608///////////////////////////////////////////////////////////////////////////////
    2625 static
    2626 proc GetRf (poly fi, int n)
     2609static proc GetRf (poly fi, int n)
    26272610"USAGE:    GetRf();"
    26282611{
     
    26522635
    26532636///////////////////////////////////////////////////////////////////////////////
    2654 static
    2655 proc Show(poly g)
     2637static proc Show(poly g)
    26562638{
    26572639  string s;
     
    26662648
    26672649///////////////////////////////////////////////////////////////////////////////
    2668 static
    2669 proc checkring
     2650static proc checkring
    26702651{
    26712652  int CH = char(basering);
     
    26792660
    26802661///////////////////////////////////////////////////////////////////////////////
    2681 static
    2682 proc DecodeNormalFormString (string S_in)
     2662static proc DecodeNormalFormString (string S_in)
    26832663"USAGE:    DecodeNormalFormString"
    26842664{
Note: See TracChangeset for help on using the changeset viewer.