Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Система компьютерной алгебры GAP - GAP на CHIP-CD 9/2004


Информационный Канал Subscribe.Ru

Рассылка "Система компьютерной алгебры GAP"
(http://subscribe.ru/catalog/science.exact.gap/)
ведущий рассылки А.Б.Коновалов, a_konovalov@hotmail.com
выпуск 40 от 21 августа 2004 г.

Cистема компьютерной алгебры GAP 4.4.3
на CHIP-CD 9/2004
На CD-приложении к сентябрьскому выпуску журнала CHIP Украина будет помещен дистрибутив системы GAP 4.4.3 для Windows, Linux и MacOS. В этом выпуске рассылки - помещенная на этом же диске сопроводительная статья о системе GAP, содержащая также подробные инструкции по инсталляции.


1. Краткое знакомство с системой GAP

Система компьютерной алгебры GAP (http://www.gap-system.org/), название которой расшифровывается как "Groups, Algorithms and Programming", была задумана около 18 лет назад как инструмент комбинаторной теории групп - раздела алгебры, изучающего группы, заданные порождающими элементами и определяющими соотношениями. C выходом каждой новой версии программы сфера ее применения охватывала все новые и новые разделы алгебры.

Разработка системы была начата в 1986 г. в г.Аахен, Германия (http://www.math.rwth-aachen.de/LDFM/). В 1997 г. центр координации разработки и технической поддержки пользователей переместился в Университет г.Сент-Эндрюс, Шотландия (http://www-circa.mcs.st-and.ac.uk/). Текущая версия системы - GAP 4.4.3 - была выпущена в мае 2004 г.

Изначально система GAP разрабатывалась под Unix, а затем была портирована для работы в других операционных системах. В настоящее время она работает в разнообразных версиях Unix/Linux, а также в Windows и MacOS. Заметим, что GAP демонстрирует максимальную производительность в Unix/Linux-системах, а некоторые пакеты, такие как, например, графический интерфейс XGAP, функционируют только в системах семейства Unix/Linux (см. скриншот 3 на CHIP-CD).

GAP является свободно распространяемой, открытой и расширяемой системой. Она распространяется в соответствии с GNU Public License (cм. http://www.gap-system.org/Download/copyright.html). Cистема поставляется вместе с исходными текстами, которые написаны на двух языках: ядро системы написано на Си, а библиотека функций - на специальном языке, также называемом GAP, который по синтаксису напоминает Pascal, однако является объектно-ориентированным языком. Пользователи могут создавать свои собственные программы на этом языке, и здесь исходные тексты являются незаменимым наглядным пособием. Наконец, разработчики программ для GAP могут оформить свои разработки в виде пакета для системы GAP и представить их на рассмотрение в Совет GAP. После прохождения процедуры рецензирования и одобрения советом GAP такой пакет включается в приложение к дистрибутиву GAP и распространяется вместе с ним. Процедура рецензирования позволяет приравнивать принятые Советом GAP пакеты к научной публикации, и ссылаться на них наравне с другими источниками.

Помимо уже упомянутых пакетов, система состоит из следующих четырех основных компонент:
  • ядра системы, обеспечивающего интерпретацию языка GAP, работу с системой в программном и интерактивном режиме;
  • библиотеки функций, в которой реализованы разнообразные алгебраические алгоритмы (более 4000 пользовательских функций, более 140000 строк программ на языке GAP);
  • библиотеки данных, включая, например, библиотеку всех групп порядка не более 2000 (за исключением 49487365422 групп порядка 1024, точное количество которых также было определено с помощью системы GAP!), библиотеку примитивных групп подстановок, таблицы характеров конечных групп и т.д., что в совокупности составляет эффективное средство для выдвижения и тестирования научных гипотез;
  • обширной (около полутора тысяч страниц) документации, доступной в разнообразных форматах (tex, ps, pdf, html), а также через Интернет.

2. Работа с алгебраическими объектами

В разнообразии областей алгебры, охватываемых GAP, можно убедиться, даже только лишь прочитав названия разделов обширнейшей документации по системе, занимающей около 1500 страниц (которая, кстати, не только входит в состав дистрибутива, но и доступна через Интернет). Вычислительная мощь системы может быть продемонстрирована находящимся на ее сайте примером определения того, что кубик Рубика имеет 43252003274489856000 различных состояний, и сборки кубика Рубика из произвольного начального состояния в среднем за 100 ходов.

GAP дает возможность производить вычисления с гигантскими целыми и рациональными числами, допустимые значения которых ограничены только объемом доступной памяти. Далее, система работает с циклотомическими полями, конечными полями, р-адическими числами, многочленами от многих переменных, рациональными функциями, векторами и матрицами. Пользователю доступны различные комбинаторные функции, элементарные теоретико-числовые функции, разнообразные функции для работы с множествами и списками.

Группы могут быть заданы в различной форме, например, как группы подстановок, матричные группы, группы, заданные порождающими элементами и определяющими соотношениями. Более того, построив, например, групповую алгебру, можно вычислить ее мультипликативную группу, и даже задать ее подгруппу, порожденную конкретными обратимыми элементами групповой алгебры. Ряд групп может быть задан непосредственным обращением к библиотечным функциям (например, симметрическая и знакопеременная группы, группа диэдра, циклическая группа и др.).

Функции для работы с группами включают определение порядка группы, вычисление классов сопряженных элементов, центра и коммутанта группы, верхнего и нижнего центрального рядов, ряда коммутантов, Силовских подгрупп, максимальных подгрупп, нормальных подгрупп, решеток подгрупп, групп автоморфизмов, и т.д. Для ряда конечных групп доступно определение их типа изоморфизма.

Теория представлений групп также входит в область применения системы GAP. Здесь имеются инструменты для вычисления таблиц характеров конкретных групп, действий над характерами и интерактивного построения таблиц характеров, определения теоретико-групповых свойств на основании свойств таблицы характеров группы. Модулярные представления групп (т.е. представления над полем, характеристика которого делит порядок группы) также могут быть исследованы с помощью GAP.

В предпоследней версии 4.3 были существенным образом расширены возможности для работы с векторными пространствами, алгебрами и модулями. В системе могут быть определены векторные пространства над всеми доступными полями и модули над всеми доступными кольцами. Имеются алгоритмы для вычисления структуры конечномерных алгебр Ли, которые могут быть, например, заданы структурными константами или порождающими элементами, вычисления различных их Лиевских подалгебр и идеалов.

Версия 4.4, заменившая версию 4.3, содержит множество новых особенностей, усовершенствованных алгоритмов и средств программирования, и поэтому мы рекомендуем ее установку всем пользователям предыдущих версий. В частности, в GAP 4.4 появились новые алгоритмы и функции для работы с базисами Гребнера, алгебраическими расширениями полей, группами Галуа, таблицами характеров, векторными пространствами; новые методы для вычисления минимальных нормальных подгрупп конечной группы и цоколя конечной группы; быстрый метод для определения, является ли заданная группа подстановок симметрической или знакопеременной группой в их естественном представлении; разнообразные функции для вычислений с целочисленными матрицами, и др. нововведения.

Кроме новых алгоритмов и функций, в GAP 4.4 усовершенствована производительность многих уже существовавших ранее алгоритмов, в т.ч. для вычисления неприводимых представлений и их характеров, вычисления нормализаторов и сопряженных подгрупп в симметрических группах подстановок, вычисления системы представителей смежных классов в группах подстановок. Разложение подстановки в произведение порождающих элементов теперь вовзращает существенно более короткие слова (например, длины около 100 для группы кубика Рубика). Усовершенствования также коснулись списков, многочленов, матриц и матричных групп, расширений конечных групп, конечномерных алгебр.

Вместе с системой распространяется множество новых версий пакетов для GAP. При этом изменился механизм загрузки пакетов. Для загрузки каждый пакет должен содержать файл PackageInfo.g с мета-информацией о нем (все пакеты для GAP 4.4 такие файлы уже содержат). За исключением этой особенности, имеется только несколько незначительных изменений (например, тривиальная группа теперь не является простой), не совместимых с GAP 4.3.

Среди других областей применения системы - теория графов и их автоморфизмов, теория кодирования, теория полугрупп, кристаллография, и многое другое. Существует графический интерфейс XGAP (http://www.math.rwth-aachen.de/~Max.Neunhoeffer/xgap4), который работает под OC Linux или Unix и позволяет, например, графически изобразить решетку подгрупп группы (см. скриншот 4 на CHIP-CD). Информация о существующих разработках для применения в той или проблемной области может быть найдена на сайте GAP (http://www.gap-system.org/).

3. Инсталляция системы

3.1. Системные требования


GAP 4.4 инсталлируется на компьютеры, работающие под управлением различных версий операционных систем UNIX/Linux, Windows или Macintosh (в Mac OS X можно использовать UNIX-инсталляцию). Архивы с дистрибутивом системы GAP не зависят от операционной системы, небольшие различия имеются только в процедуре инсталляции.

Вместе с самой системой GAP распространяется набор авторских программ (пакетов), которые расширяют функциональность системы в том или ином направлении, и зачастую довольно существенно. Некоторые из пакетов не работают в системах Windows или Macintosh, а работают только в UNIX/Linux. Полный список пакетов с их кратким описанием и дальнейшими ссылками приведен на странице http://www.gap-system.org/Packages/packages.html.

Полная версия системы с большинством пакетов занимает около 360 Mб дискового пространства. Для запуска GAP рекомендуется наличие не менее 128 MB оперативной памяти и 500 Mб свободного пространства на жестком диске перед инсталляцией.

На самом деле, система будет работать и на компьютерах с меньшими характеристиками, однако на устаревших компьютерах (например, Pentium-133 и ниже с 16-32 Мб оперативной памяти) для ее запуска понадобится довольно продолжительное время. Кроме того, для экономии места на жестком диске пакеты могут быть установлены выборочно, а некоторые компоненты системы, использование которых не предполагается, могут быть удалены (например, документация в неиспользуемых форматах, библиотеки транзитивных групп и т.п.). Пример такой мини-инсталляции GAP, занимающей всего около 20 Мб, может быть найден на сайте Украинской группы пользователей GAP (http://ukrgap.exponenta.ru/) в разделе "мини-тест".

3.2. Основные этапы инсталляции

В общем случае инсталляция состоит из следующих этапов:
  • Получение и распаковка архивов.
  • В UNIX/Linux - компиляция ядра GAP (исполняемые файлы для Windows и Macintosh входят в состав архивов).
  • В UNIX/Linux - дальнейшая инсталляция некоторых пакетов для достижения их полной функциональности (не доступной в Windows и Macintosh).
  • Настройка, в зависимости от операционной системы, ссылок, скриптов, командных файлов, ярлыков для обеспечения удобной работы с системой всех пользователей Вашего компьютера.
  • Опционально: запуск некоторых тестов.
  • Опционально, но приветствуется: сообщение в GAP Group о Вашей инсталляции.

3.3. Содержание CHIP-CD

CHIP-CD 9/2004 cодержит универсальный дистрибутив GAP в формате *.zoo, который подходит для любой операционной системы семейств Windows, UNIX, MacOS. Он состоит из следующих файлов:
  • gap4r4p3.zoo - ядро системы GAP (включая исполнимые файлы для Windows и Mac).
  • packages-2004_...UTC.zoo - объединенный архив пакетов для GAP (для последующего индивидуального обновления отдельных пакетов см. страницу http://www.gap-system.org/Packages/packages.html).
  • xtom1r1.zoo - опциональный архив с некоторыми дополнительными таблицами меток (около 80 Мб в распакованном виде).
  • tools4r4p2.zoo - некоторые утилиты, предназначенные, в основном, для авторов пакетов (подготовка документации и архивов).
  • htmie4r4p2.zoo - документация, оптимизированная для более корректного отображения математических символов в Internet Explorer.
Для распаковки архивов нужно использовать находящуюся на CHIP-CD специальную версию программы unzoo, которая извлекает из архива текстовые файлы с концами строк в соответствующем данной операционной системе формате:
  • unzoo.c - для UNIX/Linux, команда для компиляции: cc -o unzoo -DSYS_IS_UNIX unzoo.c
  • unzoo.exe - для Windows
  • unzoo4r4-PPC.sit - для MacOS
При этом для просмотра содержания архива XXX.zoo используется команда
unzoo -l XXX.zoo
Для его распаковки используется команда
unzoo -x XXX.zoo
(предупреждения о невозможности создания каталогов в процессе ее работы могут быть уверенно проигнорированы).

3.4. Инсталляция GAP в зависимости от операционной системы

3.4.1. Инсталляция GAP для UNIX (в т.ч. Linux и Mac OS X)

Для инсталляции GAP для UNIX/Linux необходимо выполнить описанные ниже действия (для Mac OS X последовательность шагов практически та же, однако следует ознакомиться с помещенными ниже заметками по инсталляции для OS X. Предполагается, что в системе установлен стандартный C-компилятор, Вы имеете архивы gap4r4p3 и packages-..., и знаете, как их распаковать в соответствии с разделом 3.3.

Выберите каталог для установки, например, /usr/local/lib (или некоторый личный каталог, если Вы не обладаете правами администратора на данном компьютере). Распакуйте архив gap4r4p3 в этот каталог. Это создаст подкаталог gap4r4, на который мы в дальнейшем будем ссылаться как на $GAPROOT.

Опционально: Если Вы загрузили дополнительный архив xtom4r4p3, распакуйте его в том же каталоге, в котором Вы распаковывали архив gap4r4p3.

Распакуйте пакеты из архива packages-... внутри ( ! ) каталога $GAPROOT/pkg.

Теперь нужно откомпилировать ядро GAP с помощью ANSI C-компилятора (рекомендуется использование gcc, если это возможно). В большинстве случаев это можно сделать с помощью стандартной последовательности команд:

cd $GAPROOT
./configure
make

Опционально: если Вы желаете изменить C-компилятор, опции компилятора или компоновщика, Вы можете установить значения переменных окружения CC, COPTS или LOPTS, соответственно, перед вызовом configure. Например, в системе SUN Solaris для вызова ее собственного компилятора и получения 64-битного кода в статически скомпонованном исполнимом файле нужно ввести следующие команды (в csh-синтаксисе):

setenv CC cc
setenv COPTS "-v9a -fast"
setenv LOPTS -static
./configure
make

Скопируйте скрипт GAPROOT/bin/gap.sh в один из стандартных каталогов для исполнимых файлов в Вашей системе (например, в каталог /usr/local/bin). Вы можете отредактировать некоторые опции, заданные в этом файле, и для удобства обращения к нему переименовать скопированный файл в gap.

Некоторые из пакетов содержат программный код, который также должен быть откомпилирован для того, чтобы получить полную функциональность пакета. Скрипт InstPackages.sh выполняет необходимые операции для пакетов, распространяемых в настоящее время, при условии установки в системе необходимых библиотек, заголовков и утилит. Вы можете попробовать запустить этот скрипт или же выполнить его построчно с помощью копирования и вставки. Если некоторые пакеты не смогут установиться, обращайтесь к файлам README соответствующих пакетов.

Опционально: GAP запускается намного быстрее с использованием так называемого рабочего пространства. Рабочее пространство может быть сгенерировано и использовано в соответствии со скриптом CreateWorkspace.sh.

После выполнения вышеперечисленных шагов Вы можете продолжать шаги, не зависящие от операционной системы, в частности, тестирование и сообщение об инсталляции в GAP Group (см. раздел 3.5).

Сетевая инсталляция
Вы можете поместить систему GAP на сервере и сделать ее доступной для подключенных к нему компьютеров с различной архитектурой. Для этого нужно будет повторить процедуру компиляции для каждой из архитектур (при каждой новой компиляции предварительно нужно будет ввести команду make clean для удаления результатов предыдущего вызова ./configure). Исполнимые файлы будут создаваться в различных подкаталогах, и Вам останется только правильно указать путь к ним в скриптах для соответствующей архитектуры.

Заметки по инсталляции для OS X
Несмотря на то, что Вы можете использовать GAP для Mac OS в классическом режиме, настоятельно рекомендуется компилировать и запускать Unix-версию: она не только будет более производительной, но и даст Вам возможность использовать все пакеты.

Если Вы еще не компилировали программы в OS X, то, возможно, понадобится установка компилятора. Советы по его установке содержатся на странице http://www.math.colostate.edu/~hulpke/osx/gaposx.html.

Для компиляции и запуска GAP нужно будет запускать Терминал, в окне которого Вы сможете вводить команды Unix. Терминал может быть найдет в подменю "Утилиты" меню "Приложения". GAP также будет запускаться в окне терминала.

Внимание: для инсталляции Unix-версии нужно компилировать и использовать Unix-версию unzoo (если Вы будете использовать unzoo для Macintosh, текстовые файлы будут извлечены в формате MacOS, что приведет к проблемам с компиляцией).

Перейдите (с помощью команды cd в окне терминала) в каталог, в котором Вы хотите инсталлировать GAP, и скопируйте в него архивы и исходный код unzoo. Затем откомпилируйте unzoo и распакуйте архив с помощью команды
gcc -o unzoo -DSYS_IS_UNIX -O unzoo.c
./unzoo -x gap4r4p3.zoo
После этого продолжайте инсталляцию в соответствии с приведенной выше инструкцией для Unix.

3.4.2 Инсталляция GAP для Windows
Для инсталляции GAP для Windows необходимо выполнить описанные ниже действия (предполагается, что Вы имеете архивы gap4r4p3 и packages-..., и знаете, как их распаковать в соответствии с разделом 3.3).

Распакуйте архив gap4r4p3 в корневой каталог диска C:\. В результате этого создастся подкаталог C:\gap4r4.

Опционально: Если Вы загрузили дополнительный архив xtom4r4p3, распакуйте его в том же каталоге, в котором Вы распаковывали архив gap4r4p3.

Распакуйте пакеты из архива packages-... внутри ( ! ) каталога C:\GAP4r4\pkg\. Заметьте, что некоторые пакеты не будут работать в Windows, или будут работать с ограниченной функциональностью.

Теперь Вы можете запустить GAP с помощью файла C:\gap4r4\bin\gap.bat (см. скриншот 1 на CHIP-CD). Для удобства запуска можно создать ярлыки, указывающие на этот файл, например, в главном меню и на рабочем столе.

Опционально: Более удобный интерфейс можно получить, используя оболочку rxvt. Для этого нужно запускать GAP с помощью файла C:\gap4r4\bin\gaprxvt.bat (см. скриншот 2 на CHIP-CD). Следует учесть, однако, что GAP Group не предоставляет поддержку для этой оболочки.

После выполнения вышеперечисленных шагов Вы можете продолжать шаги, не зависящие от операционной системы, в частности, тестирование и сообщение об инсталляции в GAP Group (см. раздел 3.5).

Инсталляция в другом каталоге
GAP может быть инсталлирован в другом каталоге, отличном от C:\GAP4r4\pkg\. При этом нужно будет указать правильные пути в файлах gap4r4\bin\gap.bat и gap4r4\bin\gaprxvt.bat.

Увеличение доступной оперативной памяти
По умолчанию, используемая библиотека cygwin не может использовать больше чем 128 Мб оперативной памятию. Для увеличения этогй границы нужно внести изменения в регистр Windows.

*ВНИМАНИЕ:* Редактирование реестра Windows должно выполняться с особой осторожностью. Его не рекомендуется делать, если у Вас нет соответствующего опыта. Дополнительные советы могут быть найдены на странице http://www.cygwin.com/cygwin-ug-net/setup-maxmem.html.

Перед внесением изменений в регистр, нужно запустить GAP хотя бы один раз для создания в регистре соответствующих ключей.

После этого запустите командный файл usemem.bat из подкаталога bin, который присвоит ключу

/HKEY_LOCAL_MACHINE/Software/Cygnus Solutions/Cygwin/heap_chunk_in_mb

значение 1024.

Если Вы предпочитаете изменять регистр вручную, запустите regedit и найдите указанный выше ключ Cygwin. Затем добавьте новый параметр heap_chunk_in_mb и установите его значение 1024.

3.4.3. Инсталляция GAP для Macintosh (MacOS)

Для инсталляции GAP для Macintosh необходимо выполнить описанные ниже действия (В случае Mac OS X рекомендуется выполнить UNIX-инсталляцию для повышения производительности и доступа к полной функциональности всех пакетов). Предполагается, что Вы имеете архивы gap4r4p3.zoo и packages-....zoo, и знаете, как их распаковать в соответствии с разделом 3.3, а также загрузили утилиту unzoo.

Распакуйте архив unzoo4r4-...sit (используя, например, Stuffit Expander). В результате этого Вы должны получить приложение unzoo 4r4 ....

Переместите архив gap4r4p3.zoo и unzoo 4r4 в каталог, в котором Вы хотите установить GAP. Распакуйте архив, поместив gap4r4p3.zoo с помощью мыши на значок unzoo. В результате этого должен создаться каталог gap4r4. Переместите приложение GAP 4 ... в этот каталог.

Распакуйте пакеты из архива packages-... внутри ( ! ) подкаталога pkg каталога gap4r4. Заметьте, что некоторые пакеты не будут работать в MacOS, или будут работать с ограниченной функциональностью.

После выполнения вышеперечисленных шагов Вы можете продолжать шаги, не зависящие от операционной системы, в частности, тестирование и сообщение об инсталляции в GAP Group (см. раздел 3.5).

3.5. Тестирование
Для быстрой проверки работоспособности системы Вы можете запустить ее и ввести несколько команд, например:

gap> 3^80;
147808829414345923316083210206383297601
gap> G:=SymmetricGroup(10);
Sym( [ 1 .. 10 ] )
gap> Size(G);
3628800

Затем Вы можете запустить более обширный тест (занимает несколько минут на современных компьютерах):
gap> tst := Filename( DirectoriesLibrary("tst"), "testall.g" );;
gap> Read(tst);
You should start GAP4 using: gap -N -A -x 80 -r -m 100m'. The more
GAP4stones you get, the faster your system is. The runtime of
the following tests (in general) increases. You should expect
about 100000 GAP4stones on a Pentium 3, 1GHz.
The next' time is an approximation of the running time for the next test.

Architecture: i686-pc-linux-gnu-gcc

test file GAP4stones time(msec)
-------------------------------------------
testing: /cygdrive/d/GAP4R4/tst/zlattice.tst

zlattice.tst 0 219

[ ... много строк вывода ... ]

grppcnrm.tst 40534 37795 (next ~ 39 sec)
testing: /cygdrive/d/GAP4R4/tst/grpmat.tst
grpmat.tst 40783 38251
-------------------------------------------
total 37223 229058
gap> quit;
3.6. Нужна помощь ?

Если инсталляция не удалась, рекомендуем обратиться к разделу 73 документации по системе GAP (cм. http://www.gap-system.org/Manuals//doc/htm/ref/CHAP073.htm), который содержит дополнительные замечания и рекомендации.

Если решить проблему самостоятельно не удается, Вы можете сообщить о ней (на английском языке) в службу технической поддержки пользователей GAP по адресу support (at) gap-system.org или (на украинском, русском или английском языке) в Украинскую группу пользователей GAP по адресу a_konovalov (at) hotmail.com.

3.7. Обратная связь

После успешной инсталляции системы сообщите, пожалуйста, об этом в GAP Group, заполнив форму по адресу http://www.gap-system.org/Download/feedback.html, или направив краткое письмо на английском языке по адресу support (at) gap-system.org.

Если Вы воспользовались CHIP-CD 9/2004 для установки системы GAP, мы также будем благодарны за краткое сообщение об этом по адресу a_konovalov (at) hotmail.com.

Если Вы использовали систему GAP в Вашем исследовании, просим Вас включить ее в библиографию и ссылаться на нее так же, как Вы ссылаетесь на книги и статьи (рекомендуемые форматы приведены на странице http://www.gap-system.org/Contacts/cite.html).

4. Первые шаги

Запустив систему, Вы увидите на экране нечто подобное:
            #########           ######         ###########           ###
############# ###### ############ ####
############## ######## ############# #####
############### ######## ##### ###### #####
###### # ######### ##### ##### ######
###### ########## ##### ##### #######
##### ##### #### ##### ###### ########
#### ##### ##### ############# ### ####
##### ####### #### #### ########### #### ####
##### ####### ##### ##### ###### #### ####
##### ####### ##### ##### ##### #############
##### ##### ################ ##### #############
###### ##### ################ ##### #############
################ ################## ##### ####
############### ##### ##### ##### ####
############# ##### ##### ##### ####
######### ##### ##### ##### ####


Information at: http://www.gap-system.org
Try '?help' for help. See also '?copyright' and '?authors'

Loading the library. Please be patient, this may take a while.

GAP4, Version: 4.4.3 of 3-May-2004, i686-pc-cygwin-gcc
Components: small 2.0, small2 2.0, small3 2.0, small4 1.0, id2 3.0, id3
2.1, id4 1.0, trans 1.0, prim 2.1 loaded.
Packages: AClib 1.1, Polycyclic 1.1, Alnuth 1.0, CrystCat 1.1.2,
Cryst 4.1.2, AutPGrp 1.2, CRISP 1.2, CTblLib 1.1.3, TomLib 1.1.1,
FactInt 1.3.1, GAPDoc 0.9999, LAGUNA 3.3.beta, Polenta 1.0,
ResClasses 1.1.1, Sophus 1.0 loaded.
gap>

Под эмблемой GAP4 Вы видите приглашение системы, после которого будут отображаться вводимые с клавиатуры символы:

gap>

Для выхода из системы применяется команда quit; (заметим, что любая команда завершается точкой с запятой, после чего нужно нажать <Enter>).

Если Вы впервые работаете с системой, Вы можете попробовать начать читать и вводить (в т.ч. через копирование и вставку) примеры из первых глав Введения в GAP (HTML, PDF). В частности, там рассказывается, как пользоваться обширнейшей документацией по системе.

Вы можете попробовать, например, использовать GAP как простейший калькулятор:

gap> (9 - 7) * (5 + 6);
22
gap> 2^64;
18446744073709551616
gap> 3^132;
955004950796825236893190701774414011919935138974343129836853841

Определить последние пять из 6320430 цифр 40-го числа Мерсенна 220996011-1, найденного в ноябре 2003 г. в ходе проекта GIMPS (Great Internet Mersenne Prime Search, см. http://www.mersenne.org), и являющегося на сегодня самым большим из известных науке простых чисел:

gap> a:=2^20996011-1;
<<an integer too large to be printed>>
gap> a mod 100000;
82047

Вычислить наибольший общий делитель двух целых чисел и найти его линейное представление:

gap> Gcd(100, 48);
4
gap> Gcdex(100, 48);
rec( gcd := 4, coeff1 := 1, coeff2 := -2, coeff3 := -12, coeff4 := 25 )
gap> 100*1+48*-2;
4
gap> 100*-12+48*25;
0

Разложить целое число на множители с помощью функции FactorsInt:

gap> FactorsInt(2^64-1);
[3, 5, 17, 257, 641, 65537, 6700417]
gap> FactorsInt(2^128-1);
[3, 5, 17, 257, 641, 65537, 274177, 6700417, 67280421310721]
gap> FactorsInt(2^200-1);
[3, 5, 5, 5, 11, 17, 31, 41, 101, 251, 401, 601, 1801, 4051, 8101, 61681, 268501, 340801, 2787601, 3173389601]

GAP предоставляет разнообразные возможности для работы с множествами, списками, матрицами. Например, список квадратов натуральных чисел от 1 до 10 можно получить так:

gap> List([1..10], x -> x^2);
[ 1, 4, 9, 16, 25, 36, 49, 64, 81, 100 ]

А список натуральных чисел, не превосходящих 100 и являющихся произведением трех простых чисел (не обязательно различных), можно получить следующим образом:

gap> Filtered([1..100], x -> Length(Factors(x))=3 );
[ 8, 12, 18, 20, 27, 28, 30, 42, 44, 45, 50, 52, 63, 66, 68, 70, 75, 76, 78,
92, 98, 99 ]

Теперь зададим матрицу следующим образом:

gap> A:=[[1,2,3,4],[4,2,1,5],[-1,10,0,0],[2,-4,7,0]];
[ [ 1, 2, 3, 4 ], [ 4, 2, 1, 5 ], [ -1, 10, 0, 0 ], [ 2, -4, 7, 0 ] ]

Для того, чтобы вывести ее на экран в удобочитаемой форме, используется команда Display:

gap> Display(A);
[ [ 1, 2, 3, 4 ],
[ 4, 2, 1, 5 ],
[ -1, 10, 0, 0 ],
[ 2, -4, 7, 0 ] ]

Вычислим определитель этой матрицы:

gap> DeterminantMat(A);
-932

Таким образом, данная матрица является невырожденной, и система линейных уравнений с данной матрицей должна иметь единственное решение. Его можно найти с помощью функции SolutionMat( mat, vec ), которая возвращает вектор-строку x такую, что x * mat = vec (обратите внимание, что умножается вектор-строка на матрицу, а не матрица на вектор-столбец!). Пусть vec=[1,-1,0,3], тогда

gap> v:=SolutionMat(A,[1,-1,0,3]);
[ 519/932, 36/233, -323/932, -243/932 ]

Проверим, что действительно было найдено решение системы:

gap> v*A;
[ 1, -1, 0, 3 ]

В заключение продемонстрируем несколько примеров работы с подстановками и их группами.

Можно задать подстановки и вычислить их произведение:

gap> (1,2,3);
(1,2,3)
gap> (1,2,3) * (1,2);
(2,3)

Найти подстановку, обратную к данной:

gap> (1,2,3)^-1;
(1,3,2)

Найти образ точки под действием данной подстановки:

gap> 2^(1,2,3);
3

Вычислить подстановку, сопряженную с данной с помощью другой подстановки:

gap> (1,2,3)^(1,2);
(1,3,2)

Теперь зададим группу, порожденную двумя подстановками:

gap> s8 := Group( (1,2), (1,2,3,4,5,6,7,8) );
Group( [ (1,2), (1,2,3,4,5,6,7,8) ] )

Как известно, это есть не что иное, как симметрическая группа подстановок 8-й степени. Теперь мы можем вычислить ее коммутант:

gap> a8 := DerivedSubgroup( s8 );
Group([(1,2,3),(2,3,4),(2,4)(3,5),(2,6,4),(2,4)(5,7),(2,8,6,4)(3,5)])

Исследуем свойства коммутанта - найдем его порядок, проверим его коммутативность:

gap> Size( a8 ); IsAbelian( a8 );
20160
false

Более нетривиальные примеры применения GAP Вы сможете найти в документации к системе, содержащейся в подкаталоге gap4r4\doc или на сайте системы GAP (http://www.gap-system.org/).

Материалы о системе компьютерной алгебры GAP на русском языке Вы можете найти, посетив сайт Украинской группы пользователей GAP (http://ukrgap.exponenta.ru/) и подписавшись на рассылку его новостей (http://subscribe.ru/catalog/science.exact.gap/). В частности, в разделе "Изучаем алгебру с GAP" этого сайта содержится серия примеров к курсу алгебры и теории чисел, а в разделе "Подробнее..." - методическое пособие по системе GAP.

Рекомендуем также подписаться на GAP Forum (http://mail.gap-system.org/mailman/listinfo/forum) - англоязычный форум для обсуждения связанных с GAP вопросов, сообщений об обновлениях, новых версиях, пакетах, конференциях и др. связанных с GAP событиях.

Желаем Вам приятной работы с системой GAP!


С уважением,
Александр Борисович Коновалов
председатель Украинской группы пользователей GAP (http://ukrgap.exponenta.ru/)
доцент кафедры алгебры и геометрии Запорожского государственного университета
E-mail: a_konovalov (at) hotmail.com


http://subscribe.ru/
http://subscribe.ru/feedback/
Адрес подписки
Отписаться

В избранное