### 3.9.1 ASSUME

`Syntax:`
  `ASSUME (` int_constant `,` expression `)`
`Purpose:`
  Tests the expression for correctness if the int_constant is smaller as a variable `assumeLevel`. If no such variable exist the int expression is compared against 0. It is possible to define an individual `assumeLevel` for each library and/or procedure If the expression is evaluated and not true (i.e. does not evaluate to `int(0)` an error is raised.
`Note: `ASSUME` shall be used for documentation and debugging,`
  production code of a library must never define `assumeLevel`.
`Example:`

        ASSUME(0,2==2); // always tested
        ASSUME(1,1==2); // not evaluated
        int assumeLevel=2;
        ASSUME(1,1==2);
      ==>    ? ASSUME failed:  ASSUME(1,1==2);
      ==>    ? error occurred in or before ./examples/ASSUME.sing line 4: `  ASSUME\
         (1,1==2);`
        // setting a different assumeLevel for poly.lib:
        int Poly::assumeLevel=2;
      ==> Poly of type 'ANY'. Trying load.
      ==>    ? 'Poly' no such package
      ==>    ? error occurred in or before ./examples/ASSUME.sing line 6: `  int Po\
         ly::assumeLevel=2;`
      ==>    ? wrong type declaration. type 'help int;'

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