#### D.4.24.6 HomJJ

Procedure from library `normal.lib` (see normal_lib).

Usage:
  HomJJ (Li); Li = list: ideal SBid, ideal id, ideal J, poly p

Assume:
  R = P/id, P = basering, a polynomial ring, id an ideal of P,
  SBid = standard basis of id,
  J = ideal of P containing the polynomial p,
  p = nonzero divisor of R

Compute:
  Endomorphism ring End_R(J)=Hom_R(J,J) with its ring structure as affine ring, together with the map R --> Hom_R(J,J) of affine rings, where R is the quotient ring of P modulo the standard basis SBid.

Return:
  a list l of three objects

               l[1] : a polynomial ring, containing two ideals, 'endid' and 'endphi'
                     such that l[1]/endid = Hom_R(J,J) and
                     endphi describes the canonical map R -> Hom_R(J,J)
               l[2] : an integer which is 1 if phi is an isomorphism, 0 if not
               l[3] : an integer, = dim_K(Hom_R(J,J)/R) (the contribution to delta)
                      if the dimension is finite, -1 otherwise

Note:
  printlevel >=1: display comments (default: printlevel=0)

Example:

    LIB "normal.lib";
    ring r   = 0,(x,y),wp(2,3);
    ideal id = y^2-x^3;
    ideal J  = x,y;
    poly p   = x;
    list Li  = std(id),id,J,p;
    list L   = HomJJ(Li);
    def end = L[1];    // defines ring L[1], containing ideals endid, endphi
    setring end;       // makes end the basering
    end;
    ==> // coefficients: QQ considered as a field
    ==> // number of vars : 1
    ==> //        block   1 : ordering dp
    ==> //                  : names    T(1)
    ==> //        block   2 : ordering C
    endid;             // end/endid is isomorphic to End(r/id) as ring
    ==> endid[1]=0
    map psi = r,endphi;// defines the canonical map r/id -> End(r/id)
    psi;
    ==> psi[1]=T(1)^2
    ==> psi[2]=T(1)^3
    L[3];              // contribution to delta
    ==> 1

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