Let N be a submodule of the module M = R(m). For simplicity, assume that N is free, and has dimension n where n < m. There are two ways in which N may be viewed:
To provide the user with the maximum flexibility, Magma supports both forms of submodule presentation for the important classes of modules. Usually, a module calculation commences with the definition of one or two modules from which further modules are created by the operations of forming submodules, quotient modules and extensions. Let us call these latter modules descendants of the original module. Magma provides parallel creation functions which allow the user to choose the form of submodule presentation. Once that choice has been made, all descendants of the initial module(s) will follow the same presentation convention.
The module creation functions that select the embedded form are usually of the form QualifierSpace, while those that adopt the standard form are usually of the form QualifierModule. Thus in the case of vector spaces the function KSpace(K, n) constructs the n-dimensional vector space over the field K, where submodules are to be presented in embedded form. On the other hand, RModule(K, n) constructs the n-dimensional vector space over the field K, where submodules are to be presented in reduced form.