Changeset 03f29c in git
- Timestamp:
- May 8, 2000, 11:42:58 AM (23 years ago)
- Branches:
- (u'spielwiese', 'f6c3dc58b0df4bd712574325fe76d0626174ad97')
- Children:
- 0ad3597762e2f64054f1324b098d198434537d9b
- Parents:
- ba9453910d26fdb676fa083bc02d866111ea5ece
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/primdec.lib
rba94539 r03f29c 1 // $Id: primdec.lib,v 1.5 5 2000-05-08 08:59:17pfister Exp $1 // $Id: primdec.lib,v 1.56 2000-05-08 09:42:58 pfister Exp $ 2 2 /////////////////////////////////////////////////////////////////////////////// 3 3 // primdec.lib // … … 11 11 /////////////////////////////////////////////////////////////////////////////// 12 12 13 version="$Id: primdec.lib,v 1.5 5 2000-05-08 08:59:17pfister Exp $";13 version="$Id: primdec.lib,v 1.56 2000-05-08 09:42:58 pfister Exp $"; 14 14 info=" 15 15 LIBRARY: primdec.lib PROCEDURES FOR PRIMARY DECOMPOSITION … … 28 28 prepareAss(I); list of radicals of the equidimensional components of I 29 29 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) 30 33 REMARK: 31 34 These procedures are implemented to be used in characteristic 0. … … 1762 1765 /////////////////////////////////////////////////////////////////////////////// 1763 1766 proc equidim(ideal i) 1764 "USAGE: equidim ensiona(i); i ideal1767 "USAGE: equidim(i); i ideal 1765 1768 RETURN: list = list of equidimensional ideals a1,...,as such that 1766 1769 i is the intersection of a1,...,as 1767 EXAMPLE: example equidim ensional; shows an example1770 EXAMPLE: example equidim; shows an example 1768 1771 " 1769 1772 { … … 1875 1878 ideal i=intersect(ideal(z),ideal(x,y),ideal(x2,z2),ideal(x5,y5,z5)); 1876 1879 equidim(i); 1880 } 1881 /////////////////////////////////////////////////////////////////////////////// 1882 proc 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 } 1980 example 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); 1877 1985 } 1878 1986 … … 4415 4523 pr; 4416 4524 } 4525 /////////////////////////////////////////////////////////////////////////////// 4526 proc equidimMaxEHV(ideal i) 4527 "USAGE: equidimMaxEHV(i); i ideal 4528 RETURN: ideal = equidimensional componente of i 4529 NOTE: uses algorithm of Eisenbud, Huneke and Vasconcelos 4530 EXAMPLE: 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 } 4549 example 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 } 4417 4555 4418 4556 proc testPrimary(list pr, ideal k)
Note: See TracChangeset
for help on using the changeset viewer.