Changeset ba94539 in git for Singular/LIB/primdec.lib


Ignore:
Timestamp:
May 8, 2000, 10:59:17 AM (23 years ago)
Author:
Gerhard Pfister <pfister@…>
Branches:
(u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
Children:
03f29c04de8cdd8b16d418ce91b393c3dcb493b5
Parents:
ef01241fece3236b762161e59b6bde349a6396bf
Message:
neue Prozedur equidim eingebaut.


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

Legend:

Unmodified
Added
Removed
  • Singular/LIB/primdec.lib

    ref0124 rba94539  
    1 // $Id: primdec.lib,v 1.54 2000-03-29 15:26:52 Singular Exp $
     1// $Id: primdec.lib,v 1.55 2000-05-08 08:59:17 pfister Exp $
    22///////////////////////////////////////////////////////////////////////////////
    33// primdec.lib                                                               //
     
    1111///////////////////////////////////////////////////////////////////////////////
    1212
    13 version="$Id: primdec.lib,v 1.54 2000-03-29 15:26:52 Singular Exp $";
     13version="$Id: primdec.lib,v 1.55 2000-05-08 08:59:17 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 
     29  equidim(I);       equidimensional decomposition of I
    3030REMARK:
    3131These procedures are implemented to be used in characteristic 0.
     
    17601760   return(k);
    17611761}
     1762///////////////////////////////////////////////////////////////////////////////
     1763proc equidim(ideal i)
     1764"USAGE:  equidimensiona(i); i ideal           
     1765 RETURN:  list = list of equidimensional ideals a1,...,as such that
     1766          i is the intersection of a1,...,as
     1767 EXAMPLE: example equidimensional; shows an example
     1768"
     1769{
     1770  def  P = basering;
     1771  list eq;
     1772  intvec w;
     1773  int n;
     1774  int a=attrib(i,"isSB");
     1775  int homo=homog(i);
     1776   
     1777  if(((homo==1)||(a==1))&&(find(ordstr(basering),"l")==0)
     1778                                &&(find(ordstr(basering),"s")==0))
     1779  {
     1780     execute "ring gnir = ("+charstr(basering)+"),("+varstr(basering)+"),("
     1781                              +ordstr(basering)+");";
     1782     ideal i=imap(P,i);
     1783     ideal j=i;
     1784     if(a==1)
     1785     {
     1786       attrib(j,"isSB",1);
     1787     }
     1788     else
     1789     {
     1790       j=groebner(i);
     1791     }
     1792  }
     1793  else
     1794  {
     1795     execute "ring gnir = ("+charstr(basering)+"),("+varstr(basering)+"),dp;";
     1796     ideal i=imap(P,i);
     1797     ideal j=groebner(i);
     1798  }
     1799  list equ,equi,indep;
     1800  if(homo==1)
     1801  {
     1802     for(n=1;n<=nvars(basering);n++)
     1803     {
     1804        w[n]=ord(var(n));
     1805     }
     1806     intvec hil=hilb(j,1,w);
     1807  }
     1808  if ((dim(j)==-1)||(size(j)==0)||(nvars(basering)==1)||(dim(j)==0))
     1809  {
     1810    setring P;
     1811    eq=i;
     1812    return(eq);
     1813  }
     1814
     1815  indep=maxIndependSet(j);
     1816  string va=string(maxideal(1));
     1817  execute "ring gnir1 = ("+charstr(basering)+"),("+indep[1][1]+"),("
     1818                              +indep[1][2]+");";
     1819  execute "map phi=gnir,"+va+";";
     1820  if(homo==1)
     1821  {
     1822     ideal j=std(phi(i),hil,w);
     1823  }
     1824  else
     1825  {
     1826     ideal j=groebner(phi(i));
     1827  }
     1828  string quotring=prepareQuotientring(nvars(basering)-indep[1][3]);
     1829  execute quotring;
     1830  ideal j=imap(gnir1,j);
     1831  kill gnir1;
     1832  j=clearSB(j);
     1833  ideal h;
     1834  for(n=1;n<=size(j);n++)
     1835  {
     1836     h[n]=leadcoef(j[n]);
     1837  }
     1838
     1839  setring gnir;
     1840  ideal h=imap(quring,h);
     1841  kill quring;
     1842
     1843  list l=minSat(j,h);
     1844  equ[1]=l[1];
     1845  attrib(equ[1],"isSB",1);
     1846 
     1847  j=std(j,l[2]);
     1848
     1849  equi=equidim(j);
     1850  attrib(equi[1],"isSB",1);
     1851
     1852  if(dim(equ[1])==dim(equi[1]))
     1853  {
     1854    equi[1]=intersect(equ[1],equi[1]);
     1855    equ=equi;
     1856  }
     1857  else
     1858  {
     1859     for(n=1;n<=size(equi);n++)
     1860     {
     1861       if(deg(equi[n][1])>0)
     1862       {
     1863         equ[size(equ)+1]=equi[n];
     1864       }
     1865    }
     1866  }
     1867  setring P;
     1868  eq=imap(gnir,equ);
     1869  kill gnir;
     1870  return(eq);
     1871}
     1872example
     1873{ "EXAMPLE:"; echo = 2;
     1874   ring  r = 32003,(x,y,z),dp;
     1875   ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5));
     1876   equidim(i);
     1877}
    17621878
    17631879///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset for help on using the changeset viewer.