Changeset ba94539 in git for Singular/LIB/primdec.lib
- Timestamp:
- May 8, 2000, 10:59:17 AM (23 years ago)
- Branches:
- (u'spielwiese', '8e0ad00ce244dfd0756200662572aef8402f13d5')
- Children:
- 03f29c04de8cdd8b16d418ce91b393c3dcb493b5
- Parents:
- ef01241fece3236b762161e59b6bde349a6396bf
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
Singular/LIB/primdec.lib
ref0124 rba94539 1 // $Id: primdec.lib,v 1.5 4 2000-03-29 15:26:52 Singular Exp $1 // $Id: primdec.lib,v 1.55 2000-05-08 08:59:17 pfister Exp $ 2 2 /////////////////////////////////////////////////////////////////////////////// 3 3 // primdec.lib // … … 11 11 /////////////////////////////////////////////////////////////////////////////// 12 12 13 version="$Id: primdec.lib,v 1.5 4 2000-03-29 15:26:52 Singular Exp $";13 version="$Id: primdec.lib,v 1.55 2000-05-08 08:59:17 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 29 equidim(I); equidimensional decomposition of I 30 30 REMARK: 31 31 These procedures are implemented to be used in characteristic 0. … … 1760 1760 return(k); 1761 1761 } 1762 /////////////////////////////////////////////////////////////////////////////// 1763 proc 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 } 1872 example 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 } 1762 1878 1763 1879 ///////////////////////////////////////////////////////////////////////////////
Note: See TracChangeset
for help on using the changeset viewer.