\chapcontents {\tocstrut }{Copyright Notice}{9} \chapcontents {1}{About Programming in GAP}{10} \chapcontents {2}{Method Selection}{11} \seccontents {2.1}{Operations and Methods} {11} \seccontents {2.2}{Method Installation} {11} \seccontents {2.3}{Applicable Methods and Method Selection} {12} \seccontents {2.4}{Partial Methods} {13} \seccontents {2.5}{Redispatching} {13} \seccontents {2.6}{Immediate Methods} {13} \seccontents {2.7}{Logical Implications} {14} \seccontents {2.8}{Operations and Mathematical Terms} {14} \chapcontents {3}{Creating New Objects}{16} \seccontents {3.1}{Creating Categories} {16} \seccontents {3.2}{Creating Representations} {17} \seccontents {3.3}{Creating Attributes and Properties} {17} \seccontents {3.4}{Creating Other Filters} {18} \seccontents {3.5}{Creating Operations} {18} \seccontents {3.6}{Creating Families} {18} \seccontents {3.7}{Creating Types} {20} \seccontents {3.8}{Creating Objects} {20} \seccontents {3.9}{Component Objects} {21} \seccontents {3.10}{Positional Objects} {22} \seccontents {3.11}{Implementing New List Objects} {23} \seccontents {3.12}{Example -- Constructing Enumerators} {24} \seccontents {3.13}{Example -- Constructing Iterators} {26} \seccontents {3.14}{Arithmetic Issues in the Implementation of New Kinds of Lists} {27} \seccontents {3.15}{External Representation} {28} \seccontents {3.16}{Mutability and Copying} {29} \seccontents {3.17}{Global Variables in the Library} {31} \seccontents {3.18}{Declaration and Implementation Part} {33} \chapcontents {4}{Examples of Extending the System}{35} \seccontents {4.1}{Addition of a Method} {35} \seccontents {4.2}{Extending the Range of Definition of an Existing Operation} {36} \seccontents {4.3}{Enforcing Property Tests} {37} \seccontents {4.4}{Adding a new Operation} {37} \seccontents {4.5}{Adding a new Attribute} {38} \seccontents {4.6}{Adding a new Representation} {39} \seccontents {4.7}{Components versus Attributes} {40} \seccontents {4.8}{Adding new Concepts} {40} \seccontents {4.9}{Example: M-groups} {41} \seccontents {4.10}{Example: Groups with a word length} {42} \seccontents {4.11}{Example: Groups with a decomposition as semidirect product} {42} \seccontents {4.12}{Creating Own Arithmetic Objects} {42} \chapcontents {5}{An Example -- Residue Class Rings}{45} \seccontents {5.1}{A First Attempt to Implement Elements of Residue Class Rings} {45} \seccontents {5.2}{Why Proceed in a Different Way?} {46} \seccontents {5.3}{A Second Attempt to Implement Elements of Residue Class Rings} {47} \seccontents {5.4}{Compatibility of Residue Class Rings with Prime Fields} {57} \seccontents {5.5}{Further Improvements in Implementing Residue Class Rings} {62} \chapcontents {6}{An Example -- Designing Arithmetic Operations}{64} \seccontents {6.1}{New Arithmetic Operations vs. New Objects} {64} \seccontents {6.2}{Designing new Multiplicative Objects} {65} \chapcontents {}{Bibliography}{71} \chapcontents {}{Index}{72}