Changeset 4d68980 in git
- Timestamp:
- May 11, 2000, 1:22:40 PM (23 years ago)
- Branches:
- (u'spielwiese', '0d6b7fcd9813a1ca1ed4220cfa2b104b97a0a003')
- Children:
- fa1af627353fd9365bd5fdad189f015e30251a16
- Parents:
- 6993ab772a58d6c46ff84558a9b53adda18205d0
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/primdec.lib
r6993ab7 r4d68980 1 // $Id: primdec.lib,v 1.6 0 2000-05-10 12:56:13pfister Exp $1 // $Id: primdec.lib,v 1.61 2000-05-11 11:22:40 pfister Exp $ 2 2 /////////////////////////////////////////////////////////////////////////////// 3 3 // primdec.lib // … … 11 11 /////////////////////////////////////////////////////////////////////////////// 12 12 13 version="$Id: primdec.lib,v 1.6 0 2000-05-10 12:56:13pfister Exp $";13 version="$Id: primdec.lib,v 1.61 2000-05-11 11:22:40 pfister Exp $"; 14 14 info=" 15 15 LIBRARY: primdec.lib PROCEDURES FOR PRIMARY DECOMPOSITION … … 27 27 equiRadical(I); the radical of the equidimensional part of the ideal I 28 28 prepareAss(I); list of radicals of the equidimensional components of I 29 equidim(I); equidimensional decomposition of I29 equidim(I); weak equidimensional decomposition of I 30 30 equidimMax(I); equidimensional locus of I 31 31 equidimMaxEHV(I); equidimensional locus of I (Algorithm of Eisenbud, … … 1765 1765 /////////////////////////////////////////////////////////////////////////////// 1766 1766 proc 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 1771 1776 " 1772 1777 { … … 1774 1779 list eq; 1775 1780 intvec w; 1776 int n,ra; 1777 ideal te=1; 1781 int n,m; 1778 1782 int a=attrib(i,"isSB"); 1779 1783 int homo=homog(i); 1780 if( typeof(attrib(i,"isRadical"))=="int" )1781 {1782 if(attrib(i,"isRadical")==1)1783 {1784 ra=1;1785 }1786 }1787 1784 if(size(#)!=0) 1788 1785 { 1789 te=#[1]; 1790 } 1786 m=1; 1787 } 1788 1791 1789 if(((homo==1)||(a==1))&&(find(ordstr(basering),"l")==0) 1792 1790 &&(find(ordstr(basering),"s")==0)) … … 1812 1810 } 1813 1811 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 }1822 1812 if(homo==1) 1823 1813 { … … 1828 1818 intvec hil=hilb(j,1,w); 1829 1819 } 1820 1830 1821 if ((dim(j)==-1)||(size(j)==0)||(nvars(basering)==1)||(dim(j)==0)) 1831 1822 { … … 1836 1827 } 1837 1828 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); 1847 1832 } 1848 1833 else 1849 1834 { 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; 1879 1846 } 1880 1847 else 1881 1848 { 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 } 1903 1851 setring P; 1904 if(b!=0) 1905 { 1906 eq=imap(gnir,equi); 1907 } 1852 eq=imap(gnir,equi); 1908 1853 kill gnir; 1909 1854 return(eq); … … 2000 1945 { 2001 1946 equi=equidimMax(j); 2002 equ=inter sect(equ,equi);1947 equ=interred(intersect(equ,equi)); 2003 1948 } 2004 1949 setring P;
Note: See TracChangeset
for help on using the changeset viewer.