Changeset 03f29c in git


Ignore:
Timestamp:
May 8, 2000, 11:42:58 AM (23 years ago)
Author:
Gerhard Pfister <pfister@…>
Branches:
(u'spielwiese', 'f6c3dc58b0df4bd712574325fe76d0626174ad97')
Children:
0ad3597762e2f64054f1324b098d198434537d9b
Parents:
ba9453910d26fdb676fa083bc02d866111ea5ece
Message:
Prozeduren equidimMax, equidimMaxEHV eingebaut


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    rba94539 r03f29c  
    1 // $Id: primdec.lib,v 1.55 2000-05-08 08:59:17 pfister Exp $
     1// $Id: primdec.lib,v 1.56 2000-05-08 09:42:58 pfister Exp $
    22///////////////////////////////////////////////////////////////////////////////
    33// primdec.lib                                                               //
     
    1111///////////////////////////////////////////////////////////////////////////////
    1212
    13 version="$Id: primdec.lib,v 1.55 2000-05-08 08:59:17 pfister Exp $";
     13version="$Id: primdec.lib,v 1.56 2000-05-08 09:42:58 pfister Exp $";
    1414info="
    1515LIBRARY: primdec.lib   PROCEDURES FOR PRIMARY DECOMPOSITION
     
    2828  prepareAss(I);    list of radicals of the equidimensional components of I
    2929  equidim(I);       equidimensional decomposition of I
     30  equidimMax(I);    equidimensional locus of I
     31  equidimMaxEHV(I); equidimensional locus of I (Algorithm of Eisenbud,
     32                    Huneke and Vasconcelos)
    3033REMARK:
    3134These procedures are implemented to be used in characteristic 0.
     
    17621765///////////////////////////////////////////////////////////////////////////////
    17631766proc equidim(ideal i)
    1764 "USAGE:  equidimensiona(i); i ideal           
     1767"USAGE:  equidim(i); i ideal           
    17651768 RETURN:  list = list of equidimensional ideals a1,...,as such that
    17661769          i is the intersection of a1,...,as
    1767  EXAMPLE: example equidimensional; shows an example
     1770 EXAMPLE: example equidim; shows an example
    17681771"
    17691772{
     
    18751878   ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
    18761879   equidim(i);
     1880}
     1881///////////////////////////////////////////////////////////////////////////////
     1882proc equidimMax(ideal i)
     1883"USAGE:  equidimMax(i); i ideal           
     1884 RETURN:  ideal = ideal of equidimensional locus
     1885 EXAMPLE: example equidimMax; shows an example
     1886"
     1887{
     1888  def  P = basering;
     1889  ideal eq;
     1890  intvec w;
     1891  int n;
     1892  int a=attrib(i,"isSB");
     1893  int homo=homog(i);
     1894   
     1895  if(((homo==1)||(a==1))&&(find(ordstr(basering),"l")==0)
     1896                                &&(find(ordstr(basering),"s")==0))
     1897  {
     1898     execute "ring gnir = ("+charstr(basering)+"),("+varstr(basering)+"),("
     1899                              +ordstr(basering)+");";
     1900     ideal i=imap(P,i);
     1901     ideal j=i;
     1902     if(a==1)
     1903     {
     1904       attrib(j,"isSB",1);
     1905     }
     1906     else
     1907     {
     1908       j=groebner(i);
     1909     }
     1910  }
     1911  else
     1912  {
     1913     execute "ring gnir = ("+charstr(basering)+"),("+varstr(basering)+"),dp;";
     1914     ideal i=imap(P,i);
     1915     ideal j=groebner(i);
     1916  }
     1917  list indep;
     1918  ideal equ,equi;
     1919  if(homo==1)
     1920  {
     1921     for(n=1;n<=nvars(basering);n++)
     1922     {
     1923        w[n]=ord(var(n));
     1924     }
     1925     intvec hil=hilb(j,1,w);
     1926  }
     1927  if ((dim(j)==-1)||(size(j)==0)||(nvars(basering)==1)||(dim(j)==0))
     1928  {
     1929    setring P;
     1930    eq=i;
     1931    return(eq);
     1932  }
     1933
     1934  indep=maxIndependSet(j);
     1935  string va=string(maxideal(1));
     1936  execute "ring gnir1 = ("+charstr(basering)+"),("+indep[1][1]+"),("
     1937                              +indep[1][2]+");";
     1938  execute "map phi=gnir,"+va+";";
     1939  if(homo==1)
     1940  {
     1941     ideal j=std(phi(i),hil,w);
     1942  }
     1943  else
     1944  {
     1945     ideal j=groebner(phi(i));
     1946  }
     1947  string quotring=prepareQuotientring(nvars(basering)-indep[1][3]);
     1948  execute quotring;
     1949  ideal j=imap(gnir1,j);
     1950  kill gnir1;
     1951  j=clearSB(j);
     1952  ideal h;
     1953  for(n=1;n<=size(j);n++)
     1954  {
     1955     h[n]=leadcoef(j[n]);
     1956  }
     1957
     1958  setring gnir;
     1959  ideal h=imap(quring,h);
     1960  kill quring;
     1961
     1962  list l=minSat(j,h);
     1963  equ=l[1];
     1964  attrib(equ,"isSB",1);
     1965 
     1966  j=std(j,l[2]);
     1967
     1968  equi=equidimMax(j);
     1969  attrib(equi,"isSB",1);
     1970
     1971  if(dim(equ)==dim(equi))
     1972  {
     1973    equ=intersect(equ,equi);
     1974  }
     1975  setring P;
     1976  eq=imap(gnir,equ);
     1977  kill gnir;
     1978  return(eq);
     1979}
     1980example
     1981{ "EXAMPLE:"; echo = 2;
     1982   ring  r = 32003,(x,y,z),dp;
     1983   ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
     1984   equidimMax(i);
    18771985}
    18781986
     
    44154523   pr;
    44164524}
     4525///////////////////////////////////////////////////////////////////////////////
     4526proc equidimMaxEHV(ideal i)
     4527"USAGE:  equidimMaxEHV(i); i ideal
     4528RETURN:  ideal = equidimensional componente of i
     4529NOTE:    uses algorithm of Eisenbud, Huneke and Vasconcelos
     4530EXAMPLE: example equidimMaxEHV; shows an example
     4531"
     4532{
     4533  ideal j=std(i);
     4534  int cod=nvars(basering)-dim(j);
     4535  int e;
     4536  ideal ann;
     4537  if(homog(i)==1)
     4538  {
     4539     list re=sres(i,0);                   //the resolution
     4540     re=minres(re);                       //minimized resolution
     4541  }
     4542  else
     4543  {
     4544    list re=mres(i,0);
     4545  }
     4546  ann=AnnExt_R(cod,re);
     4547  return(ann);
     4548}
     4549example
     4550{ "EXAMPLE:";  echo = 2;
     4551   ring  r = 32003,(x,y,z),dp;
     4552   ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
     4553   equidimMaxEHV(i);
     4554}
    44174555
    44184556proc testPrimary(list pr, ideal k)
Note: See TracChangeset for help on using the changeset viewer.