4.11 Variant: non-expanded standard form

The standard form structure described so far is used by default for the fully expanded expressions with common denominator. By setting on factor, off exp, or off mcd the slots mvar and ldeg may be used in an exended style:

Special functions to work with composite standard forms:



sfp(m)test if m is a standard form (T) or a kernes(NIL)
expnd(f)expand a standard form f


To distinguish between factored and expanded standard forms, use the predicated sfp: sfp applied to mvar of a standard form returns T if the main variable slot is occupied by a nested standard form. To expand a factored standard form you may use the funtion expnd; however, you need to turn the switch exp on during that call, e.g.

            u:=expnd u where !*exp=t;

Don’t build non–expanded standard forms yourself – otherwise you run the risk to produce objects with a bad structure (e.g. a wrong term order) resulting in wrong computational results. You better rely on the standard routines for manipulating these objects – as soon as *exp is off and *factor is on they produce the product forms anyway.