[Next] [Prev] [Right] [Left] [Up] [Index] [Root]
Intrinsics
Intrinsics
An intrinsic is a builtin Magma function or procedure. Most intrinsics
perform some standard algebraic operation, though a few relate to the
Magma system itself. A good way of getting information about an intrinsic
is to use this help system. For summary information, you may obtain the
intrinsic's signature. See Signature.
The name of almost every intrinsic starts with a capital letter. If the
common mathematical name for what the intrinsic does has more than one word,
then the Magma name will probably be the same name, with capital letters
starting each word and with no intervening spaces. For instance, the
intrinsic for finding the primitive root is called PrimitiveRoot. Several
intrinsics have two names: a long explanatory one and a short convenient one.
For instance, AbelianQuotientInvariants and AQInvariants are the same.
Almost all intrinsics have arguments. For instance, HammingCode(K, r) takes
two arguments, a finite field K and an integer r. You could use it as
> HC := HammingCode(FiniteField(2), 4);
Some intrinsics have parameters. These are optional values supplied after
the arguments and a colon (:) . If you do not specify a parameter, then Magma
will use its "default value". For instance, the intrinsic IsSubsequence(Q, R)
has a parameter called Kind, with a default value of "Consecutive":
> S1 := [6, 5];
> S2 := [2, 6, 3, 5, 7];
> print IsSubsequence(S1, S2);
false
> print IsSubsequence(S1, S2 : Kind := "Sequential");
true
If a Boolean parameter B of an intrinsic I is being given the value true,
then the syntax
I(ARGS : PARAM := EXPR, PARAM := EXPR, ..., B)
may be used instead of
I(ARGS : PARAM := EXPR, PARAM := EXPR, ..., B := true)
The library of intrinsic functions in Magma contains implementations of
approximately 2000 algebraic and geometric algorithms. Highlights include:
-
Fast machinery for polynomial algebra, particularly for the factorization
of univariate and multivariate polynomials over Z and several kinds of fields.
Magma supports calculation with ideals in rings.
Groebner basis algorithms are employed.
-
An extensive modules for finite fields that provides users with the
capability of computing in fields as large as GF(2^1000). Various
optimal representations of Galois fields are used to provide superior
performance over a wide range of cardinalities. The module also solves
the compatibility problem for fields constructed by different chains of
extensions.
-
The KANT system developed by Michael Pohst's group for constructive
algebraic number theory. This package includes facilities for calculating
integral bases, ideal class groups and systems of fundamental units for
fields of degree in excess of 20.
-
The Pari system developed by Henri Cohen and collaborators in Bordeaux
is included as part of Magma. It provides users with
access via the Magma programming language to the highly efficient Pari
code for elliptic curves, number fields, real and complex field,
and power and Laurent series.
-
A new generation of permutation group algorithms that enable users
routinely to perform computations, such as computing a chief series,
in short base groups having degree up to at least a million. Backtrack
searches are conducted using Jeff Leon's new package (PERM).
-
New algorithms and programs for most of the critical processes for
finitely presented groups. Included among these are George Havas's new
Todd-Coxeter procedure, Eamonn O'Brien's p-quotient and p-group generation
programs and Sims' new backtrack-based low index subgroups algorithm.
-
Extensive machinery for computing with modules and their homomorphisms.
This includes highly optimized code for modules over finite fields and
over the ring of integers.
-
A graph theory module containing many functions for determining graph
invariants as well as Brendan McKay's graph automorphism program (nauty).
-
A coding theory package including many constructions for linear codes
together with machinery for determining important invariants such as the
minimum weight, the weight enumerator and the automorphism group.
[Next] [Prev] [Right] [Left] [Up] [Index] [Root]