//SINGULAR Example 2.7.14 ring A1=0,(a,b,c),dp; ideal P=ab-c2; qring A=std(P); // A=A1/P poly p=abc; ring B1=0,(x,y,z,a,b,c),dp; ideal I=x2,y,ab-c2; qring B=std(I); // B=B1/I map ib=A,a,b,c; //the canonical map A---->B ring C1=0,(u,v,a,b,c),lp; ideal J=uv,ab-c2; qring C=std(J); // C=C1/J map ic=A,a,b,c; //the canonical map A---->C ring T1=0,(x,y,z,u,v,a,b,c),dp; //B1 tensor C1 over A1 ideal K=imap(C1,J)+imap(B1,I); qring T=std(K); //B tensor C over A map jb=B,x,y,z,a,b,c; //the canonical map B---->T map jc=C,u,v,a,b,c; //the canonical map C---->T map psi=jc(ic); //the diagram is commutative map phi=jb(ib); psi(p); phi(p);