In this section we describe the creation of maps, partial maps, and homomorphisms via the various forms of the constructors, as well as maps that define coercions between algebraic structures.
Maps between structures A and B may be specified either by providing
the full graph (as defined in the previous section) or by supplying
an expression rule for finding images.
map< A -> B | G > : Struct, Struct -> Map
Given a finite structure A, a structure B and a graph G of A x B, construct the mapping f : A -> B, as defined by G. The graph G may be given by either a set, sequence, or list of tuples or arrow-pairs . Note that G must be a full graph, i.e., every element of A must occur exactly once as a first component.
Given a set A, a set B, a variable x and an expression e(x), usually involving x, construct the mapping f : A -> B, as defined by e(x). It is the user's responsibility to ensure that a value is defined for every x in A. The scope of the free variable x is restricted to the map-constructor.
Partial mappings are quite different to both general mappings and
homomorphisms, in that images need not be defined for every element
of the domain.
pmap< A -> B | G > : Struct, Struct -> Map
Given a finite structure A of cardinality n, a structure B and a subgraph G of A x B, construct the partial map f : A -> B, as defined by G. The subgraph G may be given by either a set, sequence, or list of tuples or arrow-pairs .
Given a set A, a set B, a variable x and an expression e(x), construct the partial map f : A -> B, as defined by e(x). This form of the map constructor is a special case of the previous one whereby the image of x can be defined using a single expression. Again the scope of x is restricted to the map-constructor.
The principal construction for homomorphisms consists of the
generator image form, where the images of the generators of the domain are
listed. Note that the kind of homomorphism, and the kind and number of
generators for which images are expected, depends entirely on the
type of the domain.
hom< A -> B | G > : Struct, Struct -> Map
Given a finitely generated algebraic structure A and a structure B, as well as a graph G of A x B, construct the homomorphism f : A -> B defined by extending the map of the generators of A to all of A. The graph G may be given by either a set, sequence, or list of tuples or arrow-pairs .The detailed requirements on the specification are module dependent, and can be found in the chapter describing the domain A.
This is a module dependent constructor for homomorphisms between structures A and B; see the chapter describing the functions for A. In general after the bar the images for all generators of the structure A must be specified.
Given a structure A, a structure B, a variable x and an expression e(x), construct the homomorphism f : A -> B, as defined by e(x). This form of the map constructor is a special case of the previous one whereby the image of x can be defined using a single expression. Again the scope of x is restricted to the map-constructor.
Magma has a sophisticated machinery for coercion of elements
into structures other than the parent. Non-automatic coercion
is usually performed via the ! operator. To obtain the
coercion map corresponding to ! in a particular instance
the Coercion function can be used.
Coercion(D, C) : Struct, Struct -> Map
Given structures D and C such that elements from D can be coerced into C, return the map m that performs this coercion. Thus the domain of m will be D and the codomain will be C.[Next] [Prev] [Right] [Left] [Up] [Index] [Root]