Changeset f0c6f4 in git
 Timestamp:
 May 3, 1998, 4:09:50 PM (26 years ago)
 Branches:
 (u'spielwiese', 'd1b01e9d51ade4b46b745d3bada5c5f3696be3a8')
 Children:
 a6c872fed2caa4a9edf9ee323f20dceadf8b2101
 Parents:
 cd22019f7a0ded70e139f2f3fb9eb51a6ed682e9
 File:

 1 edited
Legend:
 Unmodified
 Added
 Removed

Singular/LIB/deform.lib
rcd22019 rf0c6f4 1 // $Id: deform.lib,v 1. 8 19980423 17:25:20 SingularExp $2 // (bm, last modified 12/97)3 // /////////////////////////////////////////////////////////////////////////////4 5 version="$Id: deform.lib,v 1. 8 19980423 17:25:20 SingularExp $";1 // $Id: deform.lib,v 1.9 19980503 14:09:50 obachman Exp $ 2 // author: Bernd Martin email: martin@math.tucottbus.de 3 //(bm, last modified 4/98) 4 /////////////////////////////////////////////////////////////////////////////// 5 version="$Id: deform.lib,v 1.9 19980503 14:09:50 obachman Exp $"; 6 6 info=" 7 7 LIBRARY: 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 12 lift_ rel_kb(N,M[,kbM,p]) lifting N into a kbase of M13 kill_rings([\"prefix\"]) kills the exported rings from above14 lift_kbase(N,M); coefmatrix expressing N as lin. comb. of kbasis of M8 by Bernd Martin (martin@math.tucottbus.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 15 15 16 16 SUBPROCEDURES used by main procedure: … … 18 18 interact2,negative_part,homog_test 19 19 "; 20 20 /////////////////////////////////////////////////////////////////////////////// 21 21 LIB "inout.lib"; 22 22 LIB "general.lib"; … … 137 137 matrix homR = transpose(Ro); 138 138 matrix homFR= concat(homR,homF); 139 print(homFR);140 139 module hom' = std(homFR); 141 140 matrix Js[1][@t2]; … … 173 172 if( @t1==0) {break}; 174 173 dbprint(p,"// start computation in degree "+string(@d)+"."); 175 dbprint(p 1,">>> TIME = "+string(timertime));176 dbprint(p 1,"==> memory = "+string(kmemory())+"k");174 dbprint(p3,">>> TIME = "+string(timertime)); 175 dbprint(p3,"==> memory = "+string(kmemory())+"k"); 177 176 // compute obstructionvector  178 177 if (@smooth) { @noObstr=1;} … … 261 260 ";matrix Rs[",@rowR,"][",@colR,"]=",Rs,";"); 262 261 } 263 dbprint(p ,">>> TIME = "+string(timertime));262 dbprint(p3,">>> TIME = "+string(timertime)); 264 263 if (@is_qh != 0) 265 264 { @degr = qhweight(ideal(Js)); … … 420 419 for (@d=2;@d<=d_max;@d=@d+1) 421 420 { 422 dbprint(p 1,">>> time = "+string(timertime));423 dbprint(p 1,"==> memory = "+string(memory(0)/1000)+421 dbprint(p3,">>> time = "+string(timertime)); 422 dbprint(p3,"==> memory = "+string(memory(0)/1000)+ 424 423 ", allocated = "+string(memory(1)/1000)); 425 424 dbprint(p,"// start deg = "+string(@d)); … … 512 511 ";matrix Ls[",f1,"][",f2,"]=",Ls,";"); 513 512 } 514 dbprint(p ,">>> TIME = "+string(timertime));513 dbprint(p3,">>> TIME = "+string(timertime)); 515 514 if (@is_qh != 0) 516 515 { @degr = qhweight(ideal(Js)); … … 732 731 } 733 732 /////////////////////////////////////////////////////////////////////////////// 733 proc lift_kbase (N, M) 734 USAGE: lift_kbase(N,M); N,M=poly/ideal/vector/module 735 RETURN: matrix A, coefficient matrix expressing N as linear combination of 736 kbasis of M. Let the kbasis 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 739 ASSUME: dim(M)=0 and the monomial ordering is a well ordering or the last 740 block of the ordering is c or C 741 EXAMPLE: example lift_kbase; shows an example 742 { 743 return(lift_rel_kb(N,M)); 744 } 745 example 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 /////////////////////////////////////////////////////////////////////////////// 734 761 proc interact1 () 735 762 … … 897 924 return(dv); 898 925 } 899 900 901 ///////////////////////////////////////////////////////////////////////////////902 903 proc lift_kbase (N, M)904 USAGE: lift_kbase(N,M); N,M=poly/ideal/vector/module905 RETURN: matrix A, coefficient matrix expressing N as linear combination of906 kbasis of M. Let the kbasis have k elements and size(N)=c columns.907 Then A satisfies:908 matrix(reduce(N,std(M)),k,c) = matrix(kbase(std(M)))*A909 ASSUME: dim(M)=0 and the monomial ordering is a well ordering or the last910 block of the ordering is c or C911 EXAMPLE: example lift_kbase; shows an example912 {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(pq)<2 )955 {956 result[k,l] = leadcoef(q);957 v = vq;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 example975 {"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.