Changeset f0c6f4 in git for Singular/LIB/deform.lib


Ignore:
Timestamp:
May 3, 1998, 4:09:50 PM (26 years ago)
Author:
Olaf Bachmann <obachman@…>
Branches:
(u'spielwiese', 'a719bcf0b8dbc648b128303a49777a094b57592c')
Children:
a6c872fed2caa4a9edf9ee323f20dceadf8b2101
Parents:
cd22019f7a0ded70e139f2f3fb9eb51a6ed682e9
Message:
* new lib from B. Martin (deform1.lib from his mails).


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/deform.lib

    rcd22019 rf0c6f4  
    1 // $Id: deform.lib,v 1.8 1998-04-23 17:25:20 Singular Exp $
    2 //(bm, last modified 12/97)   
    3 ///////////////////////////////////////////////////////////////////////////////
    4 
    5 version="$Id: deform.lib,v 1.8 1998-04-23 17:25:20 Singular Exp $";
     1// $Id: deform.lib,v 1.9 1998-05-03 14:09:50 obachman Exp $
     2// author: Bernd Martin email: martin@math.tu-cottbus.de
     3//(bm, last modified 4/98)   
     4///////////////////////////////////////////////////////////////////////////////
     5version="$Id: deform.lib,v 1.9 1998-05-03 14:09:50 obachman Exp $";
    66info="
    77LIBRARY:  deform.lib       PROCEDURES FOR COMPUTING MINIVERSAL DEFORMATION
    8                             (new version)
    9  versal(Fo[,d,any])       miniversal deformation of isolated singularity Fo
    10  mod_versal(Mo,I,[,d,any])
    11                          miniversal deformation of module Mo modulo ideal I
    12  lift_rel_kb(N,M[,kbM,p]) lifting N into a kbase of M
    13  kill_rings([\"prefix\"])   kills the exported rings from above
    14  lift_kbase(N,M);         coef-matrix expressing N as lin. comb. of k-basis of M
     8                           by Bernd Martin (martin@math.tu-cottbus.de)
     9
     10 versal(Fo[,d,any])        miniversal deformation of isolated singularity Fo
     11 mod_versal(Mo,I,[,d,any]) miniversal deformation of module Mo modulo ideal I
     12 lift_kbase(N,M);          lifting N into standard kbase of M
     13 lift_rel_kb(N,M[,kbM,p])  relative lifting N into a kbase of M
     14 kill_rings([\"prefix\"])    kills the exported rings from above
    1515 
    1616  SUB-PROCEDURES            used by main procedure:
     
    1818                  interact2,negative_part,homog_test
    1919";
    20 
     20///////////////////////////////////////////////////////////////////////////////
    2121LIB "inout.lib";
    2222LIB "general.lib";
     
    137137  matrix homR = transpose(Ro);
    138138  matrix homFR= concat(homR,homF);
    139   print(homFR);
    140139  module hom' = std(homFR);
    141140  matrix Js[1][@t2];
     
    173172     if( @t1==0) {break};
    174173     dbprint(p,"// start computation in degree "+string(@d)+".");     
    175      dbprint(p-1,">>> TIME = "+string(timer-time));
    176      dbprint(p-1,"==> memory = "+string(kmemory())+"k");
     174     dbprint(p-3,">>> TIME = "+string(timer-time));
     175     dbprint(p-3,"==> memory = "+string(kmemory())+"k");
    177176//------- compute obstruction-vector  -----------------------------------------
    178177     if (@smooth) { @noObstr=1;}
     
    261260      ";matrix Rs[",@rowR,"][",@colR,"]=",Rs,";");
    262261   }
    263    dbprint(p,">>> TIME = "+string(timer-time));
     262   dbprint(p-3,">>> TIME = "+string(timer-time));
    264263   if (@is_qh != 0)
    265264   { @degr = qhweight(ideal(Js));
     
    420419  for (@d=2;@d<=d_max;@d=@d+1)
    421420  {
    422     dbprint(p-1,">>> time = "+string(timer-time));
    423     dbprint(p-1,"==> memory = "+string(memory(0)/1000)+
     421    dbprint(p-3,">>> time = "+string(timer-time));
     422    dbprint(p-3,"==> memory = "+string(memory(0)/1000)+
    424423                ",  allocated = "+string(memory(1)/1000));
    425424    dbprint(p,"// start deg = "+string(@d));   
     
    512511    ";matrix Ls[",f1,"][",f2,"]=",Ls,";");
    513512  }
    514   dbprint(p,">>> TIME = "+string(timer-time));
     513  dbprint(p-3,">>> TIME = "+string(timer-time));
    515514  if (@is_qh != 0)
    516515  { @degr = qhweight(ideal(Js));
     
    732731}
    733732///////////////////////////////////////////////////////////////////////////////
     733proc lift_kbase (N, M)
     734USAGE:   lift_kbase(N,M); N,M=poly/ideal/vector/module
     735RETURN:  matrix A, coefficient matrix expressing N as linear combination of
     736         k-basis of M. Let the k-basis have k elements and size(N)=c columns.
     737         Then A satisfies:
     738             matrix(reduce(N,std(M)),k,c) = matrix(kbase(std(M)))*A
     739ASSUME:  dim(M)=0 and the monomial ordering is a well ordering or the last
     740         block of the ordering is c or C
     741EXAMPLE: example lift_kbase; shows an example
     742{
     743  return(lift_rel_kb(N,M));
     744}
     745example
     746{"EXAMPLE:";     echo=2;
     747  ring R=0,(x,y),ds;
     748  module M=[x2,xy],[y2,xy],[0,xx],[0,yy];
     749  module N=[x3+xy,x],[x,x+y2];
     750  print(M);
     751  module kb=kbase(std(M));
     752  print(kb);
     753  print(N);
     754  matrix A=lift_kbase(N,M);
     755  print(A);
     756  matrix(reduce(N,std(M)),nrows(kb),ncols(A)) - matrix(kbase(std(M)))*A;
     757}
     758
     759
     760///////////////////////////////////////////////////////////////////////////////
    734761proc interact1 ()
    735762
     
    897924   return(dv);
    898925}
    899 
    900 
    901 ///////////////////////////////////////////////////////////////////////////////
    902 
    903 proc lift_kbase (N, M)
    904 USAGE:   lift_kbase(N,M); N,M=poly/ideal/vector/module
    905 RETURN:  matrix A, coefficient matrix expressing N as linear combination of
    906          k-basis of M. Let the k-basis have k elements and size(N)=c columns.
    907          Then A satisfies:
    908              matrix(reduce(N,std(M)),k,c) = matrix(kbase(std(M)))*A
    909 ASSUME:  dim(M)=0 and the monomial ordering is a well ordering or the last
    910          block of the ordering is c or C
    911 EXAMPLE: example lift_kbase; shows an example
    912 {
    913 //----------  initialisation  -------------------------------------------------
    914    string ords = ordstr(basering);
    915    int    d,col,k,l;
    916    module kb;
    917    matrix testm;
    918    vector v,p,q;
    919 //------- check wether ordering is correct ------------------------------------
    920    k=1;
    921    for( l=1;l<=nvars(basering);l=l+1 ) { k=k*(lead(1+var(l))==var(l)); }
    922    if( k==0 )
    923    {
    924       if( ords[size(ords)]!="c" and ords[size(ords)]!="C" )
    925       {
    926          "// change ordering!";
    927          "// ordering "+ordstr(basering)+" not implemented for this proc";
    928          return();
    929       }
    930    }
    931 //----------  check assumtions  -----------------------------------------------
    932    if( typeof(N)=="poly" ) { ideal J=ideal(N); kill N; module N=J; kill J; }
    933    if( typeof(M)=="poly" ) { ideal J=ideal(M); kill M; module M=J; }
    934    M = std(M);
    935    d = vdim(M);
    936    if( d<1 )
    937    { "// second argument in `lift_kbase` has vdim",d; return(); }
    938 //----------  compute kbase and reduce(N,M) -----------------------------------
    939    kb = kbase(M);
    940    col = ncols(N);
    941    N = reduce(N,M);
    942    N = matrix(N,nrows(N),col);
    943 //----------  collecting coefficients of reduce(N,M) --------------------------
    944    matrix result[d][col];
    945    for( l=1;l<=col;l=l+1 )
    946    {
    947       v = N[l];
    948       if( size(v)>0 )
    949       {
    950          for( k=1;k<=d;k=k+1 )
    951          {
    952             p = kb[k];
    953             q = lead(v);
    954             if( size(p-q)<2 )
    955             {
    956                result[k,l] = leadcoef(q);
    957                v = v-q;
    958                if( size(v)<1 ) { k=d+1; }
    959                else { k=0; }
    960             }
    961          }
    962       }
    963    }
    964 //---------  final test -------------------------------------------------------
    965    testm = matrix(N,nrows(kb),ncols(result))- matrix(kb)*result;
    966    if( size(module(testm))!=0 )
    967    {
    968       "// proc `lift_kbase` did'nt work correctly!";
    969       "// Please inform tthe authors";
    970       return();
    971    }
    972    return(result);
    973 }
    974 example
    975 {"EXAMPLE:";     echo=2;
    976   ring R=0,(x,y),ds;
    977   module M=[x2,xy],[y2,xy],[0,xx],[0,yy];
    978   module N=[x3+xy,x],[x,x+y2];
    979   print(M);
    980   module kb=kbase(std(M));
    981   print(kb);
    982   print(N);
    983   matrix A=lift_kbase(N,M);
    984   print(A);
    985   matrix(reduce(N,std(M)),nrows(kb),ncols(A)) - matrix(kbase(std(M)))*A;
    986 }
Note: See TracChangeset for help on using the changeset viewer.