### 4.18.1 proc declaration

Syntax:
  [`static`] `proc` proc_name [(<parameter_list>)
  [<help_string>]
  `{`
  <procedure_body>
  `}`
  [`example`
  `{`
  <sequence_of_commands>
  `}`]
Purpose:
  Defines a new function, the `proc` proc_name. Once loaded in a SINGULAR session, the information provided in the help string will be displayed upon entering `help proc_name;`, while the `example` section will be executed upon entering `example proc_name;`. See Parameter list, Help string, and the example in Procedures in a library.
  The help string, the parameter list, and the example section are optional. They are, however, mandatory for the procedures listed in the header of a library. The help string is ignored and no example section is allowed if the procedure is defined interactively, i.e., if it is not loaded from a file by the `LIB` or `load` command (see LIB and see load ).
  In the body of a library, each procedure not meant to be accessible by users should be declared static. See Procedures in a library.

Example:

        proc milnor_number (poly p)
        {
          ideal i= std(jacob(p));
          int m_nr=vdim(i);
          if (m_nr<0)
          {
            "// not an isolated singularity";
          }
          return(m_nr);         // the value of m_nr is returned
        }
        ring r1=0,(x,y,z),ds;
        poly p=x^2+y^2+z^5;
        milnor_number(p);
      ==> 4

See LIB; Libraries; apply.

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