Multiple arguments can be used in two different ways for indexing:

- When the indexing argument is unbound, use the ``best'' of the
remaining ones (e.g., if in
the above example
*norm*is called with the first argument unbound, try indexing on the second) (*index tree breadth, MBN-Algorithm*) - When the argument that can be used for indexing selects
many clauses, view these clauses as a new procedure and index it
recursively (e.g., if
*norm*is called with and/2 as the first argument, form a procedure from clauses 3,7,8,9 and index it on argument column 2 (for the second partition)) (*index tree depth, MDN-Algorithm*)

The *MBN-Algorithm* together with the *MDN-Algorithm* form the
*MN-Algorithm*, which is explained in detail in section
11.2.3. The results of the *MBN-Algorithm* and
*MDN-Algorithm* applied to the *norm* example should be intuitively
clear and are presented in the next two sections.