Changeset 4d68980 in git


Ignore:
Timestamp:
May 11, 2000, 1:22:40 PM (24 years ago)
Author:
Gerhard Pfister <pfister@…>
Branches:
(u'spielwiese', '17f1d200f27c5bd38f5dfc6e8a0879242279d1d8')
Children:
fa1af627353fd9365bd5fdad189f015e30251a16
Parents:
6993ab772a58d6c46ff84558a9b53adda18205d0
Message:
equidim verbessert


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    r6993ab7 r4d68980  
    1 // $Id: primdec.lib,v 1.60 2000-05-10 12:56:13 pfister Exp $
     1// $Id: primdec.lib,v 1.61 2000-05-11 11:22:40 pfister Exp $
    22///////////////////////////////////////////////////////////////////////////////
    33// primdec.lib                                                               //
     
    1111///////////////////////////////////////////////////////////////////////////////
    1212
    13 version="$Id: primdec.lib,v 1.60 2000-05-10 12:56:13 pfister Exp $";
     13version="$Id: primdec.lib,v 1.61 2000-05-11 11:22:40 pfister Exp $";
    1414info="
    1515LIBRARY: primdec.lib   PROCEDURES FOR PRIMARY DECOMPOSITION
     
    2727  equiRadical(I);   the radical of the equidimensional part of the ideal I
    2828  prepareAss(I);    list of radicals of the equidimensional components of I
    29   equidim(I);       equidimensional decomposition of I
     29  equidim(I);       weak equidimensional decomposition of I
    3030  equidimMax(I);    equidimensional locus of I
    3131  equidimMaxEHV(I); equidimensional locus of I (Algorithm of Eisenbud,
     
    17651765///////////////////////////////////////////////////////////////////////////////
    17661766proc equidim(ideal i,list #)
    1767 "USAGE:  equidim(i); i ideal           
    1768  RETURN:  list = list of equidimensional ideals a1,...,as such that
    1769           i is the intersection of a1,...,as
    1770  EXAMPLE: example equidim; shows an example
     1767"USAGE:  equidim(i) or equidim(i,1) ; i ideal
     1768         equidim(i,1) uses the algorithm of Eisenbud, Hunecke and Vasconcelos         
     1769 RETURN: list = list of equidimensional ideals a1,...,as such that
     1770         i is the intersection of a1,...,as. as is the equidimensional
     1771         locus of i, ai are the lower dimensional equidimensional loci
     1772         with (perhaps) modified embedded components,i.e. an embedded
     1773         component q (primary ideal) of i can be replaced in the decompo-
     1774         sition by a primary ideal q1 with the same radical as q
     1775 EXAMPLE:example equidim; shows an example
    17711776"
    17721777{
     
    17741779  list eq;
    17751780  intvec w;
    1776   int n,ra;
    1777   ideal te=1;
     1781  int n,m;
    17781782  int a=attrib(i,"isSB");
    17791783  int homo=homog(i);
    1780   if( typeof(attrib(i,"isRadical"))=="int" )
    1781   {
    1782      if(attrib(i,"isRadical")==1)
    1783      {
    1784         ra=1;
    1785      }
    1786   }
    17871784  if(size(#)!=0)
    17881785  {
    1789     te=#[1];
    1790   }   
     1786     m=1;
     1787  }
     1788
    17911789  if(((homo==1)||(a==1))&&(find(ordstr(basering),"l")==0)
    17921790                                &&(find(ordstr(basering),"s")==0))
     
    18121810  }
    18131811 
    1814   ideal te=imap(P,te);
    1815   list equ,equi,indep;
    1816   int b;
    1817   if((size(reduce(te,j))==0)&&(deg(te[1])>0))
    1818   {
    1819     setring P;
    1820     return(eq);
    1821   }
    18221812  if(homo==1)
    18231813  {
     
    18281818     intvec hil=hilb(j,1,w);
    18291819  }
     1820
    18301821  if ((dim(j)==-1)||(size(j)==0)||(nvars(basering)==1)||(dim(j)==0))
    18311822  {
     
    18361827  }
    18371828
    1838   indep=maxIndependSet(j);
    1839 
    1840   string va=string(maxideal(1));
    1841 
    1842   execute "ring gnir1 = ("+charstr(basering)+"),("+indep[1][1]+"),("
    1843                               +indep[1][2]+");";
    1844   if(homo==1)
    1845   {
    1846      ideal j=std(imap(gnir,i),hil,w);
     1829  if(m==0)
     1830  {
     1831     ideal k=equidimMax(j);
    18471832  }
    18481833  else
    18491834  {
    1850      ideal j=groebner(imap(gnir,i));
    1851   }
    1852   string quotring=prepareQuotientring(nvars(basering)-indep[1][3]);
    1853 
    1854   execute quotring;
    1855 
    1856   ideal j=imap(gnir1,j);
    1857 
    1858   kill gnir1;
    1859   j=clearSB(j);
    1860   ideal h;
    1861   for(n=1;n<=size(j);n++)
    1862   {
    1863      h[n]=leadcoef(j[n]);
    1864   }
    1865 
    1866   setring gnir;
    1867   ideal h=imap(quring,h);
    1868   kill quring;
    1869   list l=minSat(j,h);
    1870   attrib(l[1],"isSB",1);
    1871  
    1872   if(ra==1)
    1873   {
    1874      option(returnSB); 
    1875      j=quotient(j,l[1]);
    1876      option(noreturnSB);
    1877      attrib(j,"isSB",1);
    1878      attrib(j,"isRadical",1);
     1835     ideal k=equidimMaxEHV(j);
     1836  }
     1837
     1838  option(returnSB); 
     1839  j=quotient(j,k);
     1840  option(noreturnSB);
     1841
     1842  list equi=equidim(j); 
     1843  if(deg(equi[size(equi)][1])<=0)
     1844  {
     1845      equi[size(equi)]=k;
    18791846  }
    18801847  else
    18811848  {
    1882      j=std(sat(j,l[1])[1]); 
    1883   }
    1884   if(size(reduce(te,l[1]))!=0)
    1885   {
    1886     te=intersect(te,l[1]);
    1887     equi=equidim(j,te); 
    1888     if((dim(l[1])==dim(j))&&(size(equi)>0))
    1889     {
    1890       equi[size(equi)]=intersect(l[1],equi[size(equi)]);
    1891     }
    1892     else
    1893     {
    1894       equi[size(equi)+1]=l[1];
    1895     }
    1896   }
    1897   else
    1898   {
    1899     equi=equidim(j,te);
    1900   }
    1901   b=size(equi);
    1902 
     1849    equi[size(equi)+1]=k;
     1850  }
    19031851  setring P;
    1904   if(b!=0)
    1905   {
    1906     eq=imap(gnir,equi);
    1907   }
     1852  eq=imap(gnir,equi);
    19081853  kill gnir;
    19091854  return(eq);
     
    20001945  {
    20011946    equi=equidimMax(j);
    2002     equ=intersect(equ,equi);
     1947    equ=interred(intersect(equ,equi));
    20031948  }
    20041949  setring P;
Note: See TracChangeset for help on using the changeset viewer.