Singular Manual: is_injective

  | #### D.4.2.6 is_injective Procedure from library `algebra.lib` (see algebra_lib). Usage: is_injective(phi,pr[,c,s]); phi map, pr preimage ring, c int, s string Return:
               - 1 (type int) if phi is injective, 0 if not (if s is not given).
               - If s is given, return a list l of size 2, l[1] int, l[2] ring:
                 l[1] is 1 if phi is injective, 0 if not
                 l[2] is a ring with variables x(1),...,x(n),y(1),...,y(m) if the
                 basering has n variables and the map m components, it contains the
                 ideal 'ker', depending only on the y(i), the kernel of the given map
Note: Three different algorithms are used depending on c = 1,2,3. If c is not given or c=0, a heuristically best method is chosen. The basering may be a quotient ring. However, if the preimage ring is a quotient ring, say pr = P/I, consider phi as a map from P and then the algorithm returns 1 if the kernel of phi is 0 mod I. To access to the ring l[2] and see ker you must give the ring a name, e.g. def S=l[2]; setring S; ker; Display: The above comment is displayed if printlevel >= 0 (default). Example:
    LIB "algebra.lib";
    int p = printlevel;
    ring r = 0,(a,b,c),ds;
    ring s = 0,(x,y,z,u,v,w),dp;
    ideal I = x-w,u2w+1,yz-v;
    map phi = r,I;                    // a map from r to s:
    is_injective(phi,r);              // a,b,c ---> x-w,u2w+1,yz-v
    ==> 1
    ring R = 0,(x,y,z),dp;
    ideal i = x, y, x2-y3;
    map phi = R,i;                    // a map from R to itself, z --> x2-y3
    list l = is_injective(phi,R,"");
    ==>
    ==> // The 2nd element of the list is a ring with variables x(1),...,x(n),
    ==> // y(1),...,y(m) if the basering has n variables and the map is
    ==> // F[1],...,F[m].
    ==> // It contains the ideal ker, the kernel of the given map y(i) --> F[i].
    ==> // To access to the ring and see ker you must give the ring a name,
    ==> // e.g.:
    ==>      def S = l[2]; setring S; ker;
    ==>
    l[1];
    ==> 0
    def S = l[2]; setring S;
    ker;
    ==> ker[1]=y(2)^3-y(1)^2+y(3)

User manual for Singular version 4.4.1, 2025, generated by texi2html.